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)
|
log.warning(event_presenter_obj_in_result)
|
||||||
continue # Something unexpected may have happened
|
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_id'] = event_presenter_id
|
||||||
data['event_presenter_code'] = event_presenter_code
|
data['event_presenter_code'] = event_presenter_code
|
||||||
data['event_presenter_number'] = event_presenter_number
|
data['event_presenter_number'] = event_presenter_number
|
||||||
|
|||||||
Reference in New Issue
Block a user