DeviceManage.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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(309)
  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 = request_dict.get('id', None)
  100. if id:
  101. Device_Info.objects.filter(id=id).delete()
  102. return response.json(0)
  103. else:
  104. return response.json(444,'id must list')
  105. else:
  106. return response.json(404)
  107. def findByUser(self, request_dict, userID, response):
  108. own_perm = ModelService.check_permission(userID=userID, permID=30)
  109. if own_perm is True:
  110. page = int(request_dict.get('page', None))
  111. line = int(request_dict.get('line', None))
  112. username = request_dict.get('username', None)
  113. param_flag = CommonService.get_param_flag(data=[page, line, username])
  114. if param_flag is True:
  115. userID_id= ModelService.get_userID_byname(username=username)
  116. print(userID_id)
  117. queryset = Device_Info.objects.filter(userID_id=userID_id)
  118. if queryset.exists():
  119. count = queryset.count()
  120. res = queryset[(page - 1) * line:page * line]
  121. send_dict = CommonService.qs_to_dict(res)
  122. for k, v in enumerate(send_dict["datas"]):
  123. for val in res:
  124. if v['pk'] == val.id:
  125. if send_dict["datas"][k]['fields']['Online'] is True:
  126. dl_time = val.update_time + datetime.timedelta(minutes=1)
  127. now_time = timezone.localtime(timezone.now())
  128. if now_time > dl_time:
  129. send_dict["datas"][k]['fields']['Online'] = False
  130. send_dict["datas"][k]['fields']['username']=username
  131. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  132. send_dict["datas"][k]['fields']['primaryusername']=primary
  133. send_dict['count'] = count
  134. return response.json(0, send_dict)
  135. return response.json(0,{'count':0})
  136. else:
  137. return response.json(444)
  138. else:
  139. return response.json(404)
  140. @csrf_exempt
  141. def Devices(request, UID):
  142. # 获取指定用户指定设备详细信息
  143. if request.method == 'GET':
  144. request.encoding = 'utf-8'
  145. token = request.GET.get('token', None)
  146. response = ResponseObject()
  147. if token is not None:
  148. tko = TokenObject(token)
  149. tko.valid()
  150. response.lang = tko.lang
  151. if tko.code == 0:
  152. userID = tko.userID
  153. res = Device_Info.objects.filter(userID_id=userID,UID=UID)
  154. send_dict = CommonService.qs_to_dict(res)
  155. return response.json(0, send_dict)
  156. else:
  157. return response.json(tko.code)
  158. else:
  159. return response.json(309)