DeviceManage.py 7.3 KB

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