add party update api

This commit is contained in:
behruz-dev
2025-08-23 10:26:43 +05:00
parent 3a095d0f64
commit 3211ea195b
4 changed files with 45 additions and 2 deletions

1
.gitignore vendored
View File

@@ -13,6 +13,7 @@ media
resources/media/ resources/media/
resources/static/ resources/static/
.log .log
django.log.*
# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/ # If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
# in your Git repository. Update and uncomment the following line accordingly. # in your Git repository. Update and uncomment the following line accordingly.
# <django-project-name>/staticfiles/ # <django-project-name>/staticfiles/

View File

@@ -136,4 +136,25 @@ class DeletedPartyListSerializer(serializers.ModelSerializer):
return { return {
'id': obj.party.mediator.id, 'id': obj.party.mediator.id,
'name': obj.party.mediator.full_name 'name': obj.party.mediator.full_name
} }
class PartyUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Party
fields = [
'mediator', 'delivery_date', 'payment_date',
]
extra_kwargs = {
'mediator': {'required': False},
'delivery_date': {'required': False},
'payment_date': {'required':False}
}
def update(self, instance, validated_data):
with transaction.atomic():
instance.mediator = validated_data.get('mediator', instance.mediator)
instance.delivery_date = validated_data.get('delivery_date', instance.delivery_date)
instance.payment_date = validated_data.get('payment_date', instance.payment_date)
instance.save()
return instance

View File

@@ -32,6 +32,7 @@ urlpatterns = [
path('<uuid:id>/', party_views.PartyDetailApiView.as_view()), path('<uuid:id>/', party_views.PartyDetailApiView.as_view()),
path('<uuid:party_id>/delete/', party_views.PartyDeleteApiView.as_view()), path('<uuid:party_id>/delete/', party_views.PartyDeleteApiView.as_view()),
path('deleted_pary/list/', party_views.DeletedPartyListApiView.as_view()), path('deleted_pary/list/', party_views.DeletedPartyListApiView.as_view()),
path('<uuid:id>/update/', party_views.PartyUpdateApiView.as_view()),
] ]
)), )),
] ]

View File

@@ -1,3 +1,5 @@
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
@@ -93,4 +95,22 @@ class DeletedPartyListApiView(generics.GenericAPIView):
if page is not None: if page is not None:
serializer = self.serializer_class(page, many=True) serializer = self.serializer_class(page, many=True)
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)
return Response(serializer.data, status=200) return Response(serializer.data, status=200)
class PartyUpdateApiView(generics.GenericAPIView):
serializer_class = serializers.PartyUpdateSerializer
queryset = Party.objects.all()
pagination_class = [HasRolePermission]
required_permissions = ['party']
pagination_class = None
def patch(self, request, id):
party = get_object_or_404(Party, id=id)
serializer = self.serializer_class(data=request.data, instance=party, partial=True)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response({
'success': True, 'message': 'update',
}, status=200)
return Response({'success': False, 'error': serializer.errors}, status=400)