Files
api-bashgah/apps/op_panel/views.py
T
2026-06-15 10:57:28 +03:30

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)