EquipmentOTA.py 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import os
  2. import simplejson as json
  3. from django.utils import timezone
  4. from django.utils.decorators import method_decorator
  5. from django.views.decorators.csrf import csrf_exempt
  6. from django.views.generic.base import View
  7. from Ansjer.config import BASE_DIR
  8. from Model.models import Equipment_Version
  9. from Object.ResponseObject import ResponseObject
  10. from Object.TokenObject import TokenObject
  11. from Service.CommonService import CommonService
  12. from Service.ModelService import ModelService
  13. '''
  14. http://192.168.136.45:8077/equipment/OTA?token=test&operation=query&page=1&line=10
  15. http://192.168.136.45:8077/equipment/OTA?token=test&operation=find&page=1&line=10&content={}
  16. http://192.168.136.40:8077/equipment/OTA?eid=138001524641441203480138000&token=test&operation=delete
  17. http://192.168.136.40:8077/equipment/OTA?eid=138001524641441203480138000&token=test&operation=update&status=1
  18. '''
  19. class EquipmentOTA(View):
  20. @method_decorator(csrf_exempt)
  21. def dispatch(self, *args, **kwargs):
  22. return super(EquipmentOTA, self).dispatch(*args, **kwargs)
  23. def get(self, request, *args, **kwargs):
  24. request.encoding = 'utf-8'
  25. return self.validation(request_dict=request.GET)
  26. def post(self, request, *args, **kwargs):
  27. request.encoding = 'utf-8'
  28. return self.validation(request_dict=request.POST)
  29. def validation(self, request_dict, *args, **kwargs):
  30. token = request_dict.get('token', None)
  31. response = ResponseObject()
  32. if token is None:
  33. return response.json(309)
  34. tko = TokenObject(token)
  35. response.lang = tko.lang
  36. if tko.code != 0:
  37. return response.json(tko.code)
  38. userID = tko.userID
  39. if userID is None:
  40. return response.json(309)
  41. operation = request_dict.get('operation', None)
  42. if operation == 'delete':
  43. return self.delete(request_dict, userID, response)
  44. elif operation == 'query':
  45. return self.query(request_dict, userID, response)
  46. elif operation == 'find':
  47. return self.find(request_dict, userID, response)
  48. elif operation == 'update':
  49. return self.update(request_dict, userID, response)
  50. else:
  51. return response.json(444, 'operation')
  52. def delete(self, request_dict, userID, response):
  53. eid = request_dict.get('eid', None)
  54. param_flag = CommonService.get_param_flag(data=[eid])
  55. if param_flag is True:
  56. own_permission = ModelService.check_perm(userID=userID, permID=230)
  57. if own_permission is True:
  58. ev = Equipment_Version.objects.filter(eid=eid)
  59. if ev.exists():
  60. try:
  61. has_ev = Equipment_Version.objects.filter(filePath=ev[0].filePath)
  62. if has_ev.exists():
  63. pass
  64. else:
  65. filepath = os.path.join(BASE_DIR, ev[0].filePath)
  66. os.remove(filepath)
  67. except Exception as e:
  68. pass
  69. ev.delete()
  70. return response.json(0)
  71. else:
  72. return response.json(404)
  73. return response.json(444)
  74. def query(self, request_dict, userID, response):
  75. page = int(request_dict.get('page', None))
  76. line = int(request_dict.get('line', None))
  77. lang = request_dict.get('lang', None)
  78. if page is None or line is None:
  79. return response.json(444, 'page,line')
  80. own_permission = ModelService.check_perm(userID=userID, permID=240)
  81. if own_permission is not True:
  82. return response.json(404)
  83. if lang is None:
  84. qs = Equipment_Version.objects.all().order_by('-data_joined')
  85. else:
  86. qs = Equipment_Version.objects.filter(lang=lang).order_by('-data_joined')
  87. if qs.exists():
  88. count = qs.count()
  89. res = qs[(page - 1) * line:page * line]
  90. send_json = CommonService.qs_to_dict(res)
  91. send_json['count'] = count
  92. return response.json(0, send_json)
  93. return response.json(0)
  94. def find(self, request_dict, userID, response):
  95. page = int(request_dict.get('page', None))
  96. line = int(request_dict.get('line', None))
  97. content = request_dict.get('content', None)
  98. if page is None or line is None or content is None:
  99. return response.json(444)
  100. own_permission = ModelService.check_perm(userID=userID, permID=250)
  101. if own_permission is not True:
  102. return response.json(404)
  103. content = json.loads(content)
  104. search_kwargs = CommonService.get_kwargs(data=content)
  105. qs = Equipment_Version.objects.filter(**search_kwargs)
  106. if not qs.exists():
  107. return response.json(0, [])
  108. count = qs.count()
  109. res = qs[(page - 1) * line:page * line]
  110. send_json = CommonService.qs_to_dict(res)
  111. send_json['count'] = count
  112. return response.json(0, send_json)
  113. def update(self, request_dict, userID, response):
  114. eid = request_dict.get('eid', None)
  115. if eid is None:
  116. return response.json(444, 'eid')
  117. own_permission = ModelService.check_perm(userID=userID, permID=230)
  118. if own_permission is not True:
  119. return response.json(404)
  120. ev = Equipment_Version.objects.filter(eid=eid)
  121. if not ev.exists():
  122. return response.json(10, 'ev none')
  123. status = request_dict.get('status', None)
  124. try:
  125. update_time = timezone.localtime(timezone.now())
  126. ev.update(status=status, update_time=update_time)
  127. except Exception as e:
  128. print(repr(e))
  129. pass
  130. else:
  131. return response.json(0, {'update_time': str(update_time)})
  132. class EquipmentVersionView(View):
  133. def get(self, request, *args, **kwargs):
  134. request.encoding = 'utf-8'
  135. operation = kwargs.get('operation')
  136. return self.validation(request.GET, request, operation)
  137. def post(self, request, *args, **kwargs):
  138. request.encoding = 'utf-8'
  139. operation = kwargs.get('operation')
  140. return self.validation(request.POST, request, operation)
  141. def validation(self, request_dict, request, operation):
  142. response = ResponseObject()
  143. if operation is None:
  144. return response.json(444, 'error path')
  145. token = request_dict.get('token', None)
  146. # 设备主键uid
  147. tko = TokenObject(token)
  148. response.lang = tko.lang
  149. if tko.code != 0:
  150. return response.json(tko.code)
  151. userID = tko.userID
  152. own_perm = ModelService.check_perm(userID, 30)
  153. if own_perm is False:
  154. return response.json(404)
  155. if operation == 'query':
  156. return self.do_query(request_dict, response)
  157. else:
  158. return response.json(444, 'error path')
  159. def do_query(self, request_dict, response):
  160. mci = request_dict.get('mci', None)
  161. page = request_dict.get('page', None)
  162. line = request_dict.get('line', None)
  163. if not page or not line:
  164. return response.json(444, 'page,line')
  165. if mci is not None:
  166. ev_qs = Equipment_Version.objects.filter(mci=mci).values()
  167. else:
  168. ev_qs = Equipment_Version.objects.values()
  169. res = {
  170. 'datas': CommonService.qs_to_list(ev_qs[(page - 1) * line:page * line]),
  171. 'count': ev_qs.count()
  172. }
  173. return response.json(0, res)