from rest_framework.views import APIView from rest_framework.permissions import IsAuthenticated from django.contrib.auth import get_user_model from apps.cuser.models import CUser as CUserModel from apps.project.models import Project as ProjectModel from rest_framework import serializers from rest_framework.response import Response from rest_framework import status from rest_framework.generics import ListAPIView from utils.standard_pagination import StandardPagination from utils.tools.inline_serializer import inline_serializer from apps.emtiyazat.selector import get_emtiyaz_mojri #get user model CUserModel2 = get_user_model() class MojriInfoApiview(APIView): permission_classes = (IsAuthenticated, ) def get(self, request): user_project_count = ProjectModel.objects.filter(cuser=request.user).count() name_family = request.user.name_family step = request.user.step if request.user.user_profile.ax_mojri: image = request.user.user_profile.ax_mojri.url else: image = '/media/media/app/usericon.jpg' emtiyaz = get_emtiyaz_mojri(cuser=request.user) output = { 'project_count': user_project_count, 'name_family': name_family, 'emtiyaz': emtiyaz, 'step': step, 'image': image } return Response(output, status=status.HTTP_200_OK) class ListMojrian(ListAPIView): class OutputSerializer(serializers.ModelSerializer): user_profile = inline_serializer(many=False, fields={ 'codemeli': serializers.IntegerField(), 'city': inline_serializer(many=False, fields={ 'id': serializers.IntegerField(), 'name': serializers.CharField(), 'ostan': inline_serializer(many=False, fields={ 'id': serializers.IntegerField(), 'name': serializers.CharField(), }) }), 'address': serializers.CharField(), 'codeposti': serializers.IntegerField(), 'ax_mojri': serializers.CharField(), 'ax_meli': serializers.CharField(), 'ax_fani': serializers.CharField(), 'ax_sayer': serializers.CharField(), }) class Meta: model = CUserModel2 fields = ('id', 'name_family', 'mobile', 'uuid', 'user_profile') permission_classes = (IsAuthenticated,) serializer_class = OutputSerializer pagination_class = StandardPagination def get_queryset(self): mojri_status = self.request.query_params.get('status', 'WT') return CUserModel2.objects.filter(type='MO', is_superuser=False, mojri_status=mojri_status)