DeviceTypeController.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import time
  4. import oss2
  5. from django.views import View
  6. from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET
  7. from Model.models import DeviceTypeModel
  8. from Object.ResponseObject import ResponseObject
  9. from Object.TokenObject import TokenObject
  10. from Service.CommonService import CommonService
  11. from Service.ModelService import ModelService
  12. class DeviceTypeView(View):
  13. def get(self, request, *args, **kwargs):
  14. request.encoding = 'utf-8'
  15. request_dict = request.GET
  16. operation = kwargs.get('operation', None)
  17. return self.validate(request_dict, operation)
  18. def post(self, request, *args, **kwargs):
  19. request.encoding = 'utf-8'
  20. request_dict = request.POST
  21. operation = kwargs.get('operation', None)
  22. return self.validate(request_dict, operation)
  23. def validate(self, request_dict, operation):
  24. token = request_dict.get('token', None)
  25. lang = request_dict.get('lang', None)
  26. response = ResponseObject(lang=lang)
  27. token = TokenObject(token)
  28. if token.code != 0:
  29. return response.json(token.code)
  30. if operation == 'add':
  31. return self.do_admin_add(token.userID, request_dict, response)
  32. elif operation == 'query':
  33. return self.do_query(request_dict, response)
  34. elif operation == 'delete':
  35. return self.do_admin_delete(token.userID, request_dict, response)
  36. elif operation == 'getUploadUrl':
  37. return self.get_upload_url(request_dict, response)
  38. else:
  39. return response.json(404)
  40. def get_upload_url(self, request_dict, response):
  41. upload_type = request_dict.get('upload_type', None)
  42. if upload_type:
  43. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  44. bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
  45. name = CommonService.createOrderID()
  46. filename = str(name) + '.' + upload_type
  47. obj = 'device_type/' + filename
  48. url = bucket.sign_url('PUT', obj, 7200)
  49. return response.json(0, {'put_url': url, 'filename': filename})
  50. else:
  51. return response.json(444)
  52. def do_admin_add(self, userID, request_dict, response):
  53. own_perm = ModelService.check_perm(userID, 10)
  54. if not own_perm:
  55. return response.json(404)
  56. name = request_dict.get('name', None)
  57. model = request_dict.get('model', None)
  58. type = request_dict.get('type', None)
  59. ptz_type = request_dict.get('ptz_type', None)
  60. icon = request_dict.get('icon', None)
  61. if name and model and type and ptz_type and icon:
  62. now_time = int(time.time())
  63. device_type = DeviceTypeModel()
  64. device_type.name = name
  65. device_type.model = model
  66. device_type.type = type
  67. device_type.ptz_type = ptz_type
  68. device_type.icon = icon
  69. device_type.add_time = now_time
  70. device_type.update_time = now_time
  71. device_type.save()
  72. return response.json(0)
  73. else:
  74. return response.json(444)
  75. def do_query(self, request_dict, response):
  76. device_type_qs = DeviceTypeModel.objects.filter().values('id', 'type', 'ptz_type', 'model', 'icon', 'name')
  77. res = {}
  78. data = []
  79. res['data'] = data
  80. if device_type_qs.exists():
  81. for device_type in device_type_qs:
  82. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  83. bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
  84. icon = device_type['icon']
  85. url = 'device_type/' + icon
  86. device_type['icon'] = bucket.sign_url('GET', url, 3600)
  87. data.append(device_type)
  88. return response.json(0, res)
  89. def do_admin_delete(self, userID, request_dict, response):
  90. own_perm = ModelService.check_perm(userID, 10)
  91. if not own_perm:
  92. return response.json(404)
  93. id = request_dict.get('id', None)
  94. if id:
  95. DeviceTypeModel.objects.filter(id=id).delete()
  96. return response.json(0)
  97. else:
  98. return response.json(444)