def obj_create(self, bundle, **kwargs):
if not super(UploadUrlResource, self).is_valid(bundle):
raise ImmediateHttpResponse(response=self.error_response(bundle.request, bundle.errors))
log.info('Received request to create a new document upload record.')
default_key_pair = get_default_key_pair()
if not default_key_pair:
err = 'No default key pair defined.'
e = Exception(err)
e.response = HttpResponseServerError('Internal configuration error: {error}.'.format(error=err))
log.critical(err)
raise e
symmetric_key = generate_symmetric_key()
if log.isEnabledFor(DEBUG):
log.debug('Generated symmetric key for request: {key}.'.format(
key=symmetric_key
))
encrypted_symmetric_key = encrypt(symmetric_key, default_key_pair.public.key)
if log.isEnabledFor(DEBUG):
log.debug('Encrypted symmetric key for request: {key}.'.format(
key=encrypted_symmetric_key
))
current_user = bundle.request.user
if log.isEnabledFor(DEBUG):
log.debug('User for request: {user}.'.format(
user=current_user
))
document_metadata_map = bundle.data.get('document_metadata', {})
document = self.create_document(current_user, default_key_pair, document_metadata_map, encrypted_symmetric_key)
log.info('Document created for request.')
single_use_url = sign_url(document.document_id, method=PUT)
if log.isEnabledFor(DEBUG):
log.debug('Created single use URL for request: {url}.'.format(
url=single_use_url
))
upload_url = Url(document_id=document.document_id, single_use_url=single_use_url, symmetric_key=symmetric_key)
if log.isEnabledFor(DEBUG):
log.debug('Generated upload URL {upload_url} for {user}.'.format(
upload_url=upload_url,
user=current_user.username,
))
bundle.obj = upload_url
return bundle
评论列表
文章目录