"""Logic module for work with asset statuses.""" import json from assets.models import asset_status from assets.models import asset_upload from assets.models import ows_product def create_status(filename, status, description, message): """Save information about asset status. Args: filename (str): Unique source asset filename. status (str): Asset processing status. description (str): Asset processing status description. message (dict): Asset status full message info. Returns: response.Response: Saved status info or error. """ asset_upload_response = asset_upload.get_asset_upload(filename) if not asset_upload_response: return asset_upload_response asset_upload_info = asset_upload_response.message return asset_status.create_asset_status( asset_upload_id=asset_upload_info['id'], status=status, description=description, message=json.dumps(message)) def get_current_status(filename, account_type=None, account_id=None): """Return the current status of processing asset. Args: filename (str): Unique source asset filename. account_type (str): Grass account type. account_id (int): Grass account id. Returns: response.Response: Asset current status info or error. """ asset_upload_response = asset_upload.get_asset_upload(filename) if not asset_upload_response: return asset_upload_response asset_upload_info = asset_upload_response.message if account_id is not None and account_type is not None: product_id = asset_upload_info['product_id'] ownership_response = ows_product.check_ownership( account_type, account_id, product_id) if not ownership_response: return ownership_response return asset_status.get_last_asset_status(asset_upload_info['id'])