"""OWS Logic.""" from owsrequest import request from src import config from src.exceptions import ApproveRequestBlockedException from src.exceptions import NotSubmittedException from src.exceptions import OwsRequestException from src.log import log def get_product_submission(product_id): """Get most recent product submission by product id.""" result = request.process( config.APPLICATION_NAME, config.ENVIRONMENT, 'GET', 'ows-product-review', '/review-queue', params={'product_id': product_id, 'page_limit': 1} ) log.debug(f'Review queue response: status={result.status_code} content={result.text}') if result.status_code != 200: raise OwsRequestException('review queue', result.text) return result.json() def get_review_queue_id_by_product_id(product_id): """Get the current product submission if it exists.""" current_submission = get_product_submission(product_id) if not current_submission['items']: raise NotSubmittedException(product_id) return current_submission['items'][0].get('review_queue_id') def approve_by_id(review_queue_id): """Approve a product by review queue id.""" result = request.process( config.APPLICATION_NAME, config.ENVIRONMENT, 'POST', 'ows-product-review', f'/approve/{review_queue_id}', json={ 'note': config.APPROVAL_NOTE, 'canned_response_id': config.BULK_APPROVAL_CANNED_RESPONSE, # remove after spotify_watchlist_feature complete # noqa: E501 'canned_response_ids': [config.BULK_APPROVAL_CANNED_RESPONSE] }, headers=config.APPROVAL_HEADERS ) log.debug(f'Approval response: status={result.status_code} content={result.text}') if result.status_code > 400: raise OwsRequestException('approve', result.text) if result.status_code == 400: raise ApproveRequestBlockedException(result.json())