DeviceManage.py 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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 Object.ResponseObject import ResponseObject
  15. from Object.TokenObject import TokenObject
  16. from django.views.generic.base import View
  17. from django.utils.decorators import method_decorator
  18. from django.views.decorators.csrf import csrf_exempt
  19. from Service.ModelService import ModelService
  20. from Service.CommonService import CommonService
  21. from Model.models import Device_Info
  22. import traceback,datetime
  23. from django.utils import timezone
  24. '''
  25. http://192.168.136.40:8077/device/manage?operation=query&token=test&page=1&line=10
  26. http://192.168.136.40:8077/device/manage?operation=delete&id=1&id=2
  27. http://192.168.136.45:8077/device/manage?operation=findByUser&token=test&username=13800138001&page=1&line=10
  28. -----------------------
  29. '''
  30. class DeviceManage(View):
  31. @method_decorator(csrf_exempt)
  32. def dispatch(self, *args, **kwargs):
  33. return super(DeviceManage, self).dispatch(*args, **kwargs)
  34. def get(self, request, *args, **kwargs):
  35. request.encoding = 'utf-8'
  36. return self.validation(request_dict=request.GET)
  37. def post(self, request, *args, **kwargs):
  38. request.encoding = 'utf-8'
  39. return self.validation(request_dict=request.POST)
  40. def validation(self, request_dict, *args, **kwargs):
  41. operation = request_dict.get('operation', None)
  42. response = ResponseObject()
  43. if operation is not None:
  44. token = request_dict.get('token', None)
  45. if token is not None:
  46. tko = TokenObject(token)
  47. tko.valid()
  48. response.lang = tko.lang
  49. if tko.code == 0:
  50. userID = tko.userID()
  51. if userID is not None:
  52. if operation == 'query':
  53. return self.query(request_dict, userID, response)
  54. elif operation == 'findByUser':
  55. return self.findByUser(request_dict, userID,response)
  56. elif operation == 'delete':
  57. return self.delete(request_dict, userID, response)
  58. return response.json(444,'operation')
  59. else:
  60. return response.json(tko.code)
  61. else:
  62. return response.json(311)
  63. else:
  64. return response.json(444)
  65. def query(self, request_dict, userID, response):
  66. own_perm = ModelService.check_permission(userID=userID, permID=30)
  67. if own_perm is True:
  68. page = int(request_dict.get('page', None))
  69. line = int(request_dict.get('line', None))
  70. if page is not None and line is not None:
  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.qs_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 response.json(0, send_dict)
  91. return response.json(0,{'count':0})
  92. else:
  93. return response.json(444,'page,line')
  94. else:
  95. return response.json(404)
  96. def delete(self, request_dict, userID, response):
  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. if id_list:
  101. try:
  102. for id in id_list:
  103. Device_Info.objects.filter(id=id).delete()
  104. except Exception as e:
  105. errorInfo = traceback.format_exc()
  106. print(errorInfo)
  107. return response.json(424, {'details': repr(e)})
  108. else:
  109. return response.json(0)
  110. else:
  111. return response.json(444,'id must list')
  112. else:
  113. return response.json(404)
  114. def findByUser(self, request_dict, userID, response):
  115. own_perm = ModelService.check_permission(userID=userID, permID=30)
  116. if own_perm is True:
  117. page = int(request_dict.get('page', None))
  118. line = int(request_dict.get('line', None))
  119. username = request_dict.get('username', None)
  120. param_flag = CommonService.get_param_flag(data=[page, line, username])
  121. if param_flag is True:
  122. userID_id= ModelService.get_userID_byname(username=username)
  123. print(userID_id)
  124. queryset = Device_Info.objects.filter(userID_id=userID_id)
  125. if queryset.exists():
  126. count = queryset.count()
  127. res = queryset[(page - 1) * line:page * line]
  128. send_dict = CommonService.qs_to_dict(res)
  129. for k, v in enumerate(send_dict["datas"]):
  130. for val in res:
  131. if v['pk'] == val.id:
  132. if send_dict["datas"][k]['fields']['Online'] is True:
  133. dl_time = val.update_time + datetime.timedelta(minutes=1)
  134. now_time = timezone.localtime(timezone.now())
  135. if now_time > dl_time:
  136. send_dict["datas"][k]['fields']['Online'] = False
  137. send_dict["datas"][k]['fields']['username']=username
  138. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  139. send_dict["datas"][k]['fields']['primaryusername']=primary
  140. send_dict['count'] = count
  141. return response.json(0, send_dict)
  142. return response.json(0,{'count':0})
  143. else:
  144. return response.json(444)
  145. else:
  146. return response.json(404)
  147. @csrf_exempt
  148. def Devices(request, UID):
  149. # 获取指定用户指定设备详细信息
  150. if request.method == 'GET':
  151. request.encoding = 'utf-8'
  152. token = request.GET.get('token', None)
  153. response = ResponseObject()
  154. if token is not None:
  155. tko = TokenObject(token)
  156. tko.valid()
  157. response.lang = tko.lang
  158. if tko.code == 0:
  159. userID = tko.userID()
  160. res = Device_Info.objects.filter(userID_id=userID,UID=UID)
  161. send_dict = CommonService.qs_to_dict(res)
  162. return response.json(0, send_dict)
  163. else:
  164. return response.json(tko.code)
  165. else:
  166. return response.json(311)