fix(importing): name-based fallback lookup for code-less presenters

When a presenter row has no code or number, fall back to looking up by
given_name + family_name within the presentation. Allows email and other
field updates for presenters who were imported without a code identifier.
INSERT still uses the name-derived external_id as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-06-12 15:37:05 -04:00
parent 21e0825841
commit eff5f854db

View File

@@ -915,6 +915,52 @@ async def event_importing_program_data(
log.warning(event_presenter_obj_in_result)
continue # Something unexpected may have happened
elif record.get('presenter_given_name') and event_presentation_id:
# No code/number — fall back to lookup by given_name + family_name within the presentation.
fallback_sql = """
SELECT *
FROM `v_event_presenter` AS `event_presenter`
WHERE event_presenter.event_presentation_id = :event_presentation_id
AND event_presenter.given_name = :presenter_given_name
AND event_presenter.family_name = :presenter_family_name
LIMIT 1;
"""
fallback_data = {
'event_presentation_id': event_presentation_id,
'presenter_given_name': record.get('presenter_given_name', '').strip(),
'presenter_family_name': record.get('presenter_family_name', '').strip(),
}
if event_presenter_rec_result := sql_select(data=fallback_data, sql=fallback_sql):
event_presenter_rec = event_presenter_rec_result
event_presenter_id = event_presenter_rec.get('event_presenter_id')
event_presenter_id_random = event_presenter_rec.get('event_presenter_id_random')
log.info(f'Found one record by name. Event Presenter ID: {event_presenter_id_random} Event Presenter Given Name: {record.get("presenter_given_name")}')
event_presenter_data['id'] = event_presenter_id
log.debug(event_presenter_data)
if allow_updates:
if event_presenter_obj_up_result := sql_update(data=event_presenter_data, table_name='event_presenter'):
log.debug(event_presenter_obj_up_result)
else:
log.warning(event_presenter_obj_up_result)
pass # Probably nothing to update
else:
log.info(f'No record found by name. Creating a new event presenter. Event Presenter External ID: {event_presenter_external_id}')
event_presenter_data['external_id'] = event_presenter_external_id # NOTE: This should never change
log.debug(event_presenter_data)
if allow_inserts:
if event_presenter_obj_in_result := sql_insert(data=event_presenter_data, table_name='event_presenter'):
log.debug(event_presenter_obj_in_result)
event_presenter_id = event_presenter_obj_in_result
else:
log.warning(event_presenter_obj_in_result)
continue # Something unexpected may have happened
data['event_presenter_id'] = event_presenter_id
data['event_presenter_code'] = event_presenter_code
data['event_presenter_number'] = event_presenter_number