fix edit distribution exception bug

This commit is contained in:
2025-10-25 15:35:38 +03:30
parent 6a146c5fb4
commit c8eef46b6f
3 changed files with 36 additions and 20 deletions

View File

@@ -40,7 +40,7 @@ class ProviderCompanyViewSet(SoftDeleteMixin, viewsets.ModelViewSet): # noqa
# paginate devices
page = self.paginate_queryset(self.queryset.order_by('-create_date'))
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -60,7 +60,7 @@ class ProviderCompanyViewSet(SoftDeleteMixin, viewsets.ModelViewSet): # noqa
# paginate devices
page = self.paginate_queryset(users)
if page is not None:
if page is not None: # noqa
serializer = UserRelationSerializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -100,7 +100,7 @@ class DeviceViewSet(SoftDeleteMixin, viewsets.ModelViewSet, AdminFilterMixin):
# paginate devices
page = self.paginate_queryset(devices)
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -108,7 +108,7 @@ class DeviceViewSet(SoftDeleteMixin, viewsets.ModelViewSet, AdminFilterMixin):
""" activations of pos by a temporary code """
device = self.queryset.filter(serial=request.data['serial']).first()
if not device or not device.is_activated:
if not device or not device.is_activated: # noqa
code = generate_code()
pos_models.DeviceActivationCode.objects.create(
code=code,
@@ -133,7 +133,7 @@ class DeviceViewSet(SoftDeleteMixin, viewsets.ModelViewSet, AdminFilterMixin):
# paginate devices
page = self.paginate_queryset(organizations)
if page is not None:
if page is not None: # noqa
serializer = OrganizationSerializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -152,7 +152,7 @@ class DeviceViewSet(SoftDeleteMixin, viewsets.ModelViewSet, AdminFilterMixin):
# paginate devices
page = self.paginate_queryset(devices)
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -332,7 +332,7 @@ class StakeHoldersViewSet(SoftDeleteMixin, viewsets.ModelViewSet, DynamicSearchM
# paginate stakeholders
page = self.paginate_queryset(query)
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -355,12 +355,12 @@ class StakeHoldersViewSet(SoftDeleteMixin, viewsets.ModelViewSet, DynamicSearchM
# paginate stakeholders
page = self.paginate_queryset(stakeholders)
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
class StakeHolderShareAmountViewSet(SoftDeleteMixin, viewsets.ModelViewSet, DynamicSearchMixin):
class StakeHolderShareAmountViewSet(viewsets.ModelViewSet, DynamicSearchMixin, SoftDeleteMixin):
queryset = pos_models.StakeHolderShareAmount.objects.select_related('quota_distribution', 'stakeholders')
serializer_class = device_serializer.StakeHolderShareAmountSerializer
@@ -417,6 +417,21 @@ class StakeHolderShareAmountViewSet(SoftDeleteMixin, viewsets.ModelViewSet, Dyna
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
def destroy(self, request, pk=None, *args, **kwargs):
"""Soft delete share_holder and its quota_distribution safely."""
share_holder = self.get_object()
with transaction.atomic():
share_holder.quota_distribution.__class__.objects.filter(
id=share_holder.quota_distribution.id
).update(trash=True)
share_holder.__class__.objects.filter(
id=share_holder.id
).update(trash=True)
return Response(status=status.HTTP_200_OK)
@action(
methods=['get'],
detail=False,
@@ -435,7 +450,7 @@ class StakeHolderShareAmountViewSet(SoftDeleteMixin, viewsets.ModelViewSet, Dyna
# paginate stakeholders
page = self.paginate_queryset(stakeholders_sharing)
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
@@ -456,6 +471,6 @@ class StakeHolderShareAmountViewSet(SoftDeleteMixin, viewsets.ModelViewSet, Dyna
# paginate stakeholders
page = self.paginate_queryset(stakeholder_sharing)
if page is not None:
if page is not None: # noqa
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)