diff --git a/apps/third/serializers.py b/apps/third/serializers.py index 0500776d..a87d4c18 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -28,7 +28,7 @@ class BindAreaSerializer(serializers.Serializer): class LabelLocationSerializer(CustomModelSerializer): class Meta: model = TDevice - fields = ['type', 'location', 'area', 'areas'] + fields = ['type', 'location', 'area', 'areas', 'code'] class BindAreasSerializer(serializers.Serializer): diff --git a/apps/third/views_d.py b/apps/third/views_d.py index b7de7189..3f8d65bf 100644 --- a/apps/third/views_d.py +++ b/apps/third/views_d.py @@ -50,14 +50,38 @@ class TDeviceViewSet(CustomGenericViewSet): _, res = dhClient.request(**dhapis['channel_list'], json=request.data) return Response(res) - @action(methods=['put'], detail=True, perms_map={'put': 'tdevice:label_location'}, - serializer_class=LabelLocationSerializer, lookup_field='code') + @action(methods=['post'], detail=False, perms_map={'post': 'tdevice:label_location'}, + serializer_class=LabelLocationSerializer) def label_location(self, request): """ 标注坐标位置 标注坐标位置 """ + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.vdata + td = TDevice.objects.filter(code=vdata['code']).first() + if td: + td.location = vdata['location'] + td.type = vdata['type'] + td.area = vdata['area'] + td.update_by = request.user + td.areas.clear() + for i in vdata['areas']: + td.areas.add(i) + td.save() + else: + td = TDevice() + td.type = vdata['type'] + td.code = vdata['code'] + td.location = vdata['location'] + td.area = vdata['area'] + td.areas.clear() + for i in vdata['areas']: + td.areas.add(i) + td.create_by = request.user + td.save() return Response() @action(methods=['post'], detail=False, perms_map={'post': 'tdevice:bind_area'},