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,8 +56,9 @@ class DeviceAssignmentSerializer(ModelSerializer):
device = attrs['device'] device = attrs['device']
client = attrs['client'] client = attrs['client']
if self.Meta.model.objects.filter(device=device, client=client).exists(): if not self.instance:
raise pos_exceptions.DeviceAlreadyAssigned() if self.Meta.model.objects.filter(device=device, client=client).exists():
raise pos_exceptions.DeviceAlreadyAssigned()
return attrs return attrs

View File

@@ -177,7 +177,7 @@ class DeviceAssignmentViewSet(viewsets.ModelViewSet):
# if client will be an organization # if client will be an organization
if request.data['client_data']['is_organization']: if request.data['client_data']['is_organization']:
client = pos_models.POSClient.objects.filter( client = pos_models.POSClient.objects.filter(
organization_id=request.data['client_data']['organization'] organization_id=request.data['client_data']['organization']
) )
if client.exists(): if client.exists():
@@ -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,