UIDPreview.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2019/5/13 17:35
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: UIDPreview.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. # !/usr/bin/env python3
  15. # -*- coding: utf-8 -*-
  16. """
  17. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  18. @AUTHOR: ASJRD018
  19. @NAME: AnsjerFormal
  20. @software: PyCharm
  21. @DATE: 2018/12/6 10:53
  22. @Version: python3.6
  23. @MODIFY DECORD:ansjer dev
  24. @file: OrderContrller.py
  25. @Contact: chanjunkai@163.com
  26. """
  27. import time
  28. import oss2
  29. from django.views.generic.base import View
  30. from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
  31. from Model.models import UID_Preview, Device_Info
  32. from Object.ResponseObject import ResponseObject
  33. from Object.TokenObject import TokenObject
  34. '''
  35. # 获取所有设备下单信息
  36. http://192.168.136.40:8077/order/querylist?token=local&page=1&line=10
  37. '''
  38. # 设备信息添加
  39. class UIDPreview(View):
  40. def get(self, request, *args, **kwargs):
  41. request.encoding = 'utf-8'
  42. operation = kwargs.get('operation')
  43. return self.validation(request.GET, request, operation)
  44. def post(self, request, *args, **kwargs):
  45. request.encoding = 'utf-8'
  46. operation = kwargs.get('operation')
  47. return self.validation(request.POST, request, operation)
  48. def validation(self, request_dict, request, operation):
  49. response = ResponseObject()
  50. token = request_dict.get('token', None)
  51. # 设备主键uid
  52. tko = TokenObject(token)
  53. if tko.code == 0:
  54. response.lang = tko.lang
  55. userID = tko.userID
  56. if operation == 'add':
  57. return self.do_add(userID, request_dict, response)
  58. # if operation == 'query':
  59. # return self.do_query(userID, request_dict, response)
  60. else:
  61. return response.json(414)
  62. else:
  63. return response.json(tko.code)
  64. def do_add(self, userID, request_dict, response):
  65. nowTime = int(time.time())
  66. uid = request_dict.get('uid', None)
  67. channel = request_dict.get('channel', None)
  68. if all([uid, channel]):
  69. # auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  70. # bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
  71. auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
  72. bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')
  73. dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID)
  74. upqs = UID_Preview.objects.filter(uid=uid, channel=channel)
  75. if dvqs.exists():
  76. if upqs.exists():
  77. try:
  78. is_update = upqs.update(updTime=nowTime)
  79. except Exception as e:
  80. print(repr(e))
  81. return response.json(177)
  82. else:
  83. if is_update:
  84. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  85. # 设置此签名URL在60秒内有效。
  86. url = bucket.sign_url('PUT', obj, 7200)
  87. return response.json(0, url)
  88. else:
  89. return response.json(177)
  90. else:
  91. create_data = {
  92. 'addTime': nowTime,
  93. 'updTime': nowTime,
  94. 'uid': uid,
  95. 'channel': channel
  96. }
  97. try:
  98. UID_Preview.objects.create(**create_data)
  99. except Exception as e:
  100. print(repr(e))
  101. return response.json(178)
  102. else:
  103. obj = 'uid_preview/{uid}/channel_{channel}.png'.format(uid=uid, channel=channel)
  104. # 设置此签名URL在60秒内有效。
  105. url = bucket.sign_url('PUT', obj, 7200)
  106. return response.json(0, url)
  107. else:
  108. return response.json(14)
  109. else:
  110. return response.json(444, 'uid,channel')