From eff5f854db9ced438bbd6ca2bafe609170214ebd Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Fri, 12 Jun 2026 15:37:05 -0400 Subject: [PATCH] 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 --- app/routers/event_importing.py | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/app/routers/event_importing.py b/app/routers/event_importing.py index c92d70e..a439ab8 100644 --- a/app/routers/event_importing.py +++ b/app/routers/event_importing.py @@ -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