"""Event handling logic.""" from kafka_utils.exceptions import IneligibleEventException from src.config import SKIP_QUEUE_MOVE_HISTORY_IDS from src.logic.event_message import QueueMoveHistoryEventMessage from src.logic.notification import move_target_notify_de_escalation from src.logic.notification import move_target_notify_escalation from src.logic.product import get_product_info from src.logic.review_queue_item import get_review_queue_item def processing_logic(message, json_deserializer): """Process msk event.""" event = QueueMoveHistoryEventMessage( message.value, message.topic, value_deserializer=json_deserializer ) if not event.moved_to_target_email: raise IneligibleEventException('skip operation: null moved_to_target_email') if event.queue_move_history_id in SKIP_QUEUE_MOVE_HISTORY_IDS: raise IneligibleEventException('skip operation: ineligible queue_move_history_id') is_escalation = bool(event.queue_name == 'escalation') is_de_escalation = bool( event.previous_queue_name == 'escalation' and event.queue_name != 'escalation') if not is_escalation and not is_de_escalation: raise IneligibleEventException( f'skip operation: move to {event.queue_name} queue from {event.previous_queue_name}') item = get_review_queue_item(event.review_queue_id) product_id = item['product_id'] product_data = get_product_info(product_id) if is_escalation: request_data = { **product_data, 'review_queue_id': event.review_queue_id, 'moved_to_target_email': event.moved_to_target_email, 'moved_by_user_name': item['moved_by_user_name'], 'target_group': item['target_group'], 'escalation_type': item['escalation_type'], 'move_note': item['move_note'] } move_target_notify_escalation(product_id, request_data) elif is_de_escalation: request_data = { **product_data, 'review_queue_id': event.review_queue_id, 'moved_to_target_email': event.moved_to_target_email, 'escalation_type': item['escalation_type'], 'move_note': item['move_note'] } move_target_notify_de_escalation(product_id, request_data)