#!/usr/bin/env python3 # -*- coding: utf-8 -*- from Object.ResponseObject import ResponseObject from Object.TokenObject import TokenObject from django.views.generic.base import View from Service.ModelService import ModelService from Service.CommonService import CommonService from Model.models import Device_Info import datetime from django.utils import timezone class DeviceManagement(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.GET, request, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation') return self.validation(request.POST, request, operation) def validation(self, request_dict, request, operation): language = request_dict.get('language', 'en') response = ResponseObject(language, 'pc') tko = TokenObject( request.META.get('HTTP_AUTHORIZATION'), returntpye='pc') if tko.code != 0: return response.json(tko.code) response.lang = tko.lang userID = tko.userID if userID is not None: if operation == 'query': return self.query(request_dict, userID, response) elif operation == 'findByUser': return self.findByUser(request_dict, userID, response) elif operation == 'delete': return self.delete(request_dict, userID, response) return response.json(444, 'operation') def query(self, request_dict, userID, response): own_perm = ModelService.check_perm(userID=userID, permID=30) if not own_perm : return response.json(404) pageNo = request_dict.get('pageNo', None) pageSize = request_dict.get('pageSize', None) if not all([pageNo, pageSize]): return response.json(444) page = int(pageNo) line = int(pageSize) queryset = Device_Info.objects.all() if queryset.exists(): count = queryset.count() res = queryset[(page - 1) * line:page * line] send_dict = CommonService.qs_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 return response.json( 0, {'list': send_dict, 'total': count}) return response.json(0,{'count':0}) def delete(self, request_dict, userID, response): own_perm = ModelService.check_perm(userID=userID, permID=10) # redisObj = RedisObject(db=8) # redisObj.del_data(key='uid_qs_' + userID) if own_perm is True: id = request_dict.get('id', None) if id: Device_Info.objects.filter(id=id).delete() return response.json(0) else: return response.json(444,'id must list') else: return response.json(404) def findByUser(self, request_dict, userID, response): own_perm = ModelService.check_perm(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.qs_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 response.json(0, send_dict) return response.json(0,{'count':0}) else: return response.json(444) else: return response.json(404)