first commit
This commit is contained in:
commit
3e4574dcdd
163 files changed
+3559
No files matched your search
@@ -0,0 +1,159 @@
|
||||
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)
|
||||
Reference in new issue
Block a user