"""Event utils.""" from lib import constants from lib.abacus_event import AbacusEvent def get_abacus_event(*args, **kwargs): """Instantiate an AbacusEvent sent from either the API or UI.""" config = kwargs.get('params', {}) if not config and hasattr(args[0], 'conf'): config = args[0].conf return AbacusEvent(**config) def validate_event_for_handler(event, **kwargs): """Validate an event intended to by used by an event handler task.""" assert event.abacus_event_id, 'Event ID missing' assert not event.rolled_back_at, ( f'Event {event.abacus_event_id} has been rolled back.' ) target_type = kwargs.get('target_type') if target_type: assert event.target_type == target_type, \ constants.ERROR_UNEXPECTED_EVENT.format( field='target_type', expected=target_type, actual=event.target_type ) event_name = kwargs.get('event_name') if event_name: assert event.event_name == event_name, \ constants.ERROR_UNEXPECTED_EVENT.format( field='event_name', expected=event_name, actual=event.event_name ) event_names = kwargs.get('event_names') if event_names: error_message = constants.ERROR_UNEXPECTED_EVENT.format( field='event_name', expected=event_names, actual=event.event_name ) assert event.event_name in event_names, error_message