change offer apis

This commit is contained in:
behruz-dev
2025-08-21 09:48:13 +05:00
parent 1a8876d90e
commit 256a2c19de
6 changed files with 2204 additions and 4 deletions

View File

@@ -0,0 +1,11 @@
import django_filters
from core.apps.orders.models import Order, Offer
class OfferFilter(django_filters.FilterSet):
class Meta:
model = Offer
fields = [
'order__wherehouse', 'order__project', 'order__project_folder', 'order__date'
]

View File

@@ -86,4 +86,12 @@ class OfferUpdateSerializer(serializers.ModelSerializer):
instance.qqs = validated_data.get('qqs', instance.qqs) instance.qqs = validated_data.get('qqs', instance.qqs)
instance.price_type = validated_data.get('price_type', instance.price_type) instance.price_type = validated_data.get('price_type', instance.price_type)
instance.save() instance.save()
return instance return instance
class OffersSerializer(serializers.ModelSerializer):
class Meta:
model = Offer
fields = [
'id', 'number', 'price', 'price_type', 'phone', 'comment', 'qqs',
]

View File

@@ -13,6 +13,7 @@ urlpatterns = [
path('<uuid:order_id>/cancel/', order_views.OrderChangeStatusCancelledApiView.as_view()), path('<uuid:order_id>/cancel/', order_views.OrderChangeStatusCancelledApiView.as_view()),
path("<uuid:order_id>/accept/", order_views.OrderChangeStatusAcceptedApiView.as_view()), path("<uuid:order_id>/accept/", order_views.OrderChangeStatusAcceptedApiView.as_view()),
path("accepted/list/", order_views.OrderAcceptApiView.as_view()), path("accepted/list/", order_views.OrderAcceptApiView.as_view()),
path('<uuid:order_id>/offers/', order_views.OrderOfferListApiView.as_view()),
] ]
)), )),
path('offer/', include( path('offer/', include(

View File

@@ -3,10 +3,13 @@ from django.shortcuts import get_object_or_404
from rest_framework import generics, views from rest_framework import generics, views
from rest_framework.response import Response from rest_framework.response import Response
from django_filters.rest_framework.backends import DjangoFilterBackend
from core.apps.shared.paginations.custom import PageNumberPagination from core.apps.shared.paginations.custom import PageNumberPagination
from core.apps.accounts.permissions.permissions import HasRolePermission from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.orders.serializers import offer as serializers from core.apps.orders.serializers import offer as serializers
from core.apps.orders.models import Offer from core.apps.orders.models import Offer
from core.apps.orders.filters.offer import OfferFilter
class OffersCreateApiView(generics.GenericAPIView): class OffersCreateApiView(generics.GenericAPIView):
@@ -33,9 +36,11 @@ class OfferListApiView(generics.GenericAPIView):
queryset = Offer.objects.select_related('order') queryset = Offer.objects.select_related('order')
required_permissions = ['offer'] required_permissions = ['offer']
serializer_class = serializers.OfferListSerializer serializer_class = serializers.OfferListSerializer
filter_backends = [DjangoFilterBackend]
filterset_class = OfferFilter
def get(self, request): def get(self, request):
offers = Offer.objects.all() offers = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(offers) page = self.paginate_queryset(offers)
if page is not None: if page is not None:
serializer = self.serializer_class(page, many=True) serializer = self.serializer_class(page, many=True)

View File

@@ -6,8 +6,9 @@ from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend from django_filters.rest_framework import DjangoFilterBackend
from core.apps.orders.serializers import order as serializers from core.apps.orders.serializers import order as serializers
from core.apps.orders.models import Order from core.apps.orders.models import Order, Offer
from core.apps.orders.filters.order import OrderFilter from core.apps.orders.filters.order import OrderFilter
from core.apps.orders.serializers.offer import OffersSerializer
from core.apps.accounts.permissions.permissions import HasRolePermission from core.apps.accounts.permissions.permissions import HasRolePermission
from core.apps.shared.paginations.custom import CustomPageNumberPagination from core.apps.shared.paginations.custom import CustomPageNumberPagination
@@ -93,4 +94,17 @@ class OrderAcceptApiView(generics.ListAPIView):
queryset = Order.objects.filter(status='ACCEPTED') queryset = Order.objects.filter(status='ACCEPTED')
permission_classes = [HasRolePermission] permission_classes = [HasRolePermission]
required_permissions = ['order'] required_permissions = ['order']
pagination_class = CustomPageNumberPagination pagination_class = CustomPageNumberPagination
class OrderOfferListApiView(generics.GenericAPIView):
serializer_class = OffersSerializer
permission_classes = [HasRolePermission]
required_permissions = ['order']
queryset = Offer.objects.select_related('order')
pagination_class = None
def get(self, request, order_id):
offers = self.get_queryset().select_related("order").filter(order_id=order_id)
serializer = self.serializer_class(offers, many=True)
return Response(serializer.data, status=200)

File diff suppressed because it is too large Load Diff