From b0bb20691f34748b2e15201d27b4b613cf48cdfd Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Fri, 22 Aug 2025 11:53:06 +0500 Subject: [PATCH] add party detail api --- core/apps/orders/serializers/party.py | 14 +++++++++++++- core/apps/orders/urls.py | 1 + core/apps/orders/views/party.py | 16 +++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/core/apps/orders/serializers/party.py b/core/apps/orders/serializers/party.py index 48c6294..90be94b 100644 --- a/core/apps/orders/serializers/party.py +++ b/core/apps/orders/serializers/party.py @@ -76,7 +76,7 @@ class PartyAmountSerializer(serializers.ModelSerializer): ] -class PartyListSerializer(serializers.ModelSerializer): +class PartyDetailSerializer(serializers.ModelSerializer): orders = OrderListSerializer(many=True) party_amount = PartyAmountSerializer() @@ -86,4 +86,16 @@ class PartyListSerializer(serializers.ModelSerializer): 'id', 'number', 'delivery_date', 'closed_date', 'order_date', 'payment_date', 'status', 'payment_status', 'process', 'confirmation', 'comment', 'audit', 'audit_comment', 'orders', 'party_amount' + ] + + +class PartyListSerializer(serializers.ModelSerializer): + party_amount = PartyAmountSerializer() + + class Meta: + model = Party + fields = [ + 'id','number', 'delivery_date', 'closed_date', 'order_date', 'payment_date', 'status', + 'payment_status', 'process', 'confirmation', 'comment', 'audit', 'audit_comment', + 'party_amount' ] \ No newline at end of file diff --git a/core/apps/orders/urls.py b/core/apps/orders/urls.py index 1d20cad..a3f812d 100644 --- a/core/apps/orders/urls.py +++ b/core/apps/orders/urls.py @@ -29,6 +29,7 @@ urlpatterns = [ [ path('create/', party_views.PartyCreateApiView.as_view()), path('list/', party_views.PartyListApiView.as_view()), + path('/', party_views.PartyDetailApiView.as_view()), ] )), ] \ No newline at end of file diff --git a/core/apps/orders/views/party.py b/core/apps/orders/views/party.py index e2b7a8e..e612fcc 100644 --- a/core/apps/orders/views/party.py +++ b/core/apps/orders/views/party.py @@ -31,7 +31,7 @@ class PartyCreateApiView(generics.GenericAPIView): class PartyListApiView(generics.GenericAPIView): serializer_class = serializers.PartyListSerializer - queryset = Party.objects.select_related('party_amount').prefetch_related('orders') + queryset = Party.objects.select_related('party_amount') permission_classes = [HasRolePermission] required_permissions = [] filter_backends = [DjangoFilterBackend] @@ -44,4 +44,18 @@ class PartyListApiView(generics.GenericAPIView): serializer = self.serializer_class(page, many=True) return self.get_paginated_response(serializer.data) serializer = self.serializer_class(parties, many=True) + return Response(serializer.data, status=200) + + +class PartyDetailApiView(generics.GenericAPIView): + permission_classes = [HasRolePermission] + required_permissions = [] + serializer_class = serializers.PartyDetailSerializer + queryset = Party.objects.select_related('party_amount').prefetch_related('orders') + + def get(self, request, id): + party = Party.objects.select_related('party_amount').prefetch_related('orders').filter(id=id).first() + if not party: + return Response({'success': False, 'message': 'party not found'}, status=404) + serializer = self.serializer_class(party) return Response(serializer.data, status=200) \ No newline at end of file