Working on event session, presentation, and presenter create and update.

This commit is contained in:
Scott Idem
2021-08-23 16:06:49 -04:00
parent bbf5d3e2bc
commit 13c2375727
8 changed files with 324 additions and 52 deletions

View File

@@ -139,29 +139,128 @@ def load_event_presentation_obj(
return False
return event_presentation_obj
# ### END ### API Event Presentation Methods ### load_event_presentation_obj() ###
# ### BEGIN ### API Event Presentation Methods ### get_event_id_w_event_session_id() ###
# Updated 2021-08-23
def get_event_id_w_event_session_id(
event_session_id: int|str,
) -> bool|None:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass
else: return False
data = {}
data['event_session_id'] = event_session_id
sql = f"""
SELECT `event_session`.id AS 'event_session_id', `event_session`.id_random AS 'event_session_id_random', `event_session`.event_id AS event_id
FROM `event_session` AS `event_session`
WHERE `event_session`.id = :event_session_id
LIMIT 1;
"""
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
if event_session_data_result := sql_select(data=data, sql=sql):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_session_data_result)
if event_id := event_session_data_result.get('event_id', None): return event_id
else: return False
else: return None
# ### END ### API Event Presentation Methods ### get_event_id_w_event_session_id() ###
# ### BEGIN ### API Event Presentation Methods ### create_event_presentation_obj() ###
# Updated 2021-08-21
def create_event_presentation_obj(
event_session_id: int|str,
event_presentation_obj_new: Event_Presentation_Base,
event_id: int|str = None, # If None then need to look up from event_session_id
create_sub_obj: bool = False,
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
) -> bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_id := event_presentation_obj_new.event_id: pass
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass
else:
log.error('Event ID is required')
# from app.methods.event_session_methods import get_event_id_w_event_session_id
if event_id := get_event_id_w_event_session_id(event_session_id): pass
else: return event_id # False or None
if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass
else: return False
# if event_id := event_presentation_obj_new.event_id: pass
# else:
# log.error('Event ID is required')
# return False
# if event_session_id := event_presentation_obj_new.event_session_id: pass
# else:
# log.error('Event Session ID is required')
# return False
log.debug(type(event_presentation_obj_new))
if isinstance(event_presentation_obj_new, dict):
try:
event_presentation_obj_new = Event_Presentation_Base(**event_presentation_obj_new)
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_presentation_obj_new)
except ValidationError as e:
log.error(e.json())
return False
event_presentation_obj_new.event_id = event_id
event_presentation_obj_new.event_session_id = event_session_id
event_presentation_obj_data = event_presentation_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'event_presenter', 'event_presenter_list', 'created_on', 'updated_on'})
log.debug(event_presentation_obj_data)
if event_presentation_obj_in_result := sql_insert(data=event_presentation_obj_data, table_name='event_presentation', rm_id_random=True, id_random_length=8): pass
else:
log.warning(f'Event Presentation not created.')
log.debug(event_presentation_obj_in_result)
return False
if event_session_id := event_presentation_obj_new.event_session_id: pass
event_presentation_id = event_presentation_obj_in_result
return_dict = {}
return_dict['event_presentation_id'] = None
return_dict['event_presenter_list'] = []
if event_presentation_obj_new.event_presenter_list and isinstance(event_presentation_obj_new.event_presenter_list, list):
for event_presenter_obj_new in event_presentation_obj_new.event_presenter_list:
# NOTE: This does not account for an edge case where the presenter already exists. Possibly as part of another presentation.
if create_event_presenter_obj_result := create_event_presenter_obj(
event_presentation_id = event_presentation_id,
event_presenter_obj_new = event_presenter_obj_new,
create_sub_obj = create_sub_obj,
fail_any = fail_any,
):
if isinstance(create_event_presenter_obj_result, int):
event_presenter_id = create_event_presenter_obj_result
log.info(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not created. Event Presentation ID: {event_presentation_id}')
log.debug(create_event_presenter_obj_result)
event_presenter_id = None
if fail_any: return False
else:
log.warning(f'Event Presenter not created. Event Presentation ID: {event_presentation_id}')
log.debug(create_event_presenter_obj_result)
event_presenter_id = None
if fail_any: return False
return_dict['event_presenter_list'].append(event_presenter_id)
else:
log.error('Event Session ID is required')
return False
log.info('Event presenter list not found')
pass
log.info(f'The event presentation has been created. Event Presentation ID: {event_presentation_id}')
return event_presentation_id
# ### END ### API Event Presentation Methods ### create_event_presentation_obj() ###
@@ -173,12 +272,22 @@ def update_event_presentation_obj_exist(
create_sub_obj: bool = False,
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
) -> bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_presentation_id := redis_lookup_id_random(record_id_random=event_presentation_id, table_name='event_presentation'): pass
else: return False
log.debug(type(event_presentation_obj_exist))
if isinstance(event_presentation_obj_exist, dict):
try:
event_presentation_obj_exist = Event_Presentation_Base(**event_presentation_obj_exist)
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_presentation_obj_exist)
except ValidationError as e:
log.error(e.json())
return False
# Can't update the event_presentation_id alias if the .id was never set.
# event_presentation_obj_exist.event_presentation_id = event_presentation_id
if not event_presentation_obj_exist.id:
@@ -197,10 +306,64 @@ def update_event_presentation_obj_exist(
return_dict['event_presentation_id'] = event_presentation_id
return_dict['event_presenter_list'] = []
if event_presentation_obj_exist.event_presenter_list and isinstance(event_presentation_obj_exist.event_presenter_list, list):
for event_presenter_obj_unknown in event_presentation_obj_exist.event_presenter_list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_presenter_obj_unknown)
if event_presenter_id := event_presenter_obj_unknown.get('event_presenter_id_random', None):
if update_event_presenter_obj_result := update_event_presenter_obj_exist(
event_presenter_id = event_presenter_id,
event_presenter_obj_exist = event_presenter_obj_unknown,
create_sub_obj = create_sub_obj,
fail_any = fail_any,
):
event_presenter_id = update_event_presenter_obj_result
log.info(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not updated. Event Presentation ID: {event_presentation_id}')
log.debug(update_event_presenter_obj_result)
event_presenter_id = None
if fail_any: return False
if isinstance(update_event_presenter_obj_result, int):
event_presenter_id = update_event_presenter_obj_result
log.info(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not updated. Event Presentation ID: {event_presentation_id}')
log.debug(update_event_presenter_obj_result)
event_presenter_id = None
if fail_any: return False
else:
log.info(f'No Event Presenter ID found.')
if create_event_presenter_obj_result := create_event_presenter_obj(
event_presentation_id = event_presentation_id,
event_presenter_obj_new = event_presenter_obj_unknown,
create_sub_obj = create_sub_obj,
fail_any = fail_any,
):
if isinstance(create_event_presenter_obj_result, int):
event_presenter_id = create_event_presenter_obj_result
log.info(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not created. Event Presentation ID: {event_presentation_id}')
log.debug(create_event_presenter_obj_result)
event_presenter_id = None
if fail_any: return False
else:
log.warning(f'Event Presenter not created. Event Presentation ID: {event_presentation_id}')
log.debug(create_event_presenter_obj_result)
event_presenter_id = None
if fail_any: return False
return_dict['event_presenter_list'].append(event_presenter_id)
else:
log.info('Event presenter list not found or not in a list.')
pass
return False
# log.info(f'Returning the updated event_presentation_id: {event_presentation_id}')
# return event_presentation_id
log.info(f'The event presentation has been updated. Event Presentation ID: {event_presentation_id}')
return True
# ### END ### API Event Presentation Methods ### update_event_presentation_obj_exist() ###