Test.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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: Ansjer
  7. @software: PyCharm
  8. @DATE: 2018/5/22 13:58
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: Test.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. from django.views.generic.base import View
  15. from django.utils.decorators import method_decorator
  16. from django.views.decorators.csrf import csrf_exempt
  17. # from Ansjer.settings import *
  18. from Service.TokenManager import *
  19. from django.contrib import auth
  20. from django.http import HttpResponseRedirect
  21. '''
  22. http://192.168.136.40:8077/Test
  23. '''
  24. import json
  25. from Service.ResponseService import *
  26. import requests
  27. from Service.ModelService import ModelService
  28. from django.middleware.csrf import get_token
  29. from django.http import JsonResponse
  30. from ratelimit.decorators import ratelimit
  31. @ratelimit(key='ip', rate='1/m')
  32. def RqTest(request):
  33. was_limited = getattr(request,'limited', False)
  34. var_dump(was_limited)
  35. return ResponseJSON(0)
  36. class Test(View):
  37. '''
  38. limit=10:指定返回记录的数量
  39. offset=10:指定返回记录的开始位置。
  40. page=2&per_page=100:指定第几页,以及每页的记录数。
  41. sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
  42. animal_type_id=1:指定筛选条件
  43. '''
  44. @method_decorator(csrf_exempt)
  45. def dispatch(self, *args, **kwargs):
  46. return super(Test, self).dispatch(*args, **kwargs)
  47. @ratelimit(key='ip', rate='1/m')
  48. # 查询
  49. def get(self, request, *args, **kwargs):
  50. was_limited = getattr(request, 'limited', False)
  51. var_dump(was_limited)
  52. return ResponseJSON(0)
  53. post_data = {
  54. 'code': request.GET.get('code', None),
  55. 'client_id': 'co',
  56. 'client_secret': 'co',
  57. 'grant_type': 'authorization_code',
  58. 'redirect_uri': 'http://192.168.136.40:8077/Test/',
  59. }
  60. res = requests.post(url='http://192.168.136.40:9898/o/token/', data=post_data)
  61. print(res.content)
  62. if res.status_code == 200:
  63. json_data = json.loads(res.content)
  64. access_token= json_data.get('access_token',None)
  65. print(access_token)
  66. if access_token is not None:
  67. get_data = {
  68. 'access_token':access_token
  69. }
  70. ser = requests.get(url='http://192.168.136.40:9898/accounts/user/',data=get_data)
  71. if ser.status_code == 200:
  72. ser_data = json.loads(ser.content)
  73. print(ser_data)
  74. username =ser_data.get('username',None)
  75. if username is not None:
  76. userValid = Device_User.objects.filter(username=username)
  77. mCode=1324
  78. userID=userValid[0].userID
  79. authtoken_Obj = AuthToken_Token.objects.filter(tokenID_id=userID)
  80. if authtoken_Obj.exists():
  81. tokenManager = JSONTokenManager()
  82. access_token = tokenManager.deToken(authtoken_Obj[0].access_token)
  83. refresh_token = tokenManager.deToken(authtoken_Obj[0].refresh_token)
  84. else:
  85. access_token = False
  86. refresh_token = False
  87. if access_token is not False and refresh_token is not False:
  88. resultDict = {'result': {'access_token': access_token, 'refresh_token': refresh_token},
  89. 'error_code': 0}
  90. else:
  91. JSON = json.dumps({'userID': userID, 'mCode': mCode}, ensure_ascii=False)
  92. tokenManager = JSONTokenManager()
  93. tokenJSON = tokenManager.generate_AToken(JSON=JSON, iCode=tokenManager.getSalt(strLen=8))
  94. resultDict = json.loads(tokenJSON)
  95. error_code = resultDict.get('error_code', None)
  96. if error_code != None and error_code == 0:
  97. result = resultDict.get('result', None)
  98. if result != None:
  99. import datetime
  100. now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
  101. userValid.update(last_login=now_time, online=True, machine_code=mCode)
  102. role_dict = ModelService.own_role(userID=userID)
  103. result['rid'] = role_dict['rid']
  104. result['roleName'] = role_dict['roleName']
  105. result['permList'] = ModelService.own_permission(userID)
  106. result['username'] = username
  107. # response = HttpResponseRedirect('http://192.168.136.39:8020/ansjer/html/main.html?access_token={}&refresh_token={}&rid={}&roleName={}&permList={}'.format(result['access_token'],result['refresh_token'],result['rid'],result['roleName'],result['permList']))
  108. response = HttpResponseRedirect('http://192.168.136.39:8020/ansjer/html/main.html')
  109. response.set_cookie('username', username, 7200)
  110. response.set_cookie('access_token', result['access_token'], 7200)
  111. response.set_cookie('refresh_token', result['refresh_token'], 7200)
  112. response.set_cookie('rid', result['rid'], 7200)
  113. response.set_cookie('roleName', result['roleName'], 7200)
  114. response.set_cookie('permList', result['permList'], 7200)
  115. return response
  116. response = HttpResponse(ResponseFormal(0, result, language='cn'))
  117. response.set_cookie('username', username, 7200)
  118. return response
  119. return ResponseJSON(0, ser_data)
  120. # 增加
  121. def post(self, request, *args, **kwargs):
  122. json_data = json.loads(request.body.decode("utf-8"))
  123. '''
  124. token = get_token(request)
  125. return JsonResponse({'token': token})
  126. '''
  127. return ResponseJSON(0, {'test': json_data})
  128. # 修改 资源改变
  129. def put(self, request):
  130. return ResponseJSON(404)
  131. # 修改 属性改变
  132. def PATCH(self, request):
  133. return ResponseJSON(404)
  134. # 删除
  135. def delete(self, request):
  136. return ResponseJSON(404)
  137. def validation(self, request_dict, *args, **kwargs):
  138. return ResponseJSON(404)