Improved handeling of co-presenters

This commit is contained in:
Scott Idem
2024-05-15 00:11:58 -04:00
parent de822fb1ba
commit 8c0f308694

View File

@@ -31,7 +31,8 @@ router = APIRouter()
# Updated 2024-04-25
@router.get('/event/{e_confex_event_id}/import_reg', response_model=Resp_Body_Base)
async def import_event_session_list(
e_confex_event_id: str = Path(min_length=5, max_length=22), # For AAPOR: aapor_2023 (2024-05); aapor_2023 (2023-05)
e_confex_event_id: str = Path(min_length=3, max_length=22), # For AAPOR: aapor_2023 (2024-05); aapor_2023 (2023-05)
e_confex_session_id: str = Query(None, min_length=5, max_length=22),
event_id: str = Query(min_length=11, max_length=22), # For AAPOR: MCz-Qm-48-j1 (1513 2024-05) 9jW-Db-SF-wt (1478 2023-05); x2H2P2MYlXU (1447 2022-05)
# Account ID For AAPOR: j5EBhRDqPuw (20)
@@ -96,12 +97,17 @@ async def import_event_session_list(
confex_session_id = event_session.get('id')
# if confex_session_id in ('1181', '1110', '1100', '1076'): # '1110', '1100'
if e_confex_session_id and e_confex_session_id != confex_session_id:
log.warning(f'Confex Session ID does not match. Confex Session ID: {confex_session_id}')
continue
# DEBUG - A specific Confex session ID
# if confex_session_id in ('1504', '1541', '1619', '1624'):
# # log.setLevel(logging.DEBUG)
# log.warning(f'**************** FOUND {confex_session_id} ******************')
# log.warning(f'**************** FOUND {confex_session_id} ******************')
# else:
# log.setLevel(logging.INFO)
# log.warning(f'*** FOUND {confex_session_id} ***')
# # log.setLevel(logging.INFO)
# log.warning(f'*** FOUND {confex_session_id} ***')
# continue
# *** Part 1: *** Deal with the event_location first
@@ -276,7 +282,11 @@ async def import_event_session_list(
event_session_data['event_session_id'] = event_session_id # _random
event_session_data['event_presentation_list'] = None # Confex "Paper"
# DEBUG - The presentation list section
if confex_session_id in ('1541', '1624'):
log.setLevel(logging.DEBUG)
event_session_data['event_presentation_list'] = None # Confex "Paper" is the same as a AE presentation
if confex_session_detail:
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG)
@@ -398,13 +408,14 @@ async def import_event_session_list(
# Presenter List
event_presentation_data['event_presenter_list'] = []
event_presenter_id_primary = None # This is the primary presenter and who will be linked to the presentation files.
if len(confex_presentation_detail.get('ChildList_Person')):
for confex_presenter_person in confex_presentation_detail.get('ChildList_Person'):
confex_presenter_id = confex_presenter_person
event_presenter_summary = {}
event_presenter_summary['external_id'] = confex_presenter_id
event_presenter_summary['full_name'] = confex_presentation_detail.get('SubmitterFullName')
# event_presenter_summary['full_name'] = confex_presentation_detail.get('SubmitterFullName')
confex_presenter_detail = get_event_presenter_detail(confex_session_id = confex_session_id, confex_presentation_id = confex_presentation_id, confex_presenter_id = confex_presenter_id)
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
@@ -414,98 +425,195 @@ async def import_event_session_list(
event_presenter_summary['given_name'] = confex_presenter_detail.get('FirstName')
event_presenter_summary['middle_name'] = confex_presenter_detail.get('MiddleName')
event_presenter_summary['family_name'] = confex_presenter_detail.get('LastName')
event_presenter_summary['full_name'] = confex_presenter_detail.get('FirstName')+' '+confex_presenter_detail.get('LastName')
# NEW and MOVED CODE
event_presenter_data_sql = {}
event_presenter_qry = {}
event_presenter_qry['event_session_id'] = event_session_id
event_presenter_qry['event_presentation_id'] = event_presentation_id
event_presenter_qry['external_id'] = event_presenter_summary['external_id']
event_presenter_data_sql['external_id'] = event_presenter_summary['external_id']
event_presenter_data_sql['given_name'] = event_presenter_summary['given_name']
event_presenter_data_sql['middle_name'] = event_presenter_summary['middle_name']
event_presenter_data_sql['family_name'] = event_presenter_summary['family_name']
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_presenter_qry)
if event_presenter_qry['external_id']:
sql_select_event_presenter = f"""
SELECT id AS event_presenter_id, id_random AS event_presenter_id_random, external_id AS event_presenter_external_id
FROM `event_presenter` AS `event_presenter`
WHERE event_presenter.event_presentation_id = :event_presentation_id
AND event_presenter.external_id = :external_id
/*LIMIT 1*/;
"""
else:
sql_select_event_presenter = f"""
SELECT id AS event_presenter_id, id_random AS event_presenter_id_random, external_id AS event_presenter_external_id
FROM `event_presenter` AS `event_presenter`
WHERE event_presenter.event_presentation_id = :event_presentation_id
AND event_presenter.external_id IS NULL
/*LIMIT 1*/;
"""
log.debug(sql_select_event_presenter)
try:
event_presenter_obj = Event_Presenter_Base(**event_presenter_data_sql)
except ValidationError as e:
log.error(e.json())
return False
log.debug(event_presenter_obj)
event_presenter_id = None
if event_presenter_result := sql_select(sql=sql_select_event_presenter, data=event_presenter_qry):
if isinstance(event_presenter_result, list):
log.error(f'Found more than one Event Presenter with the same External ID. Count: {len(event_presenter_result)}')
break
# return False
else:
event_presenter_id = event_presenter_result.get('event_presenter_id')
log.info(f'Found Event Presenter. Updating existing... Event Presenter ID: {event_presenter_id}')
if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
event_presenter_dict_obj = event_presenter_obj,
event_presenter_id = event_presenter_id,
event_id = event_id,
event_session_id = event_session_id,
event_presentation_id = event_presentation_id,
):
event_presenter_id = create_event_presenter_obj_result
log.warning(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not updated. Event Presenter ID: {event_presenter_id}')
log.debug(create_event_presenter_obj_result)
break
# return False
else:
log.info('No Event Presenter found. Creating new...')
if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
event_presenter_dict_obj = event_presenter_obj,
event_id = event_id,
event_session_id = event_session_id,
event_presentation_id = event_presentation_id,
):
event_presenter_id = create_event_presenter_obj_result
log.warning(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not created.')
log.debug(create_event_presenter_obj_result)
break
# return False
event_presenter_summary['event_presenter_id'] = event_presenter_id # _random
if event_presenter_summary['full_name'] == presenter_full_name:
event_presenter_id_primary = event_presenter_id
# NEW and MOVED CODE
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
event_presentation_data['event_presenter_list'].append(event_presenter_summary)
event_presenter_data_sql = {}
if presenter_full_name:
event_presenter_data_sql['full_name'] = presenter_full_name
event_presenter_data_sql['given_name'] = presenter_full_name
else:
event_presenter_data_sql['full_name'] = submitter_full_name
event_presenter_data_sql['given_name'] = submitter_full_name
# event_presenter_data_sql = {}
# if presenter_full_name:
# event_presenter_data_sql['full_name'] = presenter_full_name
# event_presenter_data_sql['given_name'] = presenter_full_name
# else:
# event_presenter_data_sql['full_name'] = submitter_full_name
# event_presenter_data_sql['given_name'] = submitter_full_name
event_presenter_qry = {}
event_presenter_qry['event_session_id'] = event_session_id
event_presenter_qry['event_presentation_id'] = event_presentation_id
if len(event_presentation_data['event_presenter_list']):
event_presenter_qry['external_id'] = event_presentation_data['event_presenter_list'][0]['external_id']
# event_presenter_qry = {}
# event_presenter_qry['event_session_id'] = event_session_id
# event_presenter_qry['event_presentation_id'] = event_presentation_id
# if len(event_presentation_data['event_presenter_list']):
# event_presenter_qry['external_id'] = event_presentation_data['event_presenter_list'][0]['external_id']
event_presenter_data_sql['external_id'] = event_presentation_data['event_presenter_list'][0]['external_id']
event_presenter_data_sql['given_name'] = event_presentation_data['event_presenter_list'][0]['given_name']
event_presenter_data_sql['middle_name'] = event_presentation_data['event_presenter_list'][0]['middle_name']
event_presenter_data_sql['family_name'] = event_presentation_data['event_presenter_list'][0]['family_name']
else:
event_presenter_qry['external_id'] = None
# event_presenter_data_sql['external_id'] = event_presentation_data['event_presenter_list'][0]['external_id']
# event_presenter_data_sql['given_name'] = event_presentation_data['event_presenter_list'][0]['given_name']
# event_presenter_data_sql['middle_name'] = event_presentation_data['event_presenter_list'][0]['middle_name']
# event_presenter_data_sql['family_name'] = event_presentation_data['event_presenter_list'][0]['family_name']
# else:
# event_presenter_qry['external_id'] = None
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_presenter_qry)
# log.debug(event_presenter_qry)
if event_presenter_qry['external_id']:
sql_select_event_presenter = f"""
SELECT id AS event_presenter_id, id_random AS event_presenter_id_random, external_id AS event_presenter_external_id
FROM `event_presenter` AS `event_presenter`
WHERE event_presenter.event_presentation_id = :event_presentation_id
AND event_presenter.external_id = :external_id
/*LIMIT 1*/;
"""
else:
sql_select_event_presenter = f"""
SELECT id AS event_presenter_id, id_random AS event_presenter_id_random, external_id AS event_presenter_external_id
FROM `event_presenter` AS `event_presenter`
WHERE event_presenter.event_presentation_id = :event_presentation_id
AND event_presenter.external_id IS NULL
/*LIMIT 1*/;
"""
log.debug(sql_select_event_presenter)
# if event_presenter_qry['external_id']:
# sql_select_event_presenter = f"""
# SELECT id AS event_presenter_id, id_random AS event_presenter_id_random, external_id AS event_presenter_external_id
# FROM `event_presenter` AS `event_presenter`
# WHERE event_presenter.event_presentation_id = :event_presentation_id
# AND event_presenter.external_id = :external_id
# /*LIMIT 1*/;
# """
# else:
# sql_select_event_presenter = f"""
# SELECT id AS event_presenter_id, id_random AS event_presenter_id_random, external_id AS event_presenter_external_id
# FROM `event_presenter` AS `event_presenter`
# WHERE event_presenter.event_presentation_id = :event_presentation_id
# AND event_presenter.external_id IS NULL
# /*LIMIT 1*/;
# """
# log.debug(sql_select_event_presenter)
try:
event_presenter_obj = Event_Presenter_Base(**event_presenter_data_sql)
except ValidationError as e:
log.error(e.json())
return False
log.debug(event_presenter_obj)
# try:
# event_presenter_obj = Event_Presenter_Base(**event_presenter_data_sql)
# except ValidationError as e:
# log.error(e.json())
# return False
# log.debug(event_presenter_obj)
event_presenter_id = None
if event_presenter_result := sql_select(sql=sql_select_event_presenter, data=event_presenter_qry):
# event_presenter_id = None
# event_presenter_id_primary = None # This is the primary presenter and who will be linked to the presentation files.
# if event_presenter_result := sql_select(sql=sql_select_event_presenter, data=event_presenter_qry):
if isinstance(event_presenter_result, list):
log.error(f'Found more than one Event Presenter with the same External ID. Count: {len(event_presenter_result)}')
break
# return False
else:
event_presenter_id = event_presenter_result.get('event_presenter_id')
log.info(f'Found Event Presenter. Updating existing... Event Presenter ID: {event_presenter_id}')
if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
event_presenter_dict_obj = event_presenter_obj,
event_presenter_id = event_presenter_id,
event_id = event_id,
event_session_id = event_session_id,
event_presentation_id = event_presentation_id,
):
event_presenter_id = create_event_presenter_obj_result
log.warning(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not updated. Event Presenter ID: {event_presenter_id}')
log.debug(create_event_presenter_obj_result)
break
# return False
else:
log.info('No Event Presenter found. Creating new...')
# if isinstance(event_presenter_result, list):
# log.error(f'Found more than one Event Presenter with the same External ID. Count: {len(event_presenter_result)}')
# break
# # return False
# else:
# event_presenter_id = event_presenter_result.get('event_presenter_id')
# log.info(f'Found Event Presenter. Updating existing... Event Presenter ID: {event_presenter_id}')
# if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
# event_presenter_dict_obj = event_presenter_obj,
# event_presenter_id = event_presenter_id,
# event_id = event_id,
# event_session_id = event_session_id,
# event_presentation_id = event_presentation_id,
# ):
# event_presenter_id = create_event_presenter_obj_result
# log.warning(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
# else:
# log.warning(f'Event Presenter not updated. Event Presenter ID: {event_presenter_id}')
# log.debug(create_event_presenter_obj_result)
# break
# # return False
# else:
# log.info('No Event Presenter found. Creating new...')
if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
event_presenter_dict_obj = event_presenter_obj,
event_id = event_id,
event_session_id = event_session_id,
event_presentation_id = event_presentation_id,
):
event_presenter_id = create_event_presenter_obj_result
log.warning(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
else:
log.warning(f'Event Presenter not created.')
log.debug(create_event_presenter_obj_result)
break
# return False
# if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
# event_presenter_dict_obj = event_presenter_obj,
# event_id = event_id,
# event_session_id = event_session_id,
# event_presentation_id = event_presentation_id,
# ):
# event_presenter_id = create_event_presenter_obj_result
# log.warning(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
# else:
# log.warning(f'Event Presenter not created.')
# log.debug(create_event_presenter_obj_result)
# break
# # return False
# Presentation File List for Presenter
# NOTE: Only the files under ChildList_VendorFiles where used for AAPOR 2023.
@@ -541,15 +649,15 @@ async def import_event_session_list(
confex_file_info = event_file_data,
account_id = account_id,
link_to_type = 'event_presenter',
link_to_id = event_presenter_id,
link_to_id = event_presenter_id_primary,
)
event_presentation_data['confex_file_list'].append(event_file_data)
event_presentation_data['event_file_list'].append(file_info)
# event_presenter_data['event_presenter_id'] = event_presenter_id # _random
if len(event_presentation_data['event_presenter_list']):
event_presentation_data['event_presenter_list'][0]['event_presenter_id'] = event_presenter_id # _random
# if len(event_presentation_data['event_presenter_list']):
# event_presentation_data['event_presenter_list'][0]['event_presenter_id'] = event_presenter_id_primary # _random
event_session_summary['event_presentation_list'].append(event_presentation_data)