wip(importing): partial fixes — presentation lookup + presenter gate (broken, needs rework)

Session field column-presence fixes are solid. Presentation lookup no longer
requires presentation_name to find existing records. Presenter gate broadened
to run lookup even without explicit code. Presenter INSERT still broken —
reverted field changes after IntegrityError issue; email-only column guard kept.

Do not rely on this state for presenter creation. Needs rework from c9c69ec.

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

View File

@@ -656,7 +656,7 @@ async def event_importing_program_data(
event_session_data = {} event_session_data = {}
if record.get('session_code'): if record.get('session_code'):
event_session_data['code'] = record.get('session_code', '').strip() event_session_data['code'] = record.get('session_code', '').strip()
else: elif 'session_code' in record:
event_session_data['code'] = None event_session_data['code'] = None
event_session_data['event_id'] = event_id # INSERT and UPDATE the event_id just in case event_session_data['event_id'] = event_id # INSERT and UPDATE the event_id just in case
event_session_data['event_location_id'] = event_location_id # INSERT and UPDATE the event_location_id in case the session was moved event_session_data['event_location_id'] = event_location_id # INSERT and UPDATE the event_location_id in case the session was moved
@@ -674,9 +674,12 @@ async def event_importing_program_data(
if record.get('session_description'): if record.get('session_description'):
event_session_data['description'] = record.get('session_description', '').strip() event_session_data['description'] = record.get('session_description', '').strip()
if 'session_start_datetime' in record:
event_session_data['start_datetime'] = _clean_datetime(record.get('session_start_datetime')) event_session_data['start_datetime'] = _clean_datetime(record.get('session_start_datetime'))
if 'session_end_datetime' in record:
event_session_data['end_datetime'] = _clean_datetime(record.get('session_end_datetime')) event_session_data['end_datetime'] = _clean_datetime(record.get('session_end_datetime'))
if 'session_sort' in record:
event_session_data['sort'] = record.get('session_sort') event_session_data['sort'] = record.get('session_sort')
if record.get('hide_session') in (True, 1, 'yes', 'Yes', 'YES'): if record.get('hide_session') in (True, 1, 'yes', 'Yes', 'YES'):
@@ -736,30 +739,33 @@ async def event_importing_program_data(
event_presentation_data = {} event_presentation_data = {}
if record.get('presentation_code'): if record.get('presentation_code'):
event_presentation_data['code'] = record.get('presentation_code', '').strip() event_presentation_data['code'] = record.get('presentation_code', '').strip()
else: elif 'presentation_code' in record:
event_presentation_data['code'] = None event_presentation_data['code'] = None
event_presentation_data['event_id'] = event_id # INSERT and UPDATE the event_id just in case event_presentation_data['event_id'] = event_id # INSERT and UPDATE the event_id just in case
event_presentation_data['event_session_id'] = event_session_id # UPDATE the event_session_id in case the presentation was moved event_presentation_data['event_session_id'] = event_session_id # UPDATE the event_session_id in case the presentation was moved
if record.get('presentation_name'): if record.get('presentation_name'):
event_presentation_data['name'] = record.get('presentation_name', '').strip() event_presentation_data['name'] = record.get('presentation_name', '').strip()
else: elif 'presentation_name' in record:
event_presentation_data['name'] = None event_presentation_data['name'] = None
if record.get('presentation_description'): if record.get('presentation_description'):
event_presentation_data['description'] = record.get('presentation_description', '').strip() event_presentation_data['description'] = record.get('presentation_description', '').strip()
if 'presentation_start_datetime' in record:
event_presentation_data['start_datetime'] = _clean_datetime(record.get('presentation_start_datetime')) event_presentation_data['start_datetime'] = _clean_datetime(record.get('presentation_start_datetime'))
data['presentation_start_datetime'] = event_presentation_data['start_datetime'] data['presentation_start_datetime'] = event_presentation_data.get('start_datetime')
if 'presentation_end_datetime' in record:
event_presentation_data['end_datetime'] = _clean_datetime(record.get('presentation_end_datetime')) event_presentation_data['end_datetime'] = _clean_datetime(record.get('presentation_end_datetime'))
data['presentation_end_datetime'] = event_presentation_data['end_datetime'] data['presentation_end_datetime'] = event_presentation_data.get('end_datetime')
if record.get('presentation_abstract_code'): if record.get('presentation_abstract_code'):
event_presentation_data['abstract_code'] = record.get('presentation_abstract_code', '').strip() event_presentation_data['abstract_code'] = record.get('presentation_abstract_code', '').strip()
else: elif 'presentation_abstract_code' in record:
event_presentation_data['abstract_code'] = None event_presentation_data['abstract_code'] = None
if 'presentation_sort' in record:
event_presentation_data['sort'] = record.get('presentation_sort') event_presentation_data['sort'] = record.get('presentation_sort')
event_presentation_data['enable'] = True event_presentation_data['enable'] = True
@@ -768,7 +774,7 @@ async def event_importing_program_data(
event_presentation_data['notes'] = record.get('presentation_notes', '').strip() event_presentation_data['notes'] = record.get('presentation_notes', '').strip()
event_presentation_id = None event_presentation_id = None
if (record.get('presentation_external_id') or record.get('presentation_code')) and record.get('presentation_name'): if record.get('presentation_external_id') or record.get('presentation_code'):
if event_presentation_rec_result := sql_select(data=data, sql=sql): if event_presentation_rec_result := sql_select(data=data, sql=sql):
# Pull out IDs and UPDATE existing event_presentation record # Pull out IDs and UPDATE existing event_presentation record
event_presentation_rec = event_presentation_rec_result event_presentation_rec = event_presentation_rec_result
@@ -787,7 +793,7 @@ async def event_importing_program_data(
else: else:
log.warning(event_presentation_obj_up_result) log.warning(event_presentation_obj_up_result)
pass # Probably nothing to update pass # Probably nothing to update
else: elif record.get('presentation_name'):
log.info(f'No record found that needs to be updated. Creating a new event presentation. Event Presentation External ID: {event_presentation_external_id}') log.info(f'No record found that needs to be updated. Creating a new event presentation. Event Presentation External ID: {event_presentation_external_id}')
event_presentation_data['external_id'] = event_presentation_external_id # NOTE: This should never change event_presentation_data['external_id'] = event_presentation_external_id # NOTE: This should never change
@@ -868,13 +874,14 @@ async def event_importing_program_data(
event_presenter_data['professional_title'] = record.get('presenter_professional_title', '').strip() event_presenter_data['professional_title'] = record.get('presenter_professional_title', '').strip()
event_presenter_data['affiliations'] = record.get('presenter_affiliations', '').strip() event_presenter_data['affiliations'] = record.get('presenter_affiliations', '').strip()
if 'presenter_email' in record:
event_presenter_data['email'] = record.get('presenter_email', '').strip() event_presenter_data['email'] = record.get('presenter_email', '').strip()
event_presenter_data['enable'] = True event_presenter_data['enable'] = True
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 (record.get('presenter_code') or record.get('presenter_number')) and record.get('presenter_given_name'): if event_presenter_external_id:
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
@@ -893,7 +900,9 @@ 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
else: 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.
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