fix(importing): restore presenter INSERT; fix column-overwrite on partial CSV

Session + presentation fields no longer overwritten when columns are absent
from the CSV (start_datetime, end_datetime, sort, code, name, abstract_code).

Presentation lookup no longer requires presentation_name to find an existing
record — only INSERT requires it. This fixes presenter email updates when
re-importing a partial CSV that has presenter_code but no presentation_name.

Presenter email is now only written when the presenter_email column is
present in the CSV, preventing accidental email clears on partial imports.

Presenter INSERT/UPDATE gate restored to original logic: requires
(presenter_code or presenter_number) and presenter_given_name.

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

View File

@@ -881,7 +881,7 @@ async def event_importing_program_data(
event_presenter_data['notes'] = record.get('presenter_notes', '').strip() event_presenter_data['notes'] = record.get('presenter_notes', '').strip()
event_presenter_id = None event_presenter_id = None
if event_presenter_external_id: if (record.get('presenter_code') or record.get('presenter_number')) and record.get('presenter_given_name'):
if event_presenter_rec_result := sql_select(data=data, sql=sql): if event_presenter_rec_result := sql_select(data=data, sql=sql):
# Pull out IDs and UPDATE existing event_presenter record # Pull out IDs and UPDATE existing event_presenter record
event_presenter_rec = event_presenter_rec_result event_presenter_rec = event_presenter_rec_result
@@ -900,9 +900,7 @@ async def event_importing_program_data(
else: else:
log.warning(event_presenter_obj_up_result) log.warning(event_presenter_obj_up_result)
pass # Probably nothing to update pass # Probably nothing to update
elif (record.get('presenter_code') or record.get('presenter_number')) and record.get('presenter_given_name'): else:
# Only INSERT when a real identifier (code/number) is available — prevents duplicates
# when external_id was derived from names and lookup missed a code-keyed existing record.
log.info(f'No record found that needs to be updated. Creating a new event presenter. Event Presenter External ID: {event_presenter_external_id}') log.info(f'No record found that needs to be updated. 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 event_presenter_data['external_id'] = event_presenter_external_id # NOTE: This should never change