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. from Object.RedisObject import RedisObject
  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. response = ResponseObject()
  44. if not operation:
  45. return response.json(444,'operation')
  46. token = request_dict.get('token', None)
  47. if token is not None:
  48. tko = TokenObject(token)
  49. response.lang = tko.lang
  50. if tko.code == 0:
  51. userID = tko.userID
  52. if userID is not None:
  53. if operation == 'query':
  54. return self.query(request_dict, userID, response)
  55. elif operation == 'findByUser':
  56. return self.findByUser(request_dict, userID, response)
  57. elif operation == 'delete':
  58. return self.delete(request_dict, userID, response)
  59. return response.json(444, 'operation')
  60. else:
  61. return response.json(tko.code)
  62. else:
  63. return response.json(309)
  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. # redisObj = RedisObject(db=8)
  98. # redisObj.del_data(key='uid_qs_' + userID)
  99. if own_perm is True:
  100. id = request_dict.get('id', None)
  101. if id:
  102. Device_Info.objects.filter(id=id).delete()
  103. return response.json(0)
  104. else:
  105. return response.json(444,'id must list')
  106. else:
  107. return response.json(404)
  108. def findByUser(self, request_dict, userID, response):
  109. own_perm = ModelService.check_perm(userID=userID, permID=30)
  110. if own_perm is True:
  111. page = int(request_dict.get('page', None))
  112. line = int(request_dict.get('line', None))
  113. username = request_dict.get('username', None)
  114. param_flag = CommonService.get_param_flag(data=[page, line, username])
  115. if param_flag is True:
  116. userID_id= ModelService.get_userID_byname(username=username)
  117. print(userID_id)
  118. queryset = Device_Info.objects.filter(userID_id=userID_id)
  119. if queryset.exists():
  120. count = queryset.count()
  121. res = queryset[(page - 1) * line:page * line]
  122. send_dict = CommonService.qs_to_dict(res)
  123. for k, v in enumerate(send_dict["datas"]):
  124. for val in res:
  125. if v['pk'] == val.id:
  126. if send_dict["datas"][k]['fields']['Online'] is True:
  127. dl_time = val.update_time + datetime.timedelta(minutes=1)
  128. now_time = timezone.localtime(timezone.now())
  129. if now_time > dl_time:
  130. send_dict["datas"][k]['fields']['Online'] = False
  131. send_dict["datas"][k]['fields']['username']=username
  132. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  133. send_dict["datas"][k]['fields']['primaryusername']=primary
  134. send_dict['count'] = count
  135. return response.json(0, send_dict)
  136. return response.json(0,{'count':0})
  137. else:
  138. return response.json(444)
  139. else:
  140. return response.json(404)
  141. @csrf_exempt
  142. def Devices(request, UID):
  143. # 获取指定用户指定设备详细信息
  144. if request.method == 'GET':
  145. request.encoding = 'utf-8'
  146. token = request.GET.get('token', None)
  147. response = ResponseObject()
  148. if token is not None:
  149. tko = TokenObject(token)
  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)