From 21e0825841713d616c6ca5fa873b4f6f26afed37 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Fri, 12 Jun 2026 15:25:05 -0400 Subject: [PATCH] fix(importing): restore presenter INSERT; fix column-overwrite on partial CSV MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- app/routers/event_importing.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/routers/event_importing.py b/app/routers/event_importing.py index bdfdd07..c92d70e 100644 --- a/app/routers/event_importing.py +++ b/app/routers/event_importing.py @@ -881,7 +881,7 @@ async def event_importing_program_data( event_presenter_data['notes'] = record.get('presenter_notes', '').strip() 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): # Pull out IDs and UPDATE existing event_presenter record event_presenter_rec = event_presenter_rec_result @@ -900,9 +900,7 @@ async def event_importing_program_data( else: log.warning(event_presenter_obj_up_result) pass # Probably nothing to update - elif (record.get('presenter_code') or record.get('presenter_number')) and record.get('presenter_given_name'): - # 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. + else: 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