Work on Impexium, exhibit, and badge related

This commit is contained in:
Scott Idem
2022-02-23 18:34:21 -05:00
parent 5a84119c77
commit 18d8b73eb3
10 changed files with 489 additions and 346 deletions

View File

@@ -8,10 +8,10 @@ from app.db_sql import get_account_id_w_for_type_id, redis_lookup_id_random, sql
from app.lib_general import log, logging
# from app.methods.event_abstract_methods import load_event_abstract_obj
from app.methods.event_badge_methods import load_event_badge_obj
from app.methods.event_badge_methods import create_update_event_badge_obj_v4, load_event_badge_obj
# from app.methods.event_exhibit_methods import load_event_exhibit_obj
# from app.methods.event_file_methods import load_event_file_obj
from app.methods.event_person_profile_methods import load_event_person_profile_obj
from app.methods.event_person_profile_methods import create_update_event_person_profile_obj_v4, load_event_person_profile_obj
# from app.methods.event_presentation_methods import load_event_presentation_obj
# from app.methods.event_presenter_methods import get_event_presenter_rec_list, load_event_presenter_obj
# from app.methods.event_registration_methods import create_event_registration_obj, load_event_registration_obj, update_event_registration_obj_v3
@@ -308,16 +308,15 @@ def get_event_id_w_event_person_id(
# ### BEGIN ### API Event Person Methods ### create_update_event_person_obj_v4() ###
# NOTE: This will create or update a event_person.
# Rewrite and updated 2021-08-25
# Updated 2022-02-23
def create_update_event_person_obj_v4(
event_person_dict_obj: Event_Person_Base|dict,
event_person_id: int|str|None = None,
account_id: int|str|None = None,
event_id: int|str|None = None,
event_badge_id: int|None = None,
event_person_profile_id: int|None = None,
create_sub_obj: bool = False,
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
return_outline: bool = False,
@@ -325,6 +324,7 @@ def create_update_event_person_obj_v4(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# ### SECTION ### Secondary data validation
log.info('Checking requirements...')
if event_person_id:
log.info(f'Event Person ID passed. Update existing Event Person. Event Person ID: {event_person_id}')
@@ -377,6 +377,7 @@ def create_update_event_person_obj_v4(
log.error('Unable to get Account ID from related object.')
return False
log.info('Create dictionary or Pydantic object')
log.debug(type(event_person_dict_obj))
if isinstance(event_person_dict_obj, dict):
event_person_dict = event_person_dict_obj
@@ -388,8 +389,6 @@ def create_update_event_person_obj_v4(
event_person_dict['event_id'] = event_id
try:
event_person_obj = Event_Person_Base(**event_person_dict)
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_person_obj)
except ValidationError as e:
log.error(e.json())
return False
@@ -402,8 +401,22 @@ def create_update_event_person_obj_v4(
event_person_obj.account_id = account_id
if event_id:
event_person_obj.event_id = event_id
log.debug(event_person_obj)
event_person_dict = event_person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'event_badge', 'event_registration', 'created_on', 'updated_on'})
event_person_dict = event_person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'event_badge', 'event_person_profile', 'event_registration', 'created_on', 'updated_on'})
# ### SECTION ### Process data
if not event_badge_id:
if event_person_obj.event_badge and event_person_obj.event_badge.id:
event_badge_id = event_person_obj.event_badge.id
elif event_person_obj.event_badge and event_person_obj.event_badge_id:
event_badge_id = event_person_obj.event_badge_id
if not event_person_profile_id:
if event_person_obj.event_person_profile and event_person_obj.event_person_profile.id:
event_person_profile_id = event_person_obj.event_person_profile.id
elif event_person_obj.event_person_profile and event_person_obj.event_person_profile_id:
event_person_profile_id = event_person_obj.event_person_profile_id
if event_person_id:
if event_person_dict_up_result := sql_update(data=event_person_dict, table_name='event_person', rm_id_random=True): pass
@@ -425,49 +438,54 @@ def create_update_event_person_obj_v4(
event_person_outline = {}
event_person_outline['event_person_id'] = event_person_id
# NOTE: WARNING: This has not been fully tested yet. 2021-08-25
# NOTE: Use object model version because of better type checking and validations
# if event_person_obj.event_badge:
# event_person_outline['event_badge_id'] = None
# event_badge_obj = event_person_obj.event_badge
# if event_badge_id := event_person_obj.event_badge_id: pass
# elif event_badge_id := event_badge_obj.id: pass
# else: event_badge_id = None
# # event_badge_obj.id
# event_badge_obj.event_person_id = event_person_id
# create_update_event_badge_obj_result = create_update_event_badge_obj_v4(
# event_badge_dict_obj = event_badge_obj,
# event_badge_id = event_badge_id,
# # account_id = account_id,
# event_id = event_id,
# event_person_id = event_person_id,
# fail_any = fail_any,
# return_outline = return_outline,
# )
# if isinstance(create_update_event_badge_obj_result, int):
# event_badge_id = create_update_event_badge_obj_result
# elif create_update_event_badge_obj_result == True: pass
# else:
# log.warning(f'Create or Update failed while trying create_update_event_badge_obj_v4(): {create_update_event_badge_obj_result}')
# event_badge_id = None
# Updated 2022-02-23
if event_person_obj.event_badge:
if event_badge_id: new_record = False
else: new_record = True
event_person_outline['event_badge_id'] = None
event_badge_obj = event_person_obj.event_badge
event_badge_obj.event_person_id = event_person_id
create_update_event_badge_obj_result = create_update_event_badge_obj_v4(
event_badge_dict_obj = event_badge_obj,
event_badge_id = event_badge_id,
# account_id = account_id,
# event_id = event_id,
event_person_id = event_person_id,
fail_any = fail_any,
return_outline = return_outline,
)
if isinstance(create_update_event_badge_obj_result, int):
event_badge_id = create_update_event_badge_obj_result
elif create_update_event_badge_obj_result == True: pass
else:
log.warning(f'Create or Update failed while trying create_update_event_badge_obj_v4(): {create_update_event_badge_obj_result}')
event_badge_id = None
# event_person_outline['event_badge_id'] = event_badge_id
# NOTE: Because this is a new record and this is a 1 to 1 link, we need to update the event_person record with the new event_person_profile_id.
if new_record:
event_person_data = {}
event_person_data['event_badge_id'] = event_badge_id
if event_person_data_up_result := sql_update(data=event_person_data, table_name='event_person', record_id=event_person_id): pass
else:
log.warning(f'Event Person not updated with new Event Badge ID. Event Person ID: {event_person_id}; Event Badge ID: {event_badge_id}')
log.debug(event_person_data_up_result)
return False
log.debug(event_person_data_up_result)
# NOTE: WARNING: This has not been fully tested yet. 2021-09-07
# NOTE: Use object model version because of better type checking and validations
event_person_outline['event_badge_id'] = event_badge_id
# Updated 2022-02-23
if event_person_obj.event_person_profile:
if event_person_profile_id: new_record = False
else: new_record = True
event_person_outline['event_person_profile_id'] = None
event_person_profile_obj = event_person_obj.event_person_profile
if event_person_profile_id := event_person_obj.event_person_profile_id: pass
elif event_person_profile_id := event_person_profile_obj.id: pass
else: event_person_profile_id = None
# event_person_profile_obj.id
event_person_profile_obj.event_person_id = event_person_id
create_update_event_person_profile_obj_result = create_update_event_person_profile_obj_v4(
event_person_profile_dict_obj = event_person_profile_obj,
event_person_profile_id = event_person_profile_id,
account_id = account_id,
event_id = event_id,
# account_id = account_id,
# event_id = event_id,
event_person_id = event_person_id,
fail_any = fail_any,
return_outline = return_outline,
@@ -479,6 +497,17 @@ def create_update_event_person_obj_v4(
log.warning(f'Create or Update failed while trying create_update_event_person_profile_obj_v4(): {create_update_event_person_profile_obj_result}')
event_person_profile_id = None
# NOTE: Because this is a new record and this is a 1 to 1 link, we need to update the event_person record with the new event_person_profile_id.
if new_record:
event_person_data = {}
event_person_data['event_person_profile_id'] = event_person_profile_id
if event_person_data_up_result := sql_update(data=event_person_data, table_name='event_person', record_id=event_person_id): pass
else:
log.warning(f'Event Person not updated with new Event Person Profile ID. Event Person ID: {event_person_id}; Event Person Profile ID: {event_person_profile_id}')
log.debug(event_person_data_up_result)
return False
log.debug(event_person_data_up_result)
event_person_outline['event_person_profile_id'] = event_person_profile_id
if return_outline: