From 7ad158883ad0eb6d6ed1560567093f4262272fe1 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 7 Apr 2026 11:35:28 -0400 Subject: [PATCH] =?UTF-8?q?event:=20Zoom=20CSV=20import=20=E2=80=94=20forc?= =?UTF-8?q?e=20registrant=20email=20as=20external=5Fid;=20ignore=20placeho?= =?UTF-8?q?lder=20Unique=20identifier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routers/event_badge_importing.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/app/routers/event_badge_importing.py b/app/routers/event_badge_importing.py index e3a27db..7419e8f 100644 --- a/app/routers/event_badge_importing.py +++ b/app/routers/event_badge_importing.py @@ -574,17 +574,23 @@ async def event_id_badge_import_zoom_csv( if loop_count <= begin_at: continue if loop_count > end_at: break - unique_id = str(record.get('Unique identifier', '')).strip() + # Force use of Registrant email as the external_id for Zoom CSV imports. + # Many Zoom exports (for this group) have a useless "Unique identifier" + # column that contains "N/A" for every row — rely on email instead. email = str(record.get('Registrant email', '')).strip() - - if unique_id: - external_id = unique_id - elif email: - log.info('Using email as external_id fallback for Zoom CSV row') - external_id = email - else: - log.warning('Row missing Unique identifier and email — skipping.') + if not email: + log.warning('Row missing registrant email — skipping.') continue + external_id = email + + # Sanitize the Unique identifier value and only use it as the + # external_registration_id if it appears meaningful. Treat common + # placeholders like 'N/A'/'NA'/'UNKNOWN' as missing. + unique_id_raw = str(record.get('Unique identifier', '')).strip() + if unique_id_raw and unique_id_raw.upper() not in ('N/A', 'NA', 'UNKNOWN'): + external_registration_id = unique_id_raw + else: + external_registration_id = None ticket_name = str(record.get('Ticket name', '')).strip() given_name = str(record.get('First name', '')).strip() @@ -625,7 +631,7 @@ async def event_id_badge_import_zoom_csv( 'event_id': event_id, 'enable': True, 'external_id': external_id, - 'external_registration_id': unique_id, + 'external_registration_id': external_registration_id, 'event_person_profile': { 'enable': True, 'given_name': given_name, @@ -649,7 +655,7 @@ async def event_id_badge_import_zoom_csv( 'event_badge': { 'enable': True, 'external_id': external_id, - 'external_registration_id': unique_id, + 'external_registration_id': external_registration_id, 'given_name': given_name, 'family_name': family_name, 'full_name': display_name or f'{given_name} {family_name}'.strip(),