112 lines
3.8 KiB
Python
112 lines
3.8 KiB
Python
from rest_framework import serializers
|
|
from apps.project.models import Project as ProjectModel, ProjectImage as ProjectImageModel
|
|
from apps.emtiyazat.models import Emtiyazat as EmtiyazatModel
|
|
from apps.cuser.models import CUser as CUserModel
|
|
from apps.op_panel.selector import get_project_by_id
|
|
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from utils.tools.inline_serializer import inline_serializer
|
|
from apps.emtiyazat.services import add_project_emtiyaz
|
|
from apps.op_panel.services import update_mojri_status
|
|
from rest_framework import status
|
|
|
|
class UpdateMojriStatusApiview(APIView):
|
|
permission_classes = (IsAuthenticated,)
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
mojri_status = serializers.CharField()
|
|
|
|
def patch(self, request, id: int):
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
mojri_status = serializer.validated_data['mojri_status']
|
|
|
|
update_mojri_status(id, mojri_status)
|
|
|
|
return Response({'id': id}, status=status.HTTP_200_OK)
|
|
|
|
class RetrieveProjectApiview(APIView):
|
|
permission_classes = (IsAuthenticated, )
|
|
|
|
def get(self, request, id: int):
|
|
|
|
class OutputSerializer(serializers.ModelSerializer):
|
|
|
|
cuser = inline_serializer(many=False, fields={
|
|
'id': serializers.IntegerField(),
|
|
'name_family': serializers.CharField(),
|
|
'mobile': serializers.IntegerField()
|
|
})
|
|
|
|
project_image = inline_serializer(many=True, fields={
|
|
'id': serializers.IntegerField(),
|
|
'image': serializers.ImageField(),
|
|
})
|
|
|
|
class Meta:
|
|
model = ProjectModel
|
|
fields = '__all__'
|
|
|
|
project = get_project_by_id(id)
|
|
|
|
output = OutputSerializer(project)
|
|
|
|
return Response(output.data, status=status.HTTP_200_OK)
|
|
|
|
|
|
class RetrieveMojri(APIView):
|
|
permission_classes = (IsAuthenticated,)
|
|
|
|
def get(self, request, id: int):
|
|
|
|
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 = CUserModel
|
|
fields = ('id', 'mojri_status', 'name_family', 'mobile', 'uuid', 'user_profile')
|
|
|
|
mojri = CUserModel.objects.get(id=id)
|
|
|
|
output = OutputSerializer(mojri)
|
|
|
|
return Response(output.data, status=status.HTTP_200_OK)
|
|
|
|
|
|
class AddEmtiyazProjectApiview(APIView):
|
|
permission_classes = (IsAuthenticated,)
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
credit = serializers.IntegerField(required=True)
|
|
|
|
def post(self, request, id: int):
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
op_user = request.user
|
|
|
|
emtiyaz = add_project_emtiyaz(**serializer.validated_data, project_id=id, op_user=op_user)
|
|
|
|
return Response({'success': emtiyaz.credit}, status=status.HTTP_201_CREATED)
|
|
|