diff --git a/apps/third/serializers.py b/apps/third/serializers.py index ab473f83..0500776d 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -1,6 +1,8 @@ from rest_framework import serializers from apps.am.models import Area +from apps.third.models import TDevice +from apps.utils.serializers import CustomModelSerializer class RequestCommonSerializer(serializers.Serializer): @@ -23,12 +25,14 @@ class BindAreaSerializer(serializers.Serializer): label="区域ID") -class LabelLocationSerializer(serializers.Serializer): - code = serializers.CharField(label='设备唯一标识') - location = serializers.JSONField(label='坐标信息') +class LabelLocationSerializer(CustomModelSerializer): + class Meta: + model = TDevice + fields = ['type', 'location', 'area', 'areas'] class BindAreasSerializer(serializers.Serializer): + type = serializers.CharField(label='设备类型') codes = serializers.ListField(child=serializers.CharField(), label='标识列表') areas = serializers.PrimaryKeyRelatedField(queryset=Area.objects.all(), label="区域ID列表", diff --git a/apps/third/views_d.py b/apps/third/views_d.py index f7ae1f20..a8613caf 100644 --- a/apps/third/views_d.py +++ b/apps/third/views_d.py @@ -50,29 +50,14 @@ class TDeviceViewSet(CustomGenericViewSet): _, res = dhClient.request(**dhapis['channel_list'], json=request.data) return Response(res) - @action(methods=['post'], detail=False, perms_map={'post': 'tdevice:label_location'}, - serializer_class=LabelLocationSerializer) + @action(methods=['post'], detail=True, perms_map={'post': 'tdevice:label_location'}, + serializer_class=LabelLocationSerializer, lookup_field='code') 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.update_by = request.user - td.save() - else: - td = TDevice() - td.type = TDevice.DEVICE_VCHANNEL - td.code = vdata['code'] - td.location = vdata['location'] - td.create_by = request.user - td.save() return Response() @action(methods=['post'], detail=False, perms_map={'post': 'tdevice:bind_area'},