"""Module that provides generation of upload data.""" import uuid from oto import response from assets import config from assets.models import asset_upload as asset_upload_model from assets.models import token def _generate_filename(): unique_name = uuid.uuid4() underscored_name = str(unique_name).replace('-', '_') return underscored_name def get_upload_permission(user_id): """Function that generates data required for asset upload. Args: user_id (string): User id Returns: response.Response: Contains information for uploading or error. """ if not user_id: return response.create_error_response( 'user_required', 'User is required') filename = _generate_filename() credentials = token.get_s3_token(filename) if not credentials: return credentials asset_upload = asset_upload_model.create_asset_upload( user_id, filename, credentials.message.get('token')) if not asset_upload: return asset_upload permission = { 'bucket': config.RAW_ASSETS_BUCKET_NAME, 'filename': filename, 'credentials': credentials.message } return response.Response(permission)