from django.views.generic.base import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from Service.ResponseService import * from Service.TokenManager import JSONTokenManager from Service.ModelService import ModelService from Service.CommonService import CommonService from Model.models import Device_Info, Equipment_Sensor import traceback ''' 增加,关联设备传感器: params:{ did:设备主键did name:传感器名称 status:设备状态值 type:设备类型 token:令牌 operation:add } http://192.168.136.40:8077/equipment/sensor?token=test&name=1&status=1&did=138001380001515727362917767&type=1&operation=add 删除设备关联的传感器: params:{ id:传感器主键id token:令牌 operation:delete did:设备主键did } http://192.168.136.40:8077/equipment/sensor?token=test&id=2&id=3&operation=delete&did=did 改,状态名称: params:{ id:传感器主键id token:令牌 status:状态值 operation:update name:name did:设备主键did } http://192.168.136.40:8077/equipment/sensor?token=test&id=19&did=138001380001515727362917767&status=1&name=555&operation=update 查找当前指定用户所有传感器 params:{ token:令牌 operation:query did:设备主键did } http://192.168.136.40:8077/equipment/sensor?token=test&operation=query&did=138001380001515727362917767 后台 查找所有传感器信息 http://192.168.136.40:8077/equipment/sensor?token=test&page=1&line=5&operation=queryall ''' class EquipmentSensor(View): @method_decorator(csrf_exempt) def dispatch(self, *args, **kwargs): return super(EquipmentSensor, self).dispatch(*args, **kwargs) def get(self, request, *args, **kwargs): request.encoding = 'utf-8' return self.validation(request_dict=request.GET) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' return self.validation(request_dict=request.POST) def validation(self, request_dict, *args, **kwargs): token = request_dict.get('token', None) if token is not None: tokenManager = JSONTokenManager() error_code = tokenManager.verify_AToken(token) if error_code == 0: userID = tokenManager.accessDict.get('userID', None) operation = request_dict.get('operation', None) if operation == 'add': return self.add_sensor(request_dict=request_dict, userID=userID) elif operation == 'delete': return self.delete_sensor(request_dict=request_dict, userID=userID) elif operation == 'update': return self.update_sensor(userID=userID, request_dict=request_dict) elif operation == 'query': return self.query_sensor(userID=userID,request_dict=request_dict) elif operation == 'queryall': return self.admin_query_all_sensor(userID=userID,request_dict=request_dict) else: return HttpResponse(tokenManager.errorCodeInfo(error_code)) else: return ResponseJSON(311) def add_sensor(self, userID, request_dict): # 设备PK did = request_dict.get('did', None) name = request_dict.get('name', None) status = request_dict.get('status', None) type = request_dict.get('type', None) if did is not None and name is not None and status is not None and type is not None: is_user = ModelService.check_user_own_device(userID=userID,deviceID=did) if is_user is True: try: device_info = Device_Info.objects.get(id=did) except Exception as e: errorInfo = traceback.format_exc() print('database error: %s' % errorInfo) return ResponseJSON(424) else: if device_info: equipment_sensor = Equipment_Sensor(name=name, status=status, type=type, uid=device_info.UID) equipment_sensor.save() if equipment_sensor.id: return ResponseJSON(0, {'id': equipment_sensor.id, 'status': equipment_sensor.status, 'name': equipment_sensor.name, 'type': equipment_sensor.type}) else: return ResponseJSON(4) else: return ResponseJSON(14) return ResponseJSON(444) def delete_sensor(self, request_dict,userID): # deletelist did = request_dict.get('did',None) id_list = request_dict.getlist('id', None) if len(id_list)>0 and id_list is not None and did is not None: is_user = ModelService.check_user_own_device(userID=userID, deviceID=did) is_superadmin = ModelService.check_permission(userID=userID, permID=10) if is_user is True or is_superadmin is True: try: device_info = Device_Info.objects.get(id=did) except Exception as e: errorInfo = traceback.format_exc() print('database error: %s' % errorInfo) return ResponseJSON(424) else: if device_info: for id in id_list: Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).delete() return ResponseJSON(0) else: return ResponseJSON(14) return ResponseJSON(444) def update_sensor(self,request_dict,userID): id = request_dict.get('id', None) did = request_dict.get('did',None) status = request_dict.get('status', None) name = request_dict.get('name', None) if id is not None and status is not None: is_user = ModelService.check_user_own_device(userID=userID, deviceID=did) is_superadmin = ModelService.check_permission(userID=userID, permID=50) if is_user is True or is_superadmin is True: try: device_info = Device_Info.objects.get(id=did) except Exception as e: errorInfo = traceback.format_exc() print('database error: %s' % errorInfo) return ResponseJSON(424) else: is_update = Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).update(status=status, name=name) if is_update: return ResponseJSON(0, {'id': id, 'status': status, 'name': name}) return ResponseJSON(4) else: return ResponseJSON(14) else: return ResponseJSON(444) def query_sensor(self,request_dict,userID): did = request_dict.get('did', None) if did is not None: is_user = ModelService.check_user_own_device(userID=userID, deviceID=did) is_superadmin = ModelService.check_permission(userID=userID,permID=30) if is_user is True or is_superadmin is True: try: device_info = Device_Info.objects.get(id=did) except Exception as e: errorInfo = traceback.format_exc() print('database error: %s' % errorInfo) return ResponseJSON(424) else: equipment_sensor_queryset = Equipment_Sensor.objects.filter(uid=device_info.UID) if equipment_sensor_queryset.exists(): send_json = CommonService.query_set_to_dict(equipment_sensor_queryset) return ResponseJSON(0, send_json) else: return ResponseJSON(0, {}) return ResponseJSON(14) else: return ResponseJSON(444) def admin_query_all_sensor(self,request_dict,userID): page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) if userID is not None: is_own = ModelService.check_permission(userID=userID, permID=30) if is_own is True: equipment_sensor_queryset = Equipment_Sensor.objects.all() if equipment_sensor_queryset.exists(): equipment_stream_count = equipment_sensor_queryset.count() equipment_stream_res = equipment_sensor_queryset[(page - 1) * line:page * line] send_json = CommonService.query_set_to_dict(equipment_stream_res) send_json['count'] = equipment_stream_count return ResponseJSON(0, send_json) else: return ResponseJSON(0, {}) return ResponseJSON(604) else: return ResponseJSON(444)