edit assignment

This commit is contained in:
2025-08-16 16:45:58 +03:30
parent 63be0fbf95
commit a51a4442ce
3 changed files with 26 additions and 4 deletions

View File

@@ -13,7 +13,7 @@ class POSClientSerializer(ModelSerializer):
org = attrs['organization'] org = attrs['organization']
# check for duplicate organization client # check for duplicate organization client
if org: if not self.instance and org:
if self.Meta.model.objects.filter(organization=org).exists(): if self.Meta.model.objects.filter(organization=org).exists():
raise APIException("قبلا کلاینت با این سازمان ثبت شده است", code=status.HTTP_403_FORBIDDEN) # noqa raise APIException("قبلا کلاینت با این سازمان ثبت شده است", code=status.HTTP_403_FORBIDDEN) # noqa

View File

@@ -56,6 +56,7 @@ class DeviceAssignmentSerializer(ModelSerializer):
device = attrs['device'] device = attrs['device']
client = attrs['client'] client = attrs['client']
if not self.instance:
if self.Meta.model.objects.filter(device=device, client=client).exists(): if self.Meta.model.objects.filter(device=device, client=client).exists():
raise pos_exceptions.DeviceAlreadyAssigned() raise pos_exceptions.DeviceAlreadyAssigned()

View File

@@ -207,6 +207,27 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN) return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
@transaction.atomic
def update(self, request, pk=None, *args, **kwargs):
""" edit assignment """
assignment = self.get_object()
if 'client_data' in request.data.keys():
client = CustomOperations().custom_update(
request=request,
view=POSClientViewSet(),
data_key='client_data',
obj_id=request.data['client_data']['id']
)
request.data.update({'client': client['id']})
serializer = self.serializer_class(data=request.data, instance=assignment, partial=True)
if serializer.is_valid():
assignment = serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)
@action( @action(
methods=['get'], methods=['get'],
detail=False, detail=False,