"""Module that removes uploaded assets.""" from oto import response from assets.constants import asset_legacy from assets.constants import asset_types from assets.constants import error from assets.logic.legacy import asset_filename from assets.models import ows_product from assets.models import ows_track from assets.models.legacy import manage_asset from assets.models.legacy import asset_type _audio_asset_types = [asset_types.TYPE_FILE_WAV, asset_types.TYPE_FILE_MP3_192] def remove_image_asset_by_product_id(product_id): """Remove image assets by product id. Delete image belonging to product with product_id. Args: product_id (int): id of product. Returns: response.Response: Response object with success or error message. """ ows_product_details = ows_product.get_product_by_id(product_id) if not ows_product_details: return ows_product_details product_status = ows_product_details.message['status'] if product_status == asset_legacy.PRODUCT_STATUS_IN_CONTENT: return response.create_error_response( code=error.ERROR_CODE_WRONG_VALUE, message=error.ERROR_MESSAGE_PRODUCT_IN_CONTENT ) product_image_name = asset_filename.get_image_filename( ows_product_details.message, asset_types.TYPE_FILE_TIF) removing_file_names = [product_image_name] asset_type_response = asset_type.get_asset_type_by_name( asset_types.TYPE_FILE_TIF) if not asset_type_response: return asset_type_response asset_type_id = asset_type_response.message['id'] result = manage_asset.delete_assets( removing_file_names, asset_type_id) if not result: return result return response.Response({'status': error.SUCCESS_CODE}) def remove_track_asset(track_id): """Delete track asset by track unique id. Args: track_id (int): Track unique id. Returns: response.Response: Response object with success or error message. """ track_response = ows_track.get_track_by_id(track_id) if not track_response: return track_response track = track_response.message product_response = ows_product.get_product_by_id(track['product_id']) if not product_response: return product_response product = product_response.message if product['status'] == asset_legacy.PRODUCT_STATUS_IN_CONTENT: return response.create_error_response( code=error.ERROR_CODE_WRONG_VALUE, message=error.ERROR_MESSAGE_PRODUCT_IN_CONTENT ) for asset_type_name in _audio_asset_types: asset_type_response = asset_type.get_asset_type_by_name( asset_type_name) if not asset_type_response: return asset_type_response asset_type_info = asset_type_response.message track_filename = asset_filename.get_track_filename( product, track, asset_type_info['extension']) result = manage_asset.delete_assets( [track_filename], asset_type_info['id']) if not result: return result return response.Response({'status': error.SUCCESS_CODE})