ApplicationController.py 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD019
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2020/3/18 9:38
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: AppSetController.py
  12. @Contact: pzb3076@163.com
  13. """
  14. import requests
  15. from Ansjer.config import SERVER_TYPE
  16. from Model.models import ApplicationModel
  17. from django.views.generic.base import View
  18. from Object.RedisObject import RedisObject
  19. from Object.TokenObject import TokenObject
  20. from Service.ModelService import ModelService
  21. from Service.CommonService import CommonService
  22. from django.http import JsonResponse
  23. from django.contrib import auth
  24. import time,json
  25. from Object.ResponseObject import ResponseObject
  26. # http://192.168.136.39:8000/login/oauth/authorize
  27. # http://192.168.136.39:8000/application/query
  28. class AuthView(View):
  29. def get(self, request, *args, **kwargs):
  30. request.encoding = 'utf-8'
  31. operation = kwargs.get('operation', None)
  32. return self.validation(request.GET, operation)
  33. def post(self, request, *args, **kwargs):
  34. request.encoding = 'utf-8'
  35. operation = kwargs.get('operation', None)
  36. return self.validation(request.POST, operation)
  37. def validation(self, request_dict, operation):
  38. response = ResponseObject()
  39. token = request_dict.get('token', None)
  40. tko = TokenObject(token)
  41. if tko.code == 0:
  42. userID = tko.userID
  43. if operation == 'authorize':
  44. return self.do_authorize(request_dict, userID, response)
  45. elif operation == 'access_token':
  46. return self.do_token(request_dict, userID, response)
  47. elif operation == 'user':
  48. return self.do_user(request_dict, userID, response)
  49. else:
  50. return response.json(tko.code)
  51. else:
  52. return response.json(414)
  53. def do_authorize(self,request_dict, userID, response):
  54. state = request_dict.get("state", '')
  55. client_id = request_dict.get("client_id", '')
  56. response_type = request_dict.get("response_type", '')
  57. scope = request_dict.get("scope", '')
  58. redirect_uri = request_dict.get("redirect_uri", '')
  59. code = CommonService.encrypt_data(32)
  60. print(redirect_uri)
  61. redirect_uri = redirect_uri + '?code=' + code + '&state=' + state
  62. return response.json(0, res=redirect_uri)
  63. # 增加对code和client_id的校验代码,返回access_token和refresh_token
  64. def do_token(self,request_dict, userID, response):
  65. code = request_dict.get("code", None)
  66. client_id = request_dict.get("client_id", None)
  67. refresh_token = request_dict.get("refresh_token", None)
  68. print('refresh_token:')
  69. print(refresh_token)
  70. print('code:')
  71. print(code)
  72. print('client_id:')
  73. print(client_id)
  74. access_token = CommonService.encrypt_data(randomlength=32)
  75. refresh_token = CommonService.encrypt_data(randomlength=32)
  76. res_json = {
  77. "access_token": access_token,
  78. "token_type": "bearer",
  79. "expires_in": 3600,
  80. "refresh_token": refresh_token
  81. }
  82. print(res_json)
  83. return JsonResponse(res_json)
  84. def do_user(self, request_dict, userID, response):
  85. code = request_dict.get("code", None)
  86. client_id = request_dict.get("client_id", None)
  87. refresh_token = request_dict.get("refresh_token", None)
  88. print('refresh_token:')
  89. print(refresh_token)
  90. print('code:')
  91. print(code)
  92. print('client_id:')
  93. print(client_id)
  94. access_token = CommonService.encrypt_data(randomlength=32)
  95. refresh_token = CommonService.encrypt_data(randomlength=32)
  96. res_json ={
  97. "login": "pengzhibo168",
  98. "id": 1,
  99. "node_id": "MDQ6VXNlcjE=",
  100. "gravatar_id": "",
  101. "type": "User",
  102. "name": "monalisa octocat",
  103. "company": "asdfda",
  104. "location": "San Francisco",
  105. "email": "sadf@sadf.com",
  106. "bio": "There once was...",
  107. "public_repos": 2,
  108. "public_gists": 1,
  109. "followers": 20,
  110. "following": 0,
  111. "created_at": "2008-01-14T04:33:35Z",
  112. "updated_at": "2008-01-14T04:33:35Z"
  113. }
  114. print(res_json)
  115. return JsonResponse(res_json)
  116. class ApplicationView(View):
  117. def get(self, request, *args, **kwargs):
  118. request.encoding = 'utf-8'
  119. operation = kwargs.get('operation', None)
  120. return self.validation(request.GET, operation)
  121. def post(self, request, *args, **kwargs):
  122. request.encoding = 'utf-8'
  123. operation = kwargs.get('operation', None)
  124. return self.validation(request.POST, operation)
  125. def validation(self, request_dict, operation):
  126. response = ResponseObject()
  127. token = request_dict.get('token', None)
  128. tko = TokenObject(token)
  129. if tko.code == 0:
  130. userID = tko.userID
  131. if operation == 'query':
  132. return self.query(request_dict, userID, response)
  133. elif operation == 'add':
  134. return self.add(request_dict, userID, response)
  135. elif operation == 'update':
  136. return self.update(request_dict, userID, response)
  137. elif operation == 'delete':
  138. return self.delete(request_dict, userID, response)
  139. else:
  140. return response.json(414)
  141. def query(self, request_dict, userID, response):
  142. page = int(request_dict.get('page', 0))
  143. line = int(request_dict.get('line', 0))
  144. if page == 0:
  145. page=1
  146. if line == 0:
  147. line=10
  148. qs = ApplicationModel.objects.all()
  149. if qs.exists():
  150. count = qs.count()
  151. res = qs[(page - 1) * line:page * line]
  152. send_json = CommonService.qs_to_dict(res)
  153. send_json['count'] = count
  154. return response.json(0, send_json)
  155. return response.json(0, {'datas': [], 'count': 0})
  156. # 管理员的编辑
  157. def update(self, request_dict, userID, response):
  158. own_perm = ModelService.check_perm(userID=userID, permID=50)
  159. if own_perm is not True:
  160. return response.json(404)
  161. deviceContent = request_dict.get('content', None)
  162. id = request_dict.get('id', None)
  163. if not deviceContent or not id:
  164. return response.json(444, 'content,id')
  165. try:
  166. timestamp = int(time.time())
  167. deviceData = json.loads(deviceContent)
  168. uid_set = ApplicationModel.objects.filter(id=id)
  169. if uid_set.exists():
  170. uid_set.update(updTime=timestamp, **deviceData)
  171. return response.json(0)
  172. else:
  173. return response.json(173)
  174. except Exception:
  175. errorInfo = traceback.format_exc()
  176. print(errorInfo)
  177. return response.json(500, {'details': errorInfo})
  178. def delete(self, request_dict, userID, response):
  179. own_perm = ModelService.check_perm(userID=userID, permID=10)
  180. if own_perm is not True:
  181. return response.json(404)
  182. id_list = request_dict.getlist('id', None)
  183. if not id_list:
  184. return response.json(444, 'id must list')
  185. try:
  186. for id in id_list:
  187. ApplicationModel.objects.filter(id=id).delete()
  188. except Exception as e:
  189. errorInfo = traceback.format_exc()
  190. print(errorInfo)
  191. return response.json(424, {'details': repr(e)})
  192. else:
  193. return response.json(0)