Improved handeling of co-presenters
This commit is contained in:
@@ -31,7 +31,8 @@ router = APIRouter()
|
|||||||
# Updated 2024-04-25
|
# Updated 2024-04-25
|
||||||
@router.get('/event/{e_confex_event_id}/import_reg', response_model=Resp_Body_Base)
|
@router.get('/event/{e_confex_event_id}/import_reg', response_model=Resp_Body_Base)
|
||||||
async def import_event_session_list(
|
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)
|
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)
|
# Account ID For AAPOR: j5EBhRDqPuw (20)
|
||||||
@@ -96,12 +97,17 @@ async def import_event_session_list(
|
|||||||
|
|
||||||
confex_session_id = event_session.get('id')
|
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.setLevel(logging.DEBUG)
|
||||||
# log.warning(f'**************** FOUND {confex_session_id} ******************')
|
# log.warning(f'**************** FOUND {confex_session_id} ******************')
|
||||||
# else:
|
# else:
|
||||||
# log.setLevel(logging.INFO)
|
# # log.setLevel(logging.INFO)
|
||||||
# log.warning(f'*** FOUND {confex_session_id} ***')
|
# log.warning(f'*** FOUND {confex_session_id} ***')
|
||||||
# continue
|
# continue
|
||||||
|
|
||||||
# *** Part 1: *** Deal with the event_location first
|
# *** 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_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:
|
if confex_session_detail:
|
||||||
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
# log.setLevel(logging.DEBUG)
|
# log.setLevel(logging.DEBUG)
|
||||||
@@ -398,13 +408,14 @@ async def import_event_session_list(
|
|||||||
|
|
||||||
# Presenter List
|
# Presenter List
|
||||||
event_presentation_data['event_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')):
|
if len(confex_presentation_detail.get('ChildList_Person')):
|
||||||
for confex_presenter_person in confex_presentation_detail.get('ChildList_Person'):
|
for confex_presenter_person in confex_presentation_detail.get('ChildList_Person'):
|
||||||
confex_presenter_id = confex_presenter_person
|
confex_presenter_id = confex_presenter_person
|
||||||
event_presenter_summary = {}
|
event_presenter_summary = {}
|
||||||
event_presenter_summary['external_id'] = confex_presenter_id
|
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)
|
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
|
# 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['given_name'] = confex_presenter_detail.get('FirstName')
|
||||||
event_presenter_summary['middle_name'] = confex_presenter_detail.get('MiddleName')
|
event_presenter_summary['middle_name'] = confex_presenter_detail.get('MiddleName')
|
||||||
event_presenter_summary['family_name'] = confex_presenter_detail.get('LastName')
|
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
|
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
event_presentation_data['event_presenter_list'].append(event_presenter_summary)
|
event_presentation_data['event_presenter_list'].append(event_presenter_summary)
|
||||||
|
|
||||||
event_presenter_data_sql = {}
|
# event_presenter_data_sql = {}
|
||||||
if presenter_full_name:
|
# if presenter_full_name:
|
||||||
event_presenter_data_sql['full_name'] = presenter_full_name
|
# event_presenter_data_sql['full_name'] = presenter_full_name
|
||||||
event_presenter_data_sql['given_name'] = presenter_full_name
|
# event_presenter_data_sql['given_name'] = presenter_full_name
|
||||||
else:
|
# else:
|
||||||
event_presenter_data_sql['full_name'] = submitter_full_name
|
# event_presenter_data_sql['full_name'] = submitter_full_name
|
||||||
event_presenter_data_sql['given_name'] = submitter_full_name
|
# event_presenter_data_sql['given_name'] = submitter_full_name
|
||||||
|
|
||||||
event_presenter_qry = {}
|
# event_presenter_qry = {}
|
||||||
event_presenter_qry['event_session_id'] = event_session_id
|
# event_presenter_qry['event_session_id'] = event_session_id
|
||||||
event_presenter_qry['event_presentation_id'] = event_presentation_id
|
# event_presenter_qry['event_presentation_id'] = event_presentation_id
|
||||||
if len(event_presentation_data['event_presenter_list']):
|
# 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['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['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['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['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']
|
# event_presenter_data_sql['family_name'] = event_presentation_data['event_presenter_list'][0]['family_name']
|
||||||
else:
|
# else:
|
||||||
event_presenter_qry['external_id'] = None
|
# event_presenter_qry['external_id'] = None
|
||||||
|
|
||||||
# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
# 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']:
|
# if event_presenter_qry['external_id']:
|
||||||
sql_select_event_presenter = f"""
|
# 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
|
# 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`
|
# FROM `event_presenter` AS `event_presenter`
|
||||||
WHERE event_presenter.event_presentation_id = :event_presentation_id
|
# WHERE event_presenter.event_presentation_id = :event_presentation_id
|
||||||
AND event_presenter.external_id = :external_id
|
# AND event_presenter.external_id = :external_id
|
||||||
/*LIMIT 1*/;
|
# /*LIMIT 1*/;
|
||||||
"""
|
# """
|
||||||
else:
|
# else:
|
||||||
sql_select_event_presenter = f"""
|
# 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
|
# 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`
|
# FROM `event_presenter` AS `event_presenter`
|
||||||
WHERE event_presenter.event_presentation_id = :event_presentation_id
|
# WHERE event_presenter.event_presentation_id = :event_presentation_id
|
||||||
AND event_presenter.external_id IS NULL
|
# AND event_presenter.external_id IS NULL
|
||||||
/*LIMIT 1*/;
|
# /*LIMIT 1*/;
|
||||||
"""
|
# """
|
||||||
log.debug(sql_select_event_presenter)
|
# log.debug(sql_select_event_presenter)
|
||||||
|
|
||||||
try:
|
# try:
|
||||||
event_presenter_obj = Event_Presenter_Base(**event_presenter_data_sql)
|
# event_presenter_obj = Event_Presenter_Base(**event_presenter_data_sql)
|
||||||
except ValidationError as e:
|
# except ValidationError as e:
|
||||||
log.error(e.json())
|
# log.error(e.json())
|
||||||
return False
|
# return False
|
||||||
log.debug(event_presenter_obj)
|
# log.debug(event_presenter_obj)
|
||||||
|
|
||||||
event_presenter_id = None
|
# event_presenter_id = None
|
||||||
if event_presenter_result := sql_select(sql=sql_select_event_presenter, data=event_presenter_qry):
|
# 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):
|
# 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)}')
|
# log.error(f'Found more than one Event Presenter with the same External ID. Count: {len(event_presenter_result)}')
|
||||||
break
|
# break
|
||||||
# return False
|
# # return False
|
||||||
else:
|
# else:
|
||||||
event_presenter_id = event_presenter_result.get('event_presenter_id')
|
# event_presenter_id = event_presenter_result.get('event_presenter_id')
|
||||||
log.info(f'Found Event Presenter. Updating existing... Event Presenter ID: {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(
|
# if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
|
||||||
event_presenter_dict_obj = event_presenter_obj,
|
# event_presenter_dict_obj = event_presenter_obj,
|
||||||
event_presenter_id = event_presenter_id,
|
# event_presenter_id = event_presenter_id,
|
||||||
event_id = event_id,
|
# event_id = event_id,
|
||||||
event_session_id = event_session_id,
|
# event_session_id = event_session_id,
|
||||||
event_presentation_id = event_presentation_id,
|
# event_presentation_id = event_presentation_id,
|
||||||
):
|
# ):
|
||||||
event_presenter_id = create_event_presenter_obj_result
|
# event_presenter_id = create_event_presenter_obj_result
|
||||||
log.warning(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
|
# log.warning(f'Event Presenter updated. Event Presenter ID: {event_presenter_id}')
|
||||||
else:
|
# else:
|
||||||
log.warning(f'Event Presenter not updated. Event Presenter ID: {event_presenter_id}')
|
# log.warning(f'Event Presenter not updated. Event Presenter ID: {event_presenter_id}')
|
||||||
log.debug(create_event_presenter_obj_result)
|
# log.debug(create_event_presenter_obj_result)
|
||||||
break
|
# break
|
||||||
# return False
|
# # return False
|
||||||
else:
|
# else:
|
||||||
log.info('No Event Presenter found. Creating new...')
|
# log.info('No Event Presenter found. Creating new...')
|
||||||
|
|
||||||
if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
|
# if create_event_presenter_obj_result := create_update_event_presenter_obj_v4(
|
||||||
event_presenter_dict_obj = event_presenter_obj,
|
# event_presenter_dict_obj = event_presenter_obj,
|
||||||
event_id = event_id,
|
# event_id = event_id,
|
||||||
event_session_id = event_session_id,
|
# event_session_id = event_session_id,
|
||||||
event_presentation_id = event_presentation_id,
|
# event_presentation_id = event_presentation_id,
|
||||||
):
|
# ):
|
||||||
event_presenter_id = create_event_presenter_obj_result
|
# event_presenter_id = create_event_presenter_obj_result
|
||||||
log.warning(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
|
# log.warning(f'Event Presenter created. Event Presenter ID: {event_presenter_id}')
|
||||||
else:
|
# else:
|
||||||
log.warning(f'Event Presenter not created.')
|
# log.warning(f'Event Presenter not created.')
|
||||||
log.debug(create_event_presenter_obj_result)
|
# log.debug(create_event_presenter_obj_result)
|
||||||
break
|
# break
|
||||||
# return False
|
# # return False
|
||||||
|
|
||||||
# Presentation File List for Presenter
|
# Presentation File List for Presenter
|
||||||
# NOTE: Only the files under ChildList_VendorFiles where used for AAPOR 2023.
|
# 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,
|
confex_file_info = event_file_data,
|
||||||
account_id = account_id,
|
account_id = account_id,
|
||||||
link_to_type = 'event_presenter',
|
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['confex_file_list'].append(event_file_data)
|
||||||
event_presentation_data['event_file_list'].append(file_info)
|
event_presentation_data['event_file_list'].append(file_info)
|
||||||
|
|
||||||
# event_presenter_data['event_presenter_id'] = event_presenter_id # _random
|
# event_presenter_data['event_presenter_id'] = event_presenter_id # _random
|
||||||
if len(event_presentation_data['event_presenter_list']):
|
# if len(event_presentation_data['event_presenter_list']):
|
||||||
event_presentation_data['event_presenter_list'][0]['event_presenter_id'] = event_presenter_id # _random
|
# 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)
|
event_session_summary['event_presentation_list'].append(event_presentation_data)
|
||||||
|
|||||||
Reference in New Issue
Block a user