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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user