add new apis

This commit is contained in:
behruz-dev
2025-08-11 12:14:44 +05:00
parent c1405bbc8a
commit 66aab361ef
12 changed files with 591 additions and 6 deletions

View File

@@ -0,0 +1,47 @@
from django.shortcuts import get_object_or_404
from rest_framework import generics, views
from rest_framework.response import Response
from core.apps.projects.serializers import estimate_product as serializers
from core.apps.projects.models.project_estimate import EstimateProduct
from core.apps.accounts.permissions.permissions import HasRolePermission
class EstimateProductCreateApiView(generics.GenericAPIView):
permission_classes = [HasRolePermission]
required_permissions = ['project']
serializer_class = serializers.EstimateProductCreateSerializer
queryset = EstimateProduct.objects.all()
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({"success": True, 'message': 'created'}, status=201)
return Response({'success': False, 'message': serializer.errors}, status=400)
class EstimateProductUpdateApiView(generics.GenericAPIView):
serializer_class = serializers.EstimateProductUpdateSerializer
queryset = EstimateProduct.objects.all()
permission_classes = [HasRolePermission]
required_permissions = ['project']
def patch(self, request, id):
estimate_product = get_object_or_404(EstimateProduct, id=id)
serializer = self.serializer_class(data=request.data, instance=estimate_product, partial=True)
if serializer.is_valid():
serializer.save()
return Response({"success": True, "message": 'updated'}, status=200)
return Response({"success": False, 'message': serializer.errors}, status=400)
class EstimateProductDeleteApiView(views.APIView):
permission_classes = [HasRolePermission]
required_permissions = ['project']
def delete(self, request, id):
estimate_product = get_object_or_404(EstimateProduct, id=id)
estimate_product.delete()
return Response({"success": True}, status=204)

View File

@@ -0,0 +1,47 @@
from django.shortcuts import get_object_or_404
from rest_framework import generics, views
from rest_framework.response import Response
from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.projects.models.project_estimate import EstimateWork
from core.apps.projects.serializers import estimate_work as serializers
class EstimateWorkCreateApiView(generics.GenericAPIView):
serializer_class = serializers.EstimateWorkCreateSerializer
queryset = EstimateWork.objects.all()
permission_classes = [HasRolePermission]
required_permissions = ['project', 'project_folder']
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'success': True, 'message': 'created!'}, status=201)
return Response({'success': False, 'message': serializer.errors}, status=400)
class EstimateWorkUpdateApiView(generics.GenericAPIView):
serializer_class = serializers.EstimateWorkUpdateSerializer
queryset = EstimateWork.objects.all()
permission_classes = [HasRolePermission]
required_permissions = ['project', 'project_folder']
def patch(self, request, id):
estimate_work = get_object_or_404(EstimateWork, id=id)
serializer = self.serializer_class(data=request.data, instance=estimate_work)
if serializer.is_valid():
serializer.save()
return Response({"success": True, "message": "Updated"}, status=200)
return Response({'success': False, 'message': serializer.errors}, status=400)
class EstimateWorkDeleteApiView(views.APIView):
permission_classes = [HasRolePermission]
required_permissions = ['project']
def delete(self, request, id):
work = get_object_or_404(EstimateWork, id=id)
work.delete()
return Response({"success": True}, status=204)

View File

@@ -10,7 +10,7 @@ from core.apps.projects.serializers import project_estimate as serializers
class ProjectEstimateListApiView(generics.ListAPIView):
serializer_class = serializers.ProjectEstimateListSerializer
queryset = ProjectEstimate.objects.all()
queryset = ProjectEstimate.objects.prefetch_related('estimate_works')
permission_classes = [HasRolePermission]
required_permissions = ['project']
@@ -54,4 +54,3 @@ class ProjectEstimateDeleteApiView(generics.GenericAPIView):
estimte = get_object_or_404(ProjectEstimate, id=id)
estimte.delete()
return Response({"success": True, "message": "deleted"}, status=204)