"""Module that saves info about uploaded assets.""" import os from oto import response from assets import config from assets.constants import error from assets.logic.legacy import asset_received from assets.logic.legacy import import_asset from assets.models import asset_upload from assets.models import s3_file def _generate_destination_name(filename): return filename def _generate_uploaded_asset_filename(filename): return 's3://{bucket}/{filename}'.format( bucket=config.RAW_ASSETS_BUCKET_NAME, filename=filename) def post_asset( full_user_id, asset_type, upc, track_unique_id, product_id, filename, token): """Validate product owner. Save info about uploaded asset info asset_upload, art_relations and direct_delivery databases. Args: full_user_id (str): Full user id. asset_type (str): Type of asset. upc (int): UPC. track_unique_id (int): Track unique id. product_id (int): Product id. filename (str): Unique filename with extension. token (str): STS token used during upload. Returns: response.Response: Response object with success or error message. """ s3_check_result = s3_file.check_s3_file_exists( config.RAW_ASSETS_BUCKET_NAME, filename) if not s3_check_result: return s3_check_result clean_filename, ext = os.path.splitext(filename) asset_upload_result = asset_upload.get_asset_upload( clean_filename, token, full_user_id) if not asset_upload_result: return asset_upload_result asset_upload_update_result = asset_upload.update_asset_upload( clean_filename, asset_type, upc, track_unique_id, product_id, token, full_user_id) if not asset_upload_update_result: return asset_upload_update_result import_asset_response = import_asset.create_import_asset_items( full_user_id, filename, asset_type, upc, track_unique_id) if not import_asset_response: return import_asset_response create_asset_items_body = import_asset_response.message import_asset_id = create_asset_items_body['import_asset_id'] destination_name = _generate_destination_name(filename) uploaded_asset_filename = _generate_uploaded_asset_filename(filename) dd_items_response = asset_received.create_direct_delivery_items( asset_name=asset_type, import_asset_id=import_asset_id, uploaded_asset_filename=uploaded_asset_filename, upc=upc, track_unique_id=track_unique_id, destination_name=destination_name ) if not dd_items_response: return dd_items_response return response.Response({'status': error.SUCCESS_CODE})