""" Release Logic ============= This logic calls to VAPI and handles responses for releases """ from labelaudit.connectors import api_client as api_connector from labelaudit.logic.result import Result def fetch_orchard_upc(release_id): """Fetches an orchard release upc by release_id Args: release_id (int): ID of the audit record for which to set releases Return: labelaudit.logic.result.Result: object representing the outcome. The message object contained in the result is a upc """ audit_params = {'release_id': release_id} response = api_connector.get_client().get( '/vectorapi/release/get', params=audit_params) response_body = response.json() release_response = response_body.get('release') or {} result = Result(status=response.status_code) if response.status_code == 200: result.message = release_response.get('display_upc') else: result.errors = response_body.get('fault') return result def fetch_ioda_upc(release_id): """Fetches an ioda release upc by release_id Args: release_id (int): ID of the audit record for which to set releases Return: labelaudit.logic.result.Result: object representing the outcome. The message object contained in the result is a upc """ audit_params = {'orchardReleaseId': release_id} response = api_connector.get_client().get( '/vectorapi/iodareleasemapping', params=audit_params) response_body = response.json() release_response_list = response_body.get('iodaReleaseMappings') or {} result = Result(status=response.status_code) if response.status_code == 200: # take first result if multiple results if len(release_response_list) > 0: release_response = release_response_list[0] result.message = release_response.get('iodaUpc') else: result.message = None else: result.errors = response_body.get('fault') return result