From e43d7e061e7ecb657edb8996a6737628486aa5c2 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 7 Feb 2023 17:56:13 -0500 Subject: [PATCH] ISHLT IMpexium import script improvements. --- app/routers/e_impexium.py | 327 ++++++++++++-------------------------- 1 file changed, 101 insertions(+), 226 deletions(-) diff --git a/app/routers/e_impexium.py b/app/routers/e_impexium.py index d517ff3..2b9d131 100644 --- a/app/routers/e_impexium.py +++ b/app/routers/e_impexium.py @@ -85,6 +85,7 @@ async def event_import_reg( log.warning('The custom fields were not found at all. Are the "details" being included?') pass + event_person_profile_data = {} event_badge_data = {} if account_id_random == 'd8TqXqf1EOg': # ISHLT @@ -109,13 +110,30 @@ async def event_import_reg( event_badge_data['badge_type'] = field.get('value') # This is probably not exactly right # Code naming clean up... - if field.get('value') == 'Physician': event_badge_data['badge_type_code'] = 'physician' - if field.get('value') == 'Nurse, Allied Health, Non-Physician': event_badge_data['badge_type_code'] = 'nurse_allied_nonphysician' - if field.get('value') == 'Trainee': event_badge_data['badge_type_code'] = 'trainee' - if field.get('value') == 'Industry': event_badge_data['badge_type_code'] = 'industry' - if field.get('value') == 'Exhibitor All Access': event_badge_data['badge_type_code'] = 'ex_all' - if field.get('value') == 'Exhibitor Booth Staff': event_badge_data['badge_type_code'] = 'ex_booth' - if field.get('value') == 'Guest': event_badge_data['badge_type_code'] = 'guest' + if field.get('value') == 'Physician': + event_badge_data['badge_type_code'] = 'physician' + event_badge_data['badge_type'] = 'Physician' + if field.get('value') == 'Nurse, Allied Health, Non-Physician': + event_badge_data['badge_type_code'] = 'nurse_allied_nonphysician' + event_badge_data['badge_type'] = 'Non-Physician' + if field.get('value') == 'Trainee': + event_badge_data['badge_type_code'] = 'trainee' + event_badge_data['badge_type'] = 'Trainee' + if field.get('value') == 'Industry': + event_badge_data['badge_type_code'] = 'industry' + event_badge_data['badge_type'] = 'Industry' + if field.get('value') == 'Exhibitor All Access': + event_badge_data['badge_type_code'] = 'ex_all' + event_badge_data['badge_type'] = 'Exhibitor All Access' + if field.get('value') == 'Exhibitor Booth Staff': + event_badge_data['badge_type_code'] = 'ex_booth' + event_badge_data['badge_type'] = 'Exhibitor Booth Staff' + if field.get('value') == 'Guest': + event_badge_data['badge_type_code'] = 'guest' + event_badge_data['badge_type'] = 'Guest' + elif event_registrant.get('customerType') == 'G': + event_badge_data['badge_type_code'] = 'guest' + event_badge_data['badge_type'] = 'Guest' event_badge_data['registration_type_code'] = field.get('value') event_badge_data['registration_type'] = field.get('value') @@ -125,6 +143,11 @@ async def event_import_reg( event_badge_data['badge_type'] = 'Guest' event_badge_data['registration_type_code'] = 'guest' event_badge_data['registration_type'] = 'Guest' + + # NOTE: It is unlikely(???) that guests will have custom_fields??? + if event_registrant.get('customerType') == 'G': + event_badge_data['badge_type_code'] = 'guest' + event_badge_data['badge_type'] = 'Guest' elif e_impexium_event_id == 'ISHLT 43rd Annual Meeting - Exhib Booth Staff Only': log.info('Processing ISHLT 2023 Annual Meeting Exhibit Only...') event_badge_data['event_badge_template_id'] = 10 @@ -137,19 +160,19 @@ async def event_import_reg( event_badge_data['event_badge_template_id'] = 11 if e_impexium_event_id == '2023 Lung Transplantation Morning Master Class': event_badge_data['badge_type_code'] = 'lung_morning' - event_badge_data['badge_type'] = 'Lung Transplantation Morning' + event_badge_data['badge_type'] = 'Lung Transplantation Morning Academy' elif e_impexium_event_id == '2023 Lung Transplantation Afternoon Master Class': event_badge_data['badge_type_code'] = 'lung_afternoon' - event_badge_data['badge_type'] = 'Lung Transplantation Afternoon' + event_badge_data['badge_type'] = 'Lung Transplantation Afternoon Academy' elif e_impexium_event_id == '2023 Nursing and Allied Health Master Class': event_badge_data['badge_type_code'] = 'nurse_allied_health' - event_badge_data['badge_type'] = 'Nursing and Allied Health' + event_badge_data['badge_type'] = 'Nursing and Allied Health Academy' elif e_impexium_event_id == '2023 Pediatric MCS Master Class': event_badge_data['badge_type_code'] = 'pediatric' event_badge_data['badge_type'] = 'Pediatric' elif e_impexium_event_id == '2023 Pulmonary Hypertension Master Class': event_badge_data['badge_type_code'] = 'pulmonary' - event_badge_data['badge_type'] = 'Pulmonary Hypertension' + event_badge_data['badge_type'] = 'Pulmonary Hypertension Academy' else: log.warning('Setting generic badge type. Event ID not fully setup?') event_badge_data['badge_type_code'] = event_registrant.get('registrantTypeCode') # MBR19, NonM @@ -250,13 +273,13 @@ async def event_import_reg( if isinstance(individual_profile_custom_field_li, list): for individual_profile_custom_field in individual_profile_custom_field_li: if individual_profile_custom_field.get('name') == 'degree': - degrees = individual_profile_custom_field.get('value') + degrees = individual_profile_custom_field.get('value').strip() # NOTE: Use only one of the organization names with a preference for the exhibiting name. (new for ISHLT 2023) if individual_profile_custom_field.get('name') == 'exhibiting_organization_name': - organization_name = individual_profile_custom_field.get('value') + organization_name = individual_profile_custom_field.get('value').strip() elif individual_profile_custom_field.get('name') == 'organization_name': - organization_name = individual_profile_custom_field.get('value') + organization_name = individual_profile_custom_field.get('value').strip() log.debug(f'Degrees: {degrees}; Organization Name: {organization_name}') else: @@ -293,53 +316,89 @@ async def event_import_reg( log.warning('Tried to get individual profile, but no results!') pass - - # if inc_individual_profile_custom_fields: - # log.info(f'Getting individual custom fields list for Event Registrant ID {event_registrant.get("id")}') - # individual_custom_fields_li = get_individual_custom_fields(individual_id=event_registrant.get('id')) - # log.debug(individual_custom_fields_li) - - # for individual_custom_field in individual_custom_fields_li: - # if individual_custom_field.get('name') == 'degree': - # degrees = individual_custom_field.get('value') - # if individual_custom_field.get('name') == 'organization_name': - # organization_name = individual_custom_field.get('value') - - # log.debug(f'Degrees: {degrees}; Organization Name: {organization_name}') - - - event_person_profile_data = {} event_person_profile_data['enable'] = True - event_person_profile_data['pronouns'] = event_registrant.get('gender') - event_person_profile_data['informal_name'] = event_registrant.get('preferredFirstName') + event_badge_data['enable'] = True - event_person_profile_data['title_names'] = event_registrant.get('prefix') - event_person_profile_data['given_name'] = event_registrant.get('firstName') - event_person_profile_data['middle_name'] = event_registrant.get('middleName') - event_person_profile_data['family_name'] = event_registrant.get('lastName') - event_person_profile_data['designations'] = event_registrant.get('suffix') + event_person_profile_data['pronouns'] = event_registrant.get('gender') + event_badge_data['pronouns'] = event_registrant.get('gender') + + if event_registrant.get('preferredFirstName'): + event_person_profile_data['informal_name'] = event_registrant.get('preferredFirstName').strip() + event_badge_data['informal_name'] = event_registrant.get('preferredFirstName').strip() + else: + event_person_profile_data['informal_name'] = None + event_badge_data['informal_name'] = None + + if event_registrant.get('prefix'): + event_person_profile_data['title_names'] = event_registrant.get('prefix').strip() + event_badge_data['title_names'] = event_registrant.get('prefix').strip() + else: + event_person_profile_data['title_names'] = None + event_badge_data['title_names'] = None + + event_person_profile_data['given_name'] = event_registrant.get('firstName').strip() + event_badge_data['given_name'] = event_registrant.get('firstName').strip() + + if event_registrant.get('middleName'): + event_person_profile_data['middle_name'] = event_registrant.get('middleName').strip() + event_badge_data['middle_name'] = event_registrant.get('middleName').strip() + else: + event_person_profile_data['middle_name'] = None + event_badge_data['middle_name'] = None + + if event_registrant.get('lastName'): + event_person_profile_data['family_name'] = event_registrant.get('lastName').strip() + event_badge_data['family_name'] = event_registrant.get('lastName').strip() + else: + event_person_profile_data['family_name'] = None + event_badge_data['family_name'] = None + + if event_registrant.get('suffix'): + event_person_profile_data['designations'] = event_registrant.get('suffix') + event_badge_data['designations'] = event_registrant.get('suffix') + else: + event_person_profile_data['designations'] = None + event_badge_data['designations'] = None if degrees: event_person_profile_data['professional_title'] = degrees # Ideally should be degrees for ISHLT + event_badge_data['professional_title'] = degrees # Ideally should be degrees for ISHLT else: - event_person_profile_data['professional_title'] = None # event_registrant.get('title') # Should this be None if no degrees found above??? + event_person_profile_data['professional_title'] = None + event_badge_data['professional_title'] = None + # event_registrant.get('title') # Should this be None if no degrees found above??? - event_person_profile_data['full_name'] = event_registrant.get('badgeName') - event_person_summary_data['full_name'] = event_registrant.get('badgeName') + full_name = None + if event_registrant.get('badgeName'): + full_name = event_registrant.get('badgeName').strip() + elif event_registrant.get('preferredFirstName') and event_registrant.get('lastName'): + full_name = event_registrant.get('preferredFirstName').strip() + ' ' + event_registrant.get('lastName').strip() + elif event_registrant.get('firstName') and event_registrant.get('lastName'): + full_name = event_registrant.get('firstName').strip() + ' ' + event_registrant.get('lastName').strip() + else: + full_name = event_registrant.get('firstName').strip() + event_person_profile_data['full_name'] = full_name + event_person_summary_data['full_name'] = full_name + event_badge_data['full_name'] = full_name if organization_name: event_person_profile_data['affiliations'] = organization_name # Ideally should be organization_name for ISHLT + event_badge_data['affiliations'] = organization_name # Ideally should be organization_name for ISHLT else: event_person_profile_data['affiliations'] = event_registrant.get('badgeOrganization') # Should this be None if no organization_name found above??? + event_badge_data['affiliations'] = event_registrant.get('badgeOrganization') # Should this be None if no organization_name found above??? - if email: event_person_profile_data['email'] = email + if email: + event_person_profile_data['email'] = email + event_badge_data['email'] = email event_person_data['event_person_profile'] = {} event_person_data['event_person_profile'] = event_person_profile_data # event_badge_data = {} # Initialized above ^ - event_badge_data['enable'] = True + # event_badge_data['enable'] = True event_badge_data['event_id'] = event_id + event_badge_data['external_event_id'] = e_impexium_event_id event_badge_data['external_id'] = external_id_v3 event_badge_data['external_person_id'] = external_person_id event_badge_data['external_registration_id'] = external_registration_id @@ -357,134 +416,6 @@ async def event_import_reg( event_badge_data['allow_tracking'] = False event_person_data['allow_tracking'] = False - # if reg_type_code := event_registrant.get('registrantTypeCode'): - # event_badge_data['badge_type_code'] = event_registrant.get('registrantTypeCode') # Using this as the badge_type - - # ishlt_m = ('AHMB', 'IMBR', 'MBR') - # ishlt_nm = ('ANHM', 'INMB', 'NMBR') - # ishlt_student_m = ('SMBR') - # ishlt_student_nm = ('SNMB') - # ishlt_ex_all = ('EX') - # ishlt_ex_booth = ('EX') - # ishlt_guest = ('GUEST') - # if reg_type_code in ishlt_m: - # event_badge_data['badge_type'] = 'Member' - # elif reg_type_code in ishlt_nm: - # event_badge_data['badge_type'] = 'Non-Member' - # elif reg_type_code in ishlt_student_m: - # event_badge_data['badge_type'] = 'Student/Trainee Member' - # elif reg_type_code in ishlt_student_nm: - # event_badge_data['badge_type'] = 'Student/Trainee Non-Member' - # elif reg_type_code in ishlt_ex_all: - # event_badge_data['badge_type'] = 'Exhibitor All Access' - # elif reg_type_code in ishlt_ex_booth: - # event_badge_data['badge_type'] = 'Exhibitor Booth Staff' - # elif reg_type_code in ishlt_guest: - # event_badge_data['badge_type'] = 'Guest' - # else: - # event_badge_data['badge_type'] = event_registrant.get('registrantTypeName') - - # if custom_fields := event_registrant.get('itemizedCustomFields'): - # if isinstance(custom_fields, list): - # log.info('Found list of custom fields for an exhibitor. Searching for "exhibitor_reg_type') - # for field in custom_fields: - # if field.get('name') == 'registration_type': - # event_badge_data['registration_type_code'] = field.get('value') - # event_badge_data['registration_type'] = field.get('value') - # break - # else: log.info('Found custom fields section, but no list was found.') - # else: - # log.warning('The custom fields were not found at all. Are the "details" being included?') - - # event_badge_data['event_badge_template_id'] = 3 - - # elif e_impexium_event_id == '42_AM': - # if not reg_type_code and event_registrant.get('guestOfRecordNumber'): - # event_badge_data['badge_type_code'] = 'GUEST' - # event_badge_data['badge_type'] = 'Guest' - - # event_badge_data['registration_type_code'] = 'GUEST' - # event_badge_data['registration_type'] = 'Guest' - # else: - # event_badge_data['badge_type_code'] = 'UNKNOWN' - # event_badge_data['badge_type'] = 'Unknown Type' - - # event_badge_data['registration_type_code'] = 'UNKNOWN' - # event_badge_data['registration_type'] = 'Unknown Type' - - # event_badge_data['event_badge_template_id'] = 3 - - # elif e_impexium_event_id == 'EX22_AM': - # event_badge_data['badge_type_code'] = 'EX' - # event_badge_data['badge_type'] = 'Exhibit Staff' - - # if custom_fields := event_registrant.get('itemizedCustomFields'): - # if isinstance(custom_fields, list): - # log.info('Found list of custom fields for an exhibitor. Searching for "exhibitor_reg_type') - # for field in custom_fields: - # if field.get('name') == 'exhibitor_reg_type': - # if field.get('value') == 'Exhibitor Booth Staff ': - # event_badge_data['badge_type_code'] = 'EXO' - # event_badge_data['badge_type'] = 'Exhibitor Booth Staff' - # elif field.get('value') == 'Exhibitor All Access ': - # event_badge_data['badge_type_code'] = 'EXALL' - # event_badge_data['badge_type'] = 'Exhibitor All Access' - - # event_badge_data['registration_type_code'] = field.get('value') - # event_badge_data['registration_type'] = field.get('value') - - # break - # else: log.info('Found custom fields section, but no list was found.') - # else: - # log.warning('The custom fields were not found at all. Are the "details" being included?') - # event_badge_data['event_badge_template_id'] = 3 - - # elif e_impexium_event_id == '2022HEART': - # if not reg_type_code and event_registrant.get('guestOfRecordNumber'): - # event_badge_data['badge_type_code'] = 'GUEST' - # event_badge_data['badge_type'] = 'Guest' - - # event_badge_data['registration_type_code'] = 'GUEST' - # event_badge_data['registration_type'] = 'Guest' - # else: - # event_badge_data['badge_type_code'] = 'HEART' - # event_badge_data['badge_type'] = 'HFTX Core' - - # event_badge_data['registration_type_code'] = 'HEART' - # event_badge_data['registration_type'] = 'HFTX Core' - - # event_badge_data['event_badge_template_id'] = 5 - - # # event_badge_data['registration_type_code'] = event_registrant.get('registrantTypeCode') - # # event_badge_data['registration_type'] = event_registrant.get('registrantTypeName') - - # elif e_impexium_event_id == '2022LUNG': - # if not reg_type_code and event_registrant.get('guestOfRecordNumber'): - # event_badge_data['badge_type_code'] = 'GUEST' - # event_badge_data['badge_type'] = 'Guest' - - # event_badge_data['badge_type_code'] = 'GUEST' - # event_badge_data['badge_type'] = 'Guest' - # else: - # event_badge_data['badge_type_code'] = 'LUNG' - # event_badge_data['badge_type'] = 'LTX Core' - - # event_badge_data['registration_type_code'] = 'LUNG' - # event_badge_data['registration_type'] = 'LTX Core' - - # event_badge_data['event_badge_template_id'] = 5 - - # # event_badge_data['registration_type_code'] = event_registrant.get('registrantTypeCode') - # # event_badge_data['registration_type'] = event_registrant.get('registrantTypeName') - - # else: - # event_badge_data['badge_type_code'] = 'UNKNOWN' - # event_badge_data['badge_type'] = 'Unknown Type' - # event_badge_data['event_badge_template_id'] = 3 - - # event_badge_data['registration_type_code'] = event_registrant.get('registrantTypeCode') - # event_badge_data['registration_type'] = event_registrant.get('registrantTypeName') - event_badge_data['member_type_code'] = event_registrant.get('customerType') # Using this as the member_type. Will update below if possible event_badge_data['member_type'] = None # Using this as the member_type. Will update below if possible event_badge_data['member_status'] = None @@ -528,30 +459,6 @@ async def event_import_reg( event_badge_data['badge_type_code'] = 'inactive_member_trainee' event_badge_data['badge_type_code'] = 'Trainee Non-Member' # Student/Trainee? - - event_badge_data['pronouns'] = event_registrant.get('gender') - event_badge_data['informal_name'] = event_registrant.get('preferredFirstName') - - event_badge_data['title_names'] = event_registrant.get('prefix') - event_badge_data['given_name'] = event_registrant.get('firstName') - event_badge_data['middle_name'] = event_registrant.get('middleName') - event_badge_data['family_name'] = event_registrant.get('lastName') - event_badge_data['designations'] = event_registrant.get('suffix') - - if degrees: - event_badge_data['professional_title'] = degrees # Ideally should be degrees for ISHLT - else: - event_badge_data['professional_title'] = None # event_registrant.get('title') # Should this be None if no degrees found above??? - - event_badge_data['full_name'] = event_registrant.get('badgeName') - - if organization_name: - event_badge_data['affiliations'] = organization_name # Ideally should be organization_name for ISHLT - else: - event_badge_data['affiliations'] = event_registrant.get('badgeOrganization') # Should this be None if no organization_name found above??? - - if email: event_badge_data['email'] = email - if address_line_1: event_badge_data['address_line_1'] = address_line_1 if address_line_2: event_badge_data['address_line_2'] = address_line_2 if address_line_3: event_badge_data['address_line_3'] = address_line_3 @@ -657,38 +564,6 @@ async def event_import_reg( break # return False - # event_badge_data = {} - # external_id = event_registrant.get('recordNumber')+':'+event_registrant.get('registrationNumber') - # event_badge_data['external_id'] = external_id - # # event_badge_data['reg_num'] = event_registrant.get('registrationNumber') - # event_badge_data['badge_type_code'] = event_registrant.get('registrantTypeCode') # Using this as the badge_type - # event_badge_data['badge_type'] = event_registrant.get('registrantTypeName') - # event_badge_data['member_type_code'] = event_registrant.get('customerType') # Using this as the member_type - # event_badge_data['registration_type_code'] = event_registrant.get('registrantTypeCode') - # event_badge_data['registration_type'] = event_registrant.get('registrantTypeName') - - # event_badge_data['pronouns'] = event_registrant.get('gender') - - # event_badge_data['informal_name'] = event_registrant.get('preferredFirstName') - # event_badge_data['title_names'] = event_registrant.get('prefix') - # event_badge_data['given_name'] = event_registrant.get('firstName') - # event_badge_data['middle_name'] = event_registrant.get('middleName') - # event_badge_data['family_name'] = event_registrant.get('lastName') - # # event_badge_data['not_sure'] = event_registrant.get('secondLastName') - - # event_badge_data['designations'] = event_registrant.get('suffix') - - # event_badge_data['professional_title'] = event_registrant.get('title') - - # event_badge_data['full_name'] = event_registrant.get('badgeName') - - # event_badge_data['affiliations'] = event_registrant.get('badgeOrganization') - - # event_badge_data['city'] = event_registrant.get('badgeCity') - # event_badge_data['state_province'] = event_registrant.get('badgeState') - - # id, attendedDate, sessions, itemizedCustomFields, guestOfRecordNumber, registrantTypeName, boughtTogetherWith, primaryOrganization, customerType, showInDirectory, addresses, emails, phones - event_person_li.append(event_person_data) event_person_summary_li.append(event_person_summary_data) loop_count = loop_count + 1