#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved. @AUTHOR: ASJRD018 @NAME: Ansjer @software: PyCharm @DATE: 2018/6/1 10:20 @Version: python3.6 @MODIFY DECORD:ansjer dev @file: DeviceManage.py @Contact: chanjunkai@163.com """ from django.shortcuts import HttpResponse 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 import traceback,datetime from django.utils import timezone ''' http://192.168.136.40:8077/device/manage?operation=query&token=test&page=1&line=10 http://192.168.136.40:8077/device/manage?operation=delete&id=1&id=2 http://192.168.136.45:8077/device/manage?operation=findByUser&token=test&username=13800138001&page=1&line=10 ----------------------- ''' class DeviceManage(View): @method_decorator(csrf_exempt) def dispatch(self, *args, **kwargs): return super(DeviceManage, 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): operation = request_dict.get('operation', None) if operation is not None: 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) if userID is not None: if operation == 'query': return self.query(request_dict=request_dict, userID=userID) elif operation == 'findByUser': return self.findByUser(request_dict=request_dict, userID=userID) elif operation == 'delete': return self.delete(request_dict=request_dict, userID=userID) return ResponseJSON(444) else: return HttpResponse(tokenManager.errorCodeInfo(error_code)) else: return ResponseJSON(311) else: return ResponseJSON(444) def query(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=30) if own_perm is True: page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) param_flag = CommonService.get_param_flag(data=[page, line]) if param_flag is True: queryset = Device_Info.objects.all() if queryset.exists(): count = queryset.count() res = queryset[(page - 1) * line:page * line] send_dict = CommonService.query_set_to_dict(res) for k, v in enumerate(send_dict["datas"]): for val in res: if v['pk'] == val.id: if send_dict["datas"][k]['fields']['Online'] is True: dl_time = val.update_time+datetime.timedelta(minutes=60) now_time = timezone.localtime(timezone.now()) if now_time > dl_time: pass # send_dict["datas"][k]['fields']['Online'] = False username= ModelService.get_user_name(send_dict["datas"][k]['fields']['userID']) send_dict["datas"][k]['fields']['username']=username primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID']) send_dict["datas"][k]['fields']['primaryusername']=primary send_dict['count'] = count return ResponseJSON(0, send_dict) return ResponseJSON(0,{'count':0}) else: return ResponseJSON(444) else: return ResponseJSON(404) def delete(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=10) if own_perm is True: id_list = request_dict.getlist('id', None) param_flag = CommonService.get_param_flag(data=[id_list]) if param_flag is True: try: for id in id_list: Device_Info.objects.filter(id=id).delete() except Exception as e: errorInfo = traceback.format_exc() print(errorInfo) return ResponseJSON(424, {'details': repr(e)}) else: return ResponseJSON(0) else: return ResponseJSON(444) else: return ResponseJSON(404) def findByUser(self, request_dict, userID): own_perm = ModelService.check_permission(userID=userID, permID=30) if own_perm is True: page = int(request_dict.get('page', None)) line = int(request_dict.get('line', None)) username = request_dict.get('username', None) param_flag = CommonService.get_param_flag(data=[page, line, username]) if param_flag is True: userID_id= ModelService.get_userID_byname(username=username) print(userID_id) queryset = Device_Info.objects.filter(userID_id=userID_id) if queryset.exists(): count = queryset.count() res = queryset[(page - 1) * line:page * line] send_dict = CommonService.query_set_to_dict(res) for k, v in enumerate(send_dict["datas"]): for val in res: if v['pk'] == val.id: if send_dict["datas"][k]['fields']['Online'] is True: dl_time = val.update_time + datetime.timedelta(minutes=1) now_time = timezone.localtime(timezone.now()) if now_time > dl_time: send_dict["datas"][k]['fields']['Online'] = False send_dict["datas"][k]['fields']['username']=username primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID']) send_dict["datas"][k]['fields']['primaryusername']=primary send_dict['count'] = count return ResponseJSON(0, send_dict) return ResponseJSON(0,{'count':0}) else: return ResponseJSON(444) else: return ResponseJSON(404) @csrf_exempt def Devices(request, UID): # 获取指定用户指定设备详细信息 if request.method == 'GET': request.encoding = 'utf-8' token = request.GET.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) res = Device_Info.objects.filter(userID_id=userID,UID=UID) send_dict = CommonService.query_set_to_dict(res) return ResponseJSON(0, send_dict) else: return HttpResponse(tokenManager.errorCodeInfo(error_code)) else: return ResponseJSON(311)