DeviceManage.py 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/6/1 10:20
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: DeviceManage.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. from django.shortcuts import HttpResponse
  15. from django.views.generic.base import View
  16. from django.utils.decorators import method_decorator
  17. from django.views.decorators.csrf import csrf_exempt
  18. from Service.ResponseService import *
  19. from Service.TokenManager import JSONTokenManager
  20. from Service.ModelService import ModelService
  21. from Service.CommonService import CommonService
  22. from Model.models import Device_Info
  23. import traceback,datetime
  24. from django.utils import timezone
  25. '''
  26. http://192.168.136.40:8077/device/manage?operation=query&token=test&page=1&line=10
  27. http://192.168.136.40:8077/device/manage?operation=delete&id=1&id=2
  28. http://192.168.136.45:8077/device/manage?operation=findByUser&token=test&username=13800138001&page=1&line=10
  29. -----------------------
  30. '''
  31. class DeviceManage(View):
  32. @method_decorator(csrf_exempt)
  33. def dispatch(self, *args, **kwargs):
  34. return super(DeviceManage, self).dispatch(*args, **kwargs)
  35. def get(self, request, *args, **kwargs):
  36. request.encoding = 'utf-8'
  37. return self.validation(request_dict=request.GET)
  38. def post(self, request, *args, **kwargs):
  39. request.encoding = 'utf-8'
  40. return self.validation(request_dict=request.POST)
  41. def validation(self, request_dict, *args, **kwargs):
  42. operation = request_dict.get('operation', None)
  43. if operation is not None:
  44. token = request_dict.get('token', None)
  45. if token is not None:
  46. tokenManager = JSONTokenManager()
  47. error_code = tokenManager.verify_AToken(token)
  48. if error_code == 0:
  49. userID = tokenManager.accessDict.get('userID', None)
  50. if userID is not None:
  51. if operation == 'query':
  52. return self.query(request_dict=request_dict, userID=userID)
  53. elif operation == 'findByUser':
  54. return self.findByUser(request_dict=request_dict, userID=userID)
  55. elif operation == 'delete':
  56. return self.delete(request_dict=request_dict, userID=userID)
  57. return ResponseJSON(444)
  58. else:
  59. return HttpResponse(tokenManager.errorCodeInfo(error_code))
  60. else:
  61. return ResponseJSON(311)
  62. else:
  63. return ResponseJSON(444)
  64. def query(self, request_dict, userID):
  65. own_perm = ModelService.check_permission(userID=userID, permID=30)
  66. if own_perm is True:
  67. page = int(request_dict.get('page', None))
  68. line = int(request_dict.get('line', None))
  69. param_flag = CommonService.get_param_flag(data=[page, line])
  70. if param_flag is True:
  71. queryset = Device_Info.objects.all()
  72. if queryset.exists():
  73. count = queryset.count()
  74. res = queryset[(page - 1) * line:page * line]
  75. send_dict = CommonService.query_set_to_dict(res)
  76. for k, v in enumerate(send_dict["datas"]):
  77. for val in res:
  78. if v['pk'] == val.id:
  79. if send_dict["datas"][k]['fields']['Online'] is True:
  80. dl_time = val.update_time+datetime.timedelta(minutes=60)
  81. now_time = timezone.localtime(timezone.now())
  82. if now_time > dl_time:
  83. pass
  84. # send_dict["datas"][k]['fields']['Online'] = False
  85. username= ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  86. send_dict["datas"][k]['fields']['username']=username
  87. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  88. send_dict["datas"][k]['fields']['primaryusername']=primary
  89. send_dict['count'] = count
  90. return ResponseJSON(0, send_dict)
  91. return ResponseJSON(0,{'count':0})
  92. else:
  93. return ResponseJSON(444)
  94. else:
  95. return ResponseJSON(404)
  96. def delete(self, request_dict, userID):
  97. own_perm = ModelService.check_permission(userID=userID, permID=10)
  98. if own_perm is True:
  99. id_list = request_dict.getlist('id', None)
  100. param_flag = CommonService.get_param_flag(data=[id_list])
  101. if param_flag is True:
  102. try:
  103. for id in id_list:
  104. Device_Info.objects.filter(id=id).delete()
  105. except Exception as e:
  106. errorInfo = traceback.format_exc()
  107. print(errorInfo)
  108. return ResponseJSON(424, {'details': repr(e)})
  109. else:
  110. return ResponseJSON(0)
  111. else:
  112. return ResponseJSON(444)
  113. else:
  114. return ResponseJSON(404)
  115. def findByUser(self, request_dict, userID):
  116. own_perm = ModelService.check_permission(userID=userID, permID=30)
  117. if own_perm is True:
  118. page = int(request_dict.get('page', None))
  119. line = int(request_dict.get('line', None))
  120. username = request_dict.get('username', None)
  121. param_flag = CommonService.get_param_flag(data=[page, line, username])
  122. if param_flag is True:
  123. userID_id= ModelService.get_userID_byname(username=username)
  124. print(userID_id)
  125. queryset = Device_Info.objects.filter(userID_id=userID_id)
  126. if queryset.exists():
  127. count = queryset.count()
  128. res = queryset[(page - 1) * line:page * line]
  129. send_dict = CommonService.query_set_to_dict(res)
  130. for k, v in enumerate(send_dict["datas"]):
  131. for val in res:
  132. if v['pk'] == val.id:
  133. if send_dict["datas"][k]['fields']['Online'] is True:
  134. dl_time = val.update_time + datetime.timedelta(minutes=1)
  135. now_time = timezone.localtime(timezone.now())
  136. if now_time > dl_time:
  137. send_dict["datas"][k]['fields']['Online'] = False
  138. send_dict["datas"][k]['fields']['username']=username
  139. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  140. send_dict["datas"][k]['fields']['primaryusername']=primary
  141. send_dict['count'] = count
  142. return ResponseJSON(0, send_dict)
  143. return ResponseJSON(0,{'count':0})
  144. else:
  145. return ResponseJSON(444)
  146. else:
  147. return ResponseJSON(404)
  148. @csrf_exempt
  149. def Devices(request, UID):
  150. # 获取指定用户指定设备详细信息
  151. if request.method == 'GET':
  152. request.encoding = 'utf-8'
  153. token = request.GET.get('token', None)
  154. if token is not None:
  155. tokenManager = JSONTokenManager()
  156. error_code = tokenManager.verify_AToken(token)
  157. if error_code == 0:
  158. userID = tokenManager.accessDict.get('userID', None)
  159. res = Device_Info.objects.filter(userID_id=userID,UID=UID)
  160. send_dict = CommonService.query_set_to_dict(res)
  161. return ResponseJSON(0, send_dict)
  162. else:
  163. return HttpResponse(tokenManager.errorCodeInfo(error_code))
  164. else:
  165. return ResponseJSON(311)