"""Application.""" from time import sleep from src import config from src.exceptions import ApproveRequestBlockedException from src.exceptions import NotSubmittedException from src.exceptions import OwsRequestException from src.log import log from src.logic import file_parsing from src.logic import ows def main(): """Run.""" result = {'approved_ids': [], 'errors': []} log.debug('Starting Script') product_ids = file_parsing.get_product_ids_from_csv(config.FILEPATH) log.info(f'Running for {len(product_ids)} unique product ID(s)') log.debug(f'Product IDs: {product_ids}') for product_id in product_ids: if config.APPROVAL_SLEEP_INTERVAL: sleep(config.APPROVAL_SLEEP_INTERVAL) try: log.debug(f'Requesting submission details for id {product_id}') review_queue_id = ows.get_review_queue_id_by_product_id(product_id) log.debug(f'Found review queue id {review_queue_id} for ID {product_id}') ows.approve_by_id(review_queue_id) log.debug(f'Approved ID {product_id}') result['approved_ids'].append(product_id) except NotSubmittedException: result['errors'].append((product_id, 'Product not currently submitted.')) except ApproveRequestBlockedException as e: result['errors'].append( (product_id, f'Approval was blocked with response: {e.args[0]}')) except OwsRequestException as e: result['errors'].append( (product_id, f'Failed to call {e.args[0]} endpoint with error: {e.args[1]}')) log.info(('Approved IDs: ', result['approved_ids'])) for error in result['errors']: log.error(f'Product ID {error[0]}: {error[1]}') log.debug('Exiting Script') return result if __name__ == '__main__': main()