from apps.third.models import TDevice from apps.third.serializers import BindAreaSerializer, LabelLocationSerializer from apps.utils.viewsets import CustomGenericViewSet from rest_framework.mixins import ListModelMixin from apps.third.clients import xxClient, dhClient from apps.third.tapis import xxapis, dhapis from rest_framework.response import Response from rest_framework.serializers import Serializer from rest_framework.decorators import action from apps.am.models import Area # class BlgViewSet(ListModelMixin, CustomGenericViewSet): # """ # 定位基站接口 # """ # perms_map = {'get': '*'} # 权限标识 # serializer_class = Serializer # def list(self, request, *args, **kwargs): # """ # 定位基站列表 # 定位基站列表 # """ # data = request.data # _, res = xxClient.request(**xxapis['blg_list'], json=data) # return Response(res) # class IbeaconViewSet(CustomGenericViewSet): # """ # 信标接口 # """ # perms_map = {'get': '*'} # 权限标识 # serializer_class = Serializer # def list(self, request, *args, **kwargs): # """ # 信标列表 # 定位基站列表 # """ # data = request.data # _, res = xxClient.request(**xxapis['blg_list'], json=data) # return Response(res) class DChannelViewSet(CustomGenericViewSet): """ 闸机接口 """ pass class VChannelViewSet(CustomGenericViewSet): """ 视频接口 """ @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=Serializer) def page(self, request): request.data.update({'channelTypeList': ["1"]}) _, res = dhClient.request(**dhapis['channel_list'], json=request.data) return Response(res) @action(methods=['post'], detail=False, perms_map={'post': 'dchannel: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.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': 'dchannel:bind_area'}, serializer_class=BindAreaSerializer) def bind_area(self, request): """ 绑定所在区域 绑定所在区域 """ serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) vdata = serializer.vdata area = Area.objects.get(id=vdata['area']) for i in vdata['codes']: td = TDevice.objects.filter(code=i['code']).first() if td: td.area = area td.update_by = request.user td.save() else: td = TDevice() td.type = TDevice.DEVICE_VCHANNEL td.code = i['code'] td.area = area td.create_by = request.user td.save() return Response()