from django.views.generic.base import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from Service.ModelService import ModelService from Model.models import FeedBackModel, StatResModel from django.utils import timezone import traceback from Object.ResponseObject import ResponseObject from Object.TokenObject import TokenObject from Service.CommonService import CommonService import oss2 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET import time class FeedBackView(View): def get(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) return self.validation(request.GET, operation) def post(self, request, *args, **kwargs): request.encoding = 'utf-8' operation = kwargs.get('operation', None) return self.validation(request.POST, operation) def validation(self, request_dict, operation): response = ResponseObject() token = request_dict.get('token', None) tko = TokenObject(token) if tko.code == 0: userID = tko.userID if operation == 'add': return self.do_add(userID, request_dict, response) elif operation == 'getUploadUrl': return self.do_get_upload_url(request_dict, response) else: return response.json(414) else: return response.json(tko.code) def do_add(self, userID, request_dict, response): content = request_dict.get('content', None) # urls = return def do_get_upload_url(self, request_dict, response): uploadType = request_dict.get('uploadType', None) nowTime = int(time.time()) if uploadType: StatResModel.objects.create() auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET) bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres') name = CommonService.createOrderID() obj = str(name) + '.' + uploadType create_data = { 'addTime': nowTime, 'name': obj } try: FeedBackModel.objects.create(**create_data) except Exception as e: print(repr(e)) return response.json(178) else: # 设置此签名URL在60秒内有效。 url = bucket.sign_url('PUT', obj, 7200) return response.json(0, url) else: return response.json(444, 'uploadType')