event: Zoom CSV import — check for existing event_person by event_id+external_id before create; handle duplicates
This commit is contained in:
@@ -682,9 +682,7 @@ async def event_id_badge_import_zoom_csv(
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
event_badge_person_li.append(event_person_data)
|
# Look up existing event_person by event_id + external_id (should be 0 or 1).
|
||||||
event_badge_person_summary_li.append(event_person_summary)
|
|
||||||
|
|
||||||
sql_select_event_person = """
|
sql_select_event_person = """
|
||||||
SELECT id AS event_person_id, id_random AS event_person_id_random,
|
SELECT id AS event_person_id, id_random AS event_person_id_random,
|
||||||
external_id AS event_person_external_id,
|
external_id AS event_person_external_id,
|
||||||
@@ -693,38 +691,50 @@ async def event_id_badge_import_zoom_csv(
|
|||||||
FROM `event_person`
|
FROM `event_person`
|
||||||
WHERE event_person.event_id = :event_id
|
WHERE event_person.event_id = :event_id
|
||||||
AND event_person.external_id = :external_id
|
AND event_person.external_id = :external_id
|
||||||
|
/*LIMIT 2*/;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if event_person_result := sql_select(sql=sql_select_event_person, data=event_person_summary):
|
event_person_result = sql_select(sql=sql_select_event_person, data=event_person_summary)
|
||||||
|
if event_person_result:
|
||||||
|
# If multiple rows are returned that's an integrity problem — log it and
|
||||||
|
# use the first row for the update to avoid creating duplicates.
|
||||||
if isinstance(event_person_result, list):
|
if isinstance(event_person_result, list):
|
||||||
log.error(f'Found more than one Event Person with external_id={external_id}. Count: {len(event_person_result)}')
|
log.error(f'Found more than one Event Person with external_id={external_id}. Count: {len(event_person_result)}')
|
||||||
|
event_person_result = event_person_result[0]
|
||||||
|
|
||||||
|
event_person_id = event_person_result.get('event_person_id')
|
||||||
|
event_badge_id = event_person_result.get('event_badge_id')
|
||||||
|
event_person_profile_id = event_person_result.get('event_person_profile_id')
|
||||||
|
log.info(f'Found Event Person. Updating existing... Event Person ID: {event_person_id}')
|
||||||
|
|
||||||
|
updated_id = create_update_event_person_obj_v4(
|
||||||
|
event_person_dict_obj=event_person_data,
|
||||||
|
event_person_id=event_person_id,
|
||||||
|
account_id=account_id,
|
||||||
|
event_id=event_id,
|
||||||
|
event_badge_id=event_badge_id,
|
||||||
|
event_person_profile_id=event_person_profile_id,
|
||||||
|
)
|
||||||
|
if updated_id:
|
||||||
|
log.warning(f'Event Person updated. ID: {updated_id}')
|
||||||
else:
|
else:
|
||||||
event_person_id = event_person_result.get('event_person_id')
|
log.warning(f'Event Person not updated. ID: {event_person_id}')
|
||||||
event_badge_id = event_person_result.get('event_badge_id')
|
|
||||||
event_person_profile_id = event_person_result.get('event_person_profile_id')
|
|
||||||
log.info(f'Updating existing Event Person ID: {event_person_id}')
|
|
||||||
if create_update_event_person_obj_v4(
|
|
||||||
event_person_dict_obj=event_person_data,
|
|
||||||
event_person_id=event_person_id,
|
|
||||||
account_id=account_id,
|
|
||||||
event_id=event_id,
|
|
||||||
event_badge_id=event_badge_id,
|
|
||||||
event_person_profile_id=event_person_profile_id,
|
|
||||||
):
|
|
||||||
log.warning(f'Event Person updated. ID: {event_person_id}')
|
|
||||||
else:
|
|
||||||
log.warning(f'Event Person not updated. ID: {event_person_id}')
|
|
||||||
else:
|
else:
|
||||||
log.info('No Event Person found. Creating new...')
|
log.info('No Event Person found. Creating new...')
|
||||||
if result_id := create_update_event_person_obj_v4(
|
result_id = create_update_event_person_obj_v4(
|
||||||
event_person_dict_obj=event_person_data,
|
event_person_dict_obj=event_person_data,
|
||||||
account_id=account_id,
|
account_id=account_id,
|
||||||
event_id=event_id,
|
event_id=event_id,
|
||||||
):
|
)
|
||||||
|
if result_id:
|
||||||
log.warning(f'Event Person created. ID: {result_id}')
|
log.warning(f'Event Person created. ID: {result_id}')
|
||||||
else:
|
else:
|
||||||
log.warning('Event Person not created.')
|
log.warning('Event Person not created.')
|
||||||
|
|
||||||
|
# Record the processed input for response summary after DB ops.
|
||||||
|
event_badge_person_li.append(event_person_data)
|
||||||
|
event_badge_person_summary_li.append(event_person_summary)
|
||||||
|
|
||||||
if return_detail:
|
if return_detail:
|
||||||
return mk_resp(data=event_badge_person_li, status_message=f'Zoom CSV import complete. Processed {len(event_badge_person_li)} records.', response=commons.response)
|
return mk_resp(data=event_badge_person_li, status_message=f'Zoom CSV import complete. Processed {len(event_badge_person_li)} records.', response=commons.response)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user