Test.py 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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 django.contrib import auth
  18. from django.http import HttpResponseRedirect
  19. '''
  20. http://192.168.136.40:8077/Test
  21. '''
  22. import json
  23. import requests
  24. from Service.ModelService import ModelService
  25. from django.middleware.csrf import get_token
  26. from django.http import JsonResponse
  27. from ratelimit.decorators import ratelimit
  28. from Object.ResponseObject import ResponseObject
  29. from Object.TokenObject import TokenObject
  30. from Object.RedisObject import RedisObject
  31. from django.shortcuts import render_to_response, render, redirect
  32. import paypalrestsdk
  33. from django.http import HttpResponseRedirect, HttpResponse
  34. # 测试接口sdk
  35. class Test(View):
  36. '''
  37. limit=10:指定返回记录的数量
  38. offset=10:指定返回记录的开始位置。
  39. page=2&per_page=100:指定第几页,以及每页的记录数。
  40. sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
  41. animal_type_id=1:指定筛选条件
  42. '''
  43. @method_decorator(csrf_exempt)
  44. def dispatch(self, *args, **kwargs):
  45. return super(Test, self).dispatch(*args, **kwargs)
  46. def get(self, request, *args, **kwargs):
  47. return self.updatePrimaryMaster()
  48. # 增加
  49. def post(self, request, *args, **kwargs):
  50. response = ResponseObject()
  51. return response.json(0)
  52. def updatePrimaryMaster(self):
  53. from Model.models import Device_Info, Device_User
  54. qs = Device_Info.objects.filter(isShare=True, primaryMaster='').values('primaryUserID', 'id')
  55. for i in qs:
  56. user_qs = Device_User.objects.filter(userID=i['primaryUserID'])
  57. if user_qs:
  58. is_update = Device_Info.objects.filter(id=i['id']).update(primaryMaster=user_qs[0].username)
  59. print(is_update)
  60. return HttpResponse(status=200, content='1234')
  61. def ossCrd(self):
  62. '''
  63. 生成sts上传授权
  64. '''
  65. from aliyunsdkcore import client
  66. from aliyunsdksts.request.v20150401 import AssumeRoleRequest
  67. import json
  68. import oss2
  69. # Endpoint以杭州为例,其它egion请按实际情况填写。
  70. endpoint = 'oss-cn-shenzhen.aliyuncs.com'
  71. # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  72. # access_key_id = 'LTAIXSozepSx81xe'
  73. # access_key_secret = '19BlxRiAHDPLx4mhz6vQZRuhK0eKed'
  74. access_key_id = 'LTAIyMkGfEdogyL9'
  75. access_key_secret = '71uIjpsqVOmF7DAITRyRuc259jHOjO'
  76. bucket_name = 'cloudvod1'
  77. # role_arn是角色的资源名称。
  78. role_arn = 'acs:ram::1901342792446414:role/stsoss'
  79. clt = client.AcsClient(access_key_id, access_key_secret, 'cn-shenzhen')
  80. req = AssumeRoleRequest.AssumeRoleRequest()
  81. # 设置返回值格式为JSON。
  82. req.set_accept_format('json')
  83. req.set_RoleArn(role_arn)
  84. req.set_RoleSessionName('chanjunkai')
  85. req.set_DurationSeconds(3600)
  86. policys = {
  87. "Version": "1",
  88. "Statement": [
  89. {
  90. "Action": [
  91. "oss:PutObject",
  92. "oss:DeleteObject",
  93. ],
  94. "Resource": ["acs:oss:*:*:cloudvod1/*"],
  95. "Effect": "Allow",
  96. "Condition": {
  97. "IpAddress": {
  98. "acs:SourceIp": "120.237.157.184"
  99. }
  100. }
  101. }
  102. ]
  103. }
  104. req.set_Policy(Policy=json.dumps(policys))
  105. body = clt.do_action(req)
  106. # body = clt.do_action_with_exception(req)
  107. # 使用RAM账号的AccessKeyId和AccessKeySecret向STS申请临时token。
  108. token = json.loads(body)
  109. print(token)
  110. res = {
  111. 'AccessKeyId': token['Credentials']['AccessKeyId'],
  112. 'AccessKeySecret': token['Credentials']['AccessKeySecret'],
  113. 'SecurityToken': token['Credentials']['SecurityToken'],
  114. 'Expiration': token['Credentials']['Expiration'],
  115. 'expire': '3600',
  116. 'endpoint': endpoint,
  117. 'bucket_name': bucket_name,
  118. 'arn': token['AssumedRoleUser']['Arn']
  119. }
  120. return JsonResponse(status=200, data=res)
  121. def qiniutokentest(self):
  122. # flake8: noqa
  123. from qiniu import Auth
  124. # 需要填写你的 Access Key 和 Secret Key
  125. access_key = 'dwdHw1pQ9wFNiHDdflBUiZyWmiLppd5VCC2yF0O_'
  126. secret_key = 'uTn7hdKD9Mbf2dzMWjLj2e9V1nXN7HAsOGRKwqDF'
  127. # 构建鉴权对象
  128. q = Auth(access_key, secret_key)
  129. # 要上传的空间
  130. bucket_name = 'test'
  131. # 上传到七牛后保存的文件名
  132. key = '/*'
  133. # 生成上传 Token,可以指定过期时间等
  134. # 上传策略示例
  135. # https://developer.qiniu.com/kodo/manual/1206/put-policy
  136. policy = {
  137. # 'callbackUrl':'https://requestb.in/1c7q2d31',
  138. # 'callbackBody':'filename=$(fname)&filesize=$(fsize)'
  139. # 'persistentOps':'imageView2/1/w/200/h/200'
  140. }
  141. # 3600为token过期时间,秒为单位。3600等于一小时
  142. token = q.upload_token(bucket_name, key, 3600, policy)
  143. print(token)
  144. return HttpResponse(content=token, status=200)
  145. def paypaytest(self, request):
  146. '''
  147. :param request:
  148. :param args:
  149. :param kwargs:
  150. :return:
  151. '''
  152. response = ResponseObject()
  153. # return response.json(0)
  154. paymentId = request.GET.get('paymentId', None)
  155. PayerID = request.GET.get('PayerID', None)
  156. if paymentId and PayerID:
  157. paypalrestsdk.configure({
  158. "mode": "sandbox", # sandbox or live
  159. "client_id": "AfnfDqezODOoWGS-W2Itu-Zl1ay1R95IsGlMqPghPA3KGhkPndNMnQT0bdEewvSv92XAFIfLiinmyhBL",
  160. "client_secret": "EErLskwYA1xXY3890mHx5OhzgK83B2rNc57zIozGNyKc8i6RJuhPTF9WyhhdZgyDEih0heo1MH9Jk1lj"
  161. })
  162. # ID of the payment. This ID is provided when creating payment.
  163. payment = paypalrestsdk.Payment.find(paymentId)
  164. payres = payment.execute({"payer_id": PayerID})
  165. print(payres)
  166. if payres:
  167. print("Payment execute successfully")
  168. else:
  169. print(payment.error) # Error Hash
  170. return response.json(0)
  171. else:
  172. pass
  173. paypalrestsdk.configure({
  174. "mode": "sandbox", # sandbox or live
  175. "client_id": "AfnfDqezODOoWGS-W2Itu-Zl1ay1R95IsGlMqPghPA3KGhkPndNMnQT0bdEewvSv92XAFIfLiinmyhBL",
  176. "client_secret": "EErLskwYA1xXY3890mHx5OhzgK83B2rNc57zIozGNyKc8i6RJuhPTF9WyhhdZgyDEih0heo1MH9Jk1lj"})
  177. payment = paypalrestsdk.Payment({
  178. "intent": "sale",
  179. "payer": {
  180. "payment_method": "paypal"},
  181. "redirect_urls": {
  182. # "return_url": "http://192.168.136.45:3000/payment/execute",
  183. "return_url": "http://192.168.136.40:8077/Test",
  184. "cancel_url": "http://localhost:3000/"},
  185. "transactions": [{
  186. "item_list": {
  187. "items": [{
  188. "name": "item",
  189. "sku": "item",
  190. "price": "5.00",
  191. "currency": "USD",
  192. "quantity": 1}]},
  193. "amount": {
  194. "total": "5.00",
  195. "currency": "USD"},
  196. "description": "This is the payment transaction description."}]})
  197. if payment.create():
  198. print("Payment created successfully")
  199. else:
  200. print(payment.error)
  201. print(payment)
  202. for link in payment.links:
  203. if link.rel == "approval_url":
  204. # Convert to str to avoid Google App Engine Unicode issue
  205. # https://github.com/paypal/rest-api-sdk-python/pull/58
  206. approval_url = str(link.href)
  207. print("Redirect for approval: %s" % (approval_url))
  208. return HttpResponseRedirect(approval_url)
  209. # 修改 资源改变
  210. def put(self, request):
  211. response = ResponseObject()
  212. return response.json(0)
  213. # 修改 属性改变
  214. def PATCH(self, request):
  215. response = ResponseObject()
  216. return response.json(0)
  217. # 删除
  218. def delete(self, request):
  219. response = ResponseObject()
  220. return response.json(0)
  221. def validation(self, request_dict, *args, **kwargs):
  222. response = ResponseObject()
  223. return response.json(0)