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:
@@ -656,7 +656,7 @@ async def event_importing_program_data(
|
||||
event_session_data = {}
|
||||
if record.get('session_code'):
|
||||
event_session_data['code'] = record.get('session_code', '').strip()
|
||||
else:
|
||||
elif 'session_code' in record:
|
||||
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_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'):
|
||||
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'))
|
||||
if 'session_end_datetime' in record:
|
||||
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')
|
||||
|
||||
if record.get('hide_session') in (True, 1, 'yes', 'Yes', 'YES'):
|
||||
@@ -736,30 +739,33 @@ async def event_importing_program_data(
|
||||
event_presentation_data = {}
|
||||
if record.get('presentation_code'):
|
||||
event_presentation_data['code'] = record.get('presentation_code', '').strip()
|
||||
else:
|
||||
elif 'presentation_code' in record:
|
||||
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_session_id'] = event_session_id # UPDATE the event_session_id in case the presentation was moved
|
||||
|
||||
if record.get('presentation_name'):
|
||||
event_presentation_data['name'] = record.get('presentation_name', '').strip()
|
||||
else:
|
||||
elif 'presentation_name' in record:
|
||||
event_presentation_data['name'] = None
|
||||
|
||||
if record.get('presentation_description'):
|
||||
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'))
|
||||
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'))
|
||||
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'):
|
||||
event_presentation_data['abstract_code'] = record.get('presentation_abstract_code', '').strip()
|
||||
else:
|
||||
elif 'presentation_abstract_code' in record:
|
||||
event_presentation_data['abstract_code'] = None
|
||||
|
||||
if 'presentation_sort' in record:
|
||||
event_presentation_data['sort'] = record.get('presentation_sort')
|
||||
|
||||
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_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):
|
||||
# Pull out IDs and UPDATE existing event_presentation record
|
||||
event_presentation_rec = event_presentation_rec_result
|
||||
@@ -787,7 +793,7 @@ async def event_importing_program_data(
|
||||
else:
|
||||
log.warning(event_presentation_obj_up_result)
|
||||
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}')
|
||||
|
||||
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['affiliations'] = record.get('presenter_affiliations', '').strip()
|
||||
|
||||
if 'presenter_email' in record:
|
||||
event_presenter_data['email'] = record.get('presenter_email', '').strip()
|
||||
|
||||
event_presenter_data['enable'] = True
|
||||
event_presenter_data['notes'] = record.get('presenter_notes', '').strip()
|
||||
|
||||
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):
|
||||
# Pull out IDs and UPDATE existing event_presenter record
|
||||
event_presenter_rec = event_presenter_rec_result
|
||||
@@ -893,7 +900,9 @@ async def event_importing_program_data(
|
||||
else:
|
||||
log.warning(event_presenter_obj_up_result)
|
||||
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}')
|
||||
|
||||
event_presenter_data['external_id'] = event_presenter_external_id # NOTE: This should never change
|
||||
|
||||
Reference in New Issue
Block a user