"""Logic.""" from content_utils.exceptions import IneligibleEventError from content_utils.exceptions import InvalidMessageException from owsrequest import request from src import config RESOLUTION_TO_URL_MAP = { 'approve': 'approval', 'reject': 'rejection' } def process_event(event): """Process event.""" assert event['resolution'] in RESOLUTION_TO_URL_MAP, event return complete_product_review( event['review_queue_id'], RESOLUTION_TO_URL_MAP[event['resolution']], event['user_uuid'], event['created_datetime'], event.get('note'), event.get('will_not_deliver', False) ) def complete_product_review( review_queue_id, resolution, user_uuid, created_datetime, note, will_not_deliver ): """Complete product review.""" data = {'user_id': user_uuid, 'created_datetime': created_datetime} if note: data['note'] = note if will_not_deliver: data['will_not_deliver'] = will_not_deliver save_in_ows(review_queue_id, resolution, data) return resolution def save_in_ows(review_queue_id, endpoint, data): """Save review result in ows-product-review.""" result = request.process( config.APPLICATION_NAME, config.ENVIRONMENT, 'POST', 'ows-product-review', f'/review-queue/{review_queue_id}/{endpoint}', json=data ) if result.status_code != 200: if result.status_code == 400 and \ result.json().get('message') == 'Cannot update completed review queue item': raise IneligibleEventError('Already completed') raise InvalidMessageException(result.text)