diff --git a/apps/pos_device/web/api/v1/viewsets/device.py b/apps/pos_device/web/api/v1/viewsets/device.py index 0186644..9bcacfa 100644 --- a/apps/pos_device/web/api/v1/viewsets/device.py +++ b/apps/pos_device/web/api/v1/viewsets/device.py @@ -224,8 +224,9 @@ class DeviceAssignmentViewSet(SoftDeleteMixin, viewsets.ModelViewSet): # set device status to assigned assignment.device.assigned_state = True - assignment.device.acceptor = data['acceptor'] - assignment.device.terminal = data['terminal'] + if 'acceptor' and 'terminal' in data.keys(): + assignment.device.acceptor = data['acceptor'] + assignment.device.terminal = data['terminal'] if not assignment.device.password: assignment.device.password = ''.join(random.choices(string.digits, k=6)) assignment.device.save() @@ -238,12 +239,17 @@ class DeviceAssignmentViewSet(SoftDeleteMixin, viewsets.ModelViewSet): # after pos device assignment, must set owner # as default stakeholder + broker = Broker.objects.filter(organization_type=client_org.type) + if broker.exists(): + broker = broker.first() + else: + broker = None pos_models.StakeHolders.objects.create( assignment=assignment, device=assignment.device, organization=client_org, default=True, - broker=Broker.objects.get(organization_type=client_org.type) + broker=broker ) return Response(serializer.data, status=status.HTTP_201_CREATED) @@ -254,27 +260,36 @@ class DeviceAssignmentViewSet(SoftDeleteMixin, viewsets.ModelViewSet): """ 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']}) + assignment.delete() - serializer = self.serializer_class(data=request.data, instance=assignment, partial=True) - if serializer.is_valid(): - assignment = serializer.save() - - if assignment.client.organization: - # update default stake holder for device (assignment) - stake_holder = assignment.stake_holders.filter(default=True).first() - stake_holder.organization = assignment.client.organization - stake_holder.save() - - return Response(serializer.data, status=status.HTTP_200_OK) - return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN) + re_create_assignment = self.create(request, *args, **kwargs) + print(re_create_assignment.data) + assignment = self.queryset.get(id=re_create_assignment.data['id']) + assignment.organization = pos_models.Organization.objects.get( + id=re_create_assignment.data['client']['organization']['id'] + ) + assignment.save() + # 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() + # + # if assignment.client.organization: + # # update default stake holder for device (assignment) + # stake_holder = assignment.stake_holders.filter(default=True).first() + # stake_holder.organization = assignment.client.organization + # stake_holder.save() + # + # return Response(serializer.data, status=status.HTTP_200_OK) + return re_create_assignment @action( methods=['get'],