DeviceManagementController.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import json
  4. import time
  5. from aioredis.commands import transaction
  6. from Object.ResponseObject import ResponseObject
  7. from Object.TokenObject import TokenObject
  8. from django.views.generic.base import View
  9. from Service.ModelService import ModelService
  10. from Service.CommonService import CommonService
  11. from Model.models import Device_Info, UidSetModel, LogModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
  12. VodHlsModel, ExperienceContextModel
  13. import datetime
  14. from django.utils import timezone
  15. class DeviceManagement(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, request, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, request, operation)
  24. def validation(self, request_dict, request, operation):
  25. language = request_dict.get('language', 'en')
  26. response = ResponseObject(language, 'pc')
  27. tko = TokenObject(
  28. request.META.get('HTTP_AUTHORIZATION'),
  29. returntpye='pc')
  30. if tko.code != 0:
  31. return response.json(tko.code)
  32. response.lang = tko.lang
  33. userID = tko.userID
  34. if userID is not None:
  35. if operation == 'query':
  36. return self.query(request_dict, userID, response)
  37. elif operation == 'findByUser':
  38. return self.findByUser(request_dict, userID, response)
  39. elif operation == 'delete':
  40. return self.delete(request_dict, userID, response)
  41. elif operation == 'uidSetQuery':
  42. return self.uidSetQuery(request_dict, userID, response)
  43. elif operation == 'vod_reset':
  44. return self.vod_reset(request, request_dict, response)
  45. elif operation == 'primary_user_reset':
  46. return self.primary_user_reset(request, request_dict, response)
  47. return response.json(444, 'operation')
  48. def query(self, request_dict, userID, response):
  49. own_perm = ModelService.check_perm(userID=userID, permID=30)
  50. if not own_perm :
  51. return response.json(404)
  52. pageNo = request_dict.get('pageNo', None)
  53. pageSize = request_dict.get('pageSize', None)
  54. UID = request_dict.get('UID', None)
  55. if not all([pageNo, pageSize]):
  56. return response.json(444)
  57. page = int(pageNo)
  58. line = int(pageSize)
  59. queryset = Device_Info.objects.all()
  60. if UID:
  61. queryset = queryset.filter(UID__contains=UID)
  62. if queryset.exists():
  63. count = queryset.count()
  64. res = queryset[(page - 1) * line:page * line]
  65. send_dict = CommonService.qs_to_dict(res)
  66. for k, v in enumerate(send_dict["datas"]):
  67. for val in res:
  68. if v['pk'] == val.id:
  69. if send_dict["datas"][k]['fields']['Online'] is True:
  70. dl_time = val.update_time+datetime.timedelta(minutes=60)
  71. now_time = timezone.localtime(timezone.now())
  72. if now_time > dl_time:
  73. pass
  74. # send_dict["datas"][k]['fields']['Online'] = False
  75. username= ModelService.get_user_name(send_dict["datas"][k]['fields']['userID'])
  76. send_dict["datas"][k]['fields']['username']=username
  77. primary= ModelService.get_user_name(send_dict["datas"][k]['fields']['primaryUserID'])
  78. send_dict["datas"][k]['fields']['primaryusername']=primary
  79. return response.json(
  80. 0, {'list': send_dict, 'total': count})
  81. return response.json(
  82. 0, {'list': {}, 'total': 0})
  83. # 管理员查询接口
  84. def uidSetQuery(self, request_dict, userID, response):
  85. pageNo = request_dict.get('pageNo', None)
  86. pageSize = request_dict.get('pageSize', None)
  87. UID = request_dict.get('UID', None)
  88. if not all([pageNo, pageSize]):
  89. return response.json(444)
  90. page = int(pageNo)
  91. line = int(pageSize)
  92. omqs = UidSetModel.objects.all().order_by('-id')
  93. if UID:
  94. omqs = omqs.filter(uid__contains=UID)
  95. count = omqs.count()
  96. order_ql = omqs[(page - 1) * line:page * line]
  97. uidset_json = CommonService.qs_to_dict(order_ql)
  98. uidset_json['count'] = count
  99. return response.json(
  100. 0, {'list': uidset_json, 'total': count})
  101. # 重置设备云存
  102. def vod_reset(self, request, request_dict, response):
  103. uid = request_dict.get('uid', None)
  104. if uid:
  105. try:
  106. # 记录操作日志
  107. ip = CommonService.get_ip_address(request)
  108. content = json.loads(json.dumps(request_dict))
  109. log = {
  110. 'ip': ip,
  111. 'user_id': 1,
  112. 'status': 200,
  113. 'time': int(datetime.time.time()),
  114. 'url': 'uidset/vod_reset',
  115. 'content': json.dumps(content),
  116. 'operation': '{}重置设备云存'.format(uid),
  117. }
  118. with transaction.atomic():
  119. LogModel.objects.create(**log)
  120. # 删除和更新设备云存相关数据
  121. UID_Bucket.objects.filter(uid=uid).delete()
  122. Unused_Uid_Meal.objects.filter(uid=uid).delete()
  123. Order_Model.objects.filter(UID=uid).delete()
  124. StsCrdModel.objects.filter(uid=uid).delete()
  125. VodHlsModel.objects.filter(uid=uid).delete()
  126. ExperienceContextModel.objects.filter(uid=uid).delete()
  127. # UIDMainUser.objects.filter(UID=uid).delete()
  128. Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
  129. except Exception as e:
  130. print(e)
  131. return response.json(500, repr(e))
  132. else:
  133. return response.json(0)
  134. # 重置设备主用户
  135. def primary_user_reset(self, request, request_dict, response):
  136. uid = request_dict.get('uid', None)
  137. if not uid:
  138. return response.json(404)
  139. try:
  140. # 记录操作日志
  141. ip = CommonService.get_ip_address(request)
  142. content = json.loads(json.dumps(request_dict))
  143. log = {
  144. 'ip': ip,
  145. 'user_id': 1,
  146. 'status': 200,
  147. 'time': int(time.time()),
  148. 'url': 'uidset/primary_user_reset',
  149. 'content': json.dumps(content),
  150. 'operation': '{}重置设备主用户'.format(uid),
  151. }
  152. LogModel.objects.create(**log)
  153. Device_Info.objects.filter(UID=uid).update(vodPrimaryUserID='', vodPrimaryMaster='')
  154. return response.json(0)
  155. except Exception as e:
  156. return response.json(500, repr(e))