DeviceManage.py 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. response.lang = tko.lang
  48. if tko.code == 0:
  49. userID = tko.userID
  50. if userID is not None:
  51. if operation == 'query':
  52. return self.query(request_dict, userID, response)
  53. elif operation == 'findByUser':
  54. return self.findByUser(request_dict, userID,response)
  55. elif operation == 'delete':
  56. return self.delete(request_dict, userID, response)
  57. return response.json(444,'operation')
  58. else:
  59. return response.json(tko.code)
  60. else:
  61. return response.json(309)
  62. else:
  63. return response.json(444)
  64. def query(self, request_dict, userID, response):
  65. own_perm = ModelService.check_perm(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. if page is not None and line is not None:
  70. queryset = Device_Info.objects.all()
  71. if queryset.exists():
  72. count = queryset.count()
  73. res = queryset[(page - 1) * line:page * line]
  74. send_dict = CommonService.qs_to_dict(res)
  75. for k, v in enumerate(send_dict["datas"]):
  76. for val in res:
  77. if v['pk'] == val.id:
  78. if send_dict["datas"][k]['fields']['Online'] is True:
  79. dl_time = val.update_time+datetime.timedelta(minutes=60)
  80. now_time = timezone.localtime(timezone.now())
  81. if now_time > dl_time:
  82. pass
  83. # send_dict["datas"][k]['fields']['Online'] = False
  84. username= ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  85. send_dict["datas"][k]['fields']['username']=username
  86. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  87. send_dict["datas"][k]['fields']['primaryusername']=primary
  88. send_dict['count'] = count
  89. return response.json(0, send_dict)
  90. return response.json(0,{'count':0})
  91. else:
  92. return response.json(444,'page,line')
  93. else:
  94. return response.json(404)
  95. def delete(self, request_dict, userID, response):
  96. own_perm = ModelService.check_perm(userID=userID, permID=10)
  97. if own_perm is True:
  98. id = request_dict.get('id', None)
  99. if id:
  100. Device_Info.objects.filter(id=id).delete()
  101. return response.json(0)
  102. else:
  103. return response.json(444,'id must list')
  104. else:
  105. return response.json(404)
  106. def findByUser(self, request_dict, userID, response):
  107. own_perm = ModelService.check_perm(userID=userID, permID=30)
  108. if own_perm is True:
  109. page = int(request_dict.get('page', None))
  110. line = int(request_dict.get('line', None))
  111. username = request_dict.get('username', None)
  112. param_flag = CommonService.get_param_flag(data=[page, line, username])
  113. if param_flag is True:
  114. userID_id= ModelService.get_userID_byname(username=username)
  115. print(userID_id)
  116. queryset = Device_Info.objects.filter(userID_id=userID_id)
  117. if queryset.exists():
  118. count = queryset.count()
  119. res = queryset[(page - 1) * line:page * line]
  120. send_dict = CommonService.qs_to_dict(res)
  121. for k, v in enumerate(send_dict["datas"]):
  122. for val in res:
  123. if v['pk'] == val.id:
  124. if send_dict["datas"][k]['fields']['Online'] is True:
  125. dl_time = val.update_time + datetime.timedelta(minutes=1)
  126. now_time = timezone.localtime(timezone.now())
  127. if now_time > dl_time:
  128. send_dict["datas"][k]['fields']['Online'] = False
  129. send_dict["datas"][k]['fields']['username']=username
  130. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  131. send_dict["datas"][k]['fields']['primaryusername']=primary
  132. send_dict['count'] = count
  133. return response.json(0, send_dict)
  134. return response.json(0,{'count':0})
  135. else:
  136. return response.json(444)
  137. else:
  138. return response.json(404)
  139. @csrf_exempt
  140. def Devices(request, UID):
  141. # 获取指定用户指定设备详细信息
  142. if request.method == 'GET':
  143. request.encoding = 'utf-8'
  144. token = request.GET.get('token', None)
  145. response = ResponseObject()
  146. if token is not None:
  147. tko = TokenObject(token)
  148. response.lang = tko.lang
  149. if tko.code == 0:
  150. userID = tko.userID
  151. res = Device_Info.objects.filter(userID_id=userID,UID=UID)
  152. send_dict = CommonService.qs_to_dict(res)
  153. return response.json(0, send_dict)
  154. else:
  155. return response.json(tko.code)
  156. else:
  157. return response.json(309)