Files
2026-06-15 10:57:28 +03:30

160 lines
5.5 KiB
Python

from django.shortcuts import render
from rest_framework.views import APIView
from apps.appsetting.models import City as CityModel
from rest_framework import serializers
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from apps.project.models import Project as ProjectModel, ProjectImage as ProjectImageModel
from apps.appsetting.models import City as CityModel
from apps.cuser.models import CUser as CUserModel
from apps.project.services import create_project, update_seller_project, update_seller_va_send_message
from apps.project.selector import list_project, get_project, op_list_project
from apps.projectcode.selector import project_code_validation, update_project_code_used
from apps.appsetting.selector import get_city_list
from rest_framework import status
# Create your views here.
class CityListApiView(APIView):
permission_classes = (IsAuthenticated,)
class OutputSerializer(serializers.ModelSerializer):
class Meta:
model = CityModel
fields = '__all__'
def get(self, request):
cities = get_city_list()
output = self.OutputSerializer(cities, many=True)
return Response(data=output.data)
# create project with project images
class CreateProjectApiview(APIView):
permission_classes = (IsAuthenticated,)
class InputSerializer(serializers.Serializer):
city = serializers.IntegerField(required=True)
address = serializers.CharField(max_length=200, required=True)
factor_price = serializers.IntegerField(required=True)
zirbana = serializers.IntegerField(required=True)
tabaghat = serializers.IntegerField(required=True)
vahed = serializers.IntegerField(required=True)
project_images = serializers.ListField(child=serializers.ImageField(), required=True)
def post(self, request):
serializer = self.InputSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
project_obj = create_project(cuser=request.user, **serializer.validated_data)
return Response({'project_id': f'{str(project_obj.id)}'}, status=status.HTTP_201_CREATED)
class ListProjectApiview(APIView):
permission_classes = (IsAuthenticated,)
class OutputSerializer(serializers.ModelSerializer):
class Meta:
model = ProjectModel
fields = '__all__'
def get(self, request):
projects = list_project(user=request.user)
output = self.OutputSerializer(projects, many=True)
return Response(data=output.data, status=status.HTTP_200_OK)
class RetrieveProjectApiview(APIView):
permission_classes = (IsAuthenticated,)
class OutputSerializer(serializers.ModelSerializer):
class ProjectImageSerializer(serializers.ModelSerializer):
class Meta:
model = ProjectImageModel
fields = '__all__'
project_image = ProjectImageSerializer(many=True)
class Meta:
model = ProjectModel
fields = '__all__'
def get(self, request, project_id):
project = get_project(project_id=project_id)
output = self.OutputSerializer(project)
return Response(data=output.data, status=status.HTTP_200_OK)
class UpdateSellerProjectApiview(APIView):
permission_classes = (IsAuthenticated,)
class InputSerializer(serializers.Serializer):
seller_name = serializers.CharField(max_length=50, required=True)
seller_mobile = serializers.IntegerField(required=True)
seller_address = serializers.CharField(max_length=500, required=True)
projectcode = serializers.CharField(max_length=20, required=True)
def patch(self, request, project_id):
serializer = self.InputSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
seller_name = serializer.validated_data.get('seller_name')
seller_mobile = serializer.validated_data.get('seller_mobile')
seller_address = serializer.validated_data.get('seller_address')
projectcode = serializer.validated_data.get('projectcode')
user = request.user
projectcode_obj = update_project_code_used(code=projectcode, user=user)
update_seller_va_send_message(
project_id=project_id, seller_name=seller_name,
seller_mobile=seller_mobile, seller_address=seller_address,
projectcode=projectcode_obj
)
return Response({'message': 'project updated successfully'}, status=status.HTTP_200_OK)
class OpListProjectApiview(APIView):
permission_classes = (IsAuthenticated,)
class OutputSerializer(serializers.ModelSerializer):
class CitySerializer(serializers.ModelSerializer):
class OstanSerializer(serializers.ModelSerializer):
class Meta:
model = CityModel
fields = '__all__'
ostan = OstanSerializer()
class Meta:
model = CityModel
fields = '__all__'
class CUserSerializer(serializers.ModelSerializer):
class Meta:
model = CUserModel
fields = ('name_family', 'mobile',)
city = CitySerializer()
cuser = CUserSerializer()
class Meta:
model = ProjectModel
fields = '__all__'
def get(self, request):
project_status = request.query_params.get('status')
projects = op_list_project(status=project_status)
output = self.OutputSerializer(projects, many=True)
return Response(data=output.data, status=status.HTTP_200_OK)