+ Auto update status NEW->PAYMENT if payment info is present

* Cleanup
This commit is contained in:
Phil Zhitnikov 2023-07-10 21:29:20 +04:00
parent 568711fe63
commit fb5a80f0b4
2 changed files with 16 additions and 7 deletions

View File

@ -145,11 +145,19 @@ class ChecklistSerializer(serializers.ModelSerializer):
self._create_main_images(instance, images.get('main_images'))
self._create_payment_proofs(instance, images.get('payment_proof'))
# Perform update
instance: Checklist = super().update(instance, validated_data)
# Invalidate prefetched images
delattr(instance, '_images')
if instance.status == Checklist.Status.NEW:
has_payment_info = instance.payment_proof.exists() and instance.payment_method is not None
if has_payment_info:
instance.status = Checklist.Status.PAYMENT
instance.save()
return instance
@staticmethod

View File

@ -64,7 +64,11 @@ class LoginAPI(generics.GenericAPIView):
return Response(UserSerializer(user).data)
class ChecklistAPI(mixins.ListModelMixin, mixins.CreateModelMixin, mixins.RetrieveModelMixin, DisablePermissionsMixin):
class ChecklistAPI(mixins.ListModelMixin,
mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
DisablePermissionsMixin):
serializer_class = ChecklistSerializer
lookup_field = 'id'
filterset_fields = ['status', ]
@ -115,14 +119,11 @@ class ChecklistAPI(mixins.ListModelMixin, mixins.CreateModelMixin, mixins.Retrie
return self.list(request, *args, **kwargs)
def patch(self, request, *args, **kwargs):
data = json.loads(request.body)
instance = get_object_or_404(self.get_queryset(), id=self.kwargs['id'])
serializer = self.get_serializer(instance, data=data, partial=True)
serializer.is_valid(raise_exception=True)
def perform_update(self, serializer):
serializer.save()
return Response(serializer.data)
def patch(self, request, *args, **kwargs):
return self.partial_update(request, *args, **kwargs)
class YuanRateAPI(generics.GenericAPIView):