From 1604d6881752300d1aa9c3679adf88b4e81777a8 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Fri, 3 Feb 2023 16:05:48 -0500 Subject: [PATCH] ISHLT IMpexium import script improvements. --- app/routers/e_impexium.py | 51 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/app/routers/e_impexium.py b/app/routers/e_impexium.py index bc741dd..d517ff3 100644 --- a/app/routers/e_impexium.py +++ b/app/routers/e_impexium.py @@ -87,15 +87,36 @@ async def event_import_reg( event_badge_data = {} - if account_id_random == 'd8TqXqf1EOg': + if account_id_random == 'd8TqXqf1EOg': # ISHLT + badge_type_code_m = ('current_industry', 'current_nurse_allied_nonphysician', 'current_physician') + badge_type_code_nm = ('inactive_industry', 'inactive_nurse_allied_nonphysician', 'inactive_physician') + badge_type_code_student_m = ('current_trainee') + badge_type_code_student_nm = ('inactive_trainee') + badge_type_code_ex_all = ('ex', 'ex_all') + badge_type_code_ex_booth = ('ex_booth', 'exo') # booth or hall only + badge_type_code_guest = ('guest') + if e_impexium_event_id == '2023_Annual Meeting': log.info('Processing ISHLT 2023 Annual Meeting Registration...') event_badge_data['event_badge_template_id'] = 10 + event_badge_data['badge_type_code'] = None + event_badge_data['badge_type'] = None + log.info('Found list of custom fields for a registrant. Searching for "registration_selection"') for field in custom_fields: if field.get('name') == 'registration_selection': event_badge_data['badge_type_code'] = field.get('value') # This is probably not exactly right 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' + event_badge_data['registration_type_code'] = field.get('value') event_badge_data['registration_type'] = field.get('value') break @@ -107,9 +128,9 @@ async def event_import_reg( 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 - event_badge_data['badge_type_code'] = 'EXO' + event_badge_data['badge_type_code'] = 'ex_booth' event_badge_data['badge_type'] = 'Exhibitor Booth Staff' - event_badge_data['registration_type_code'] = 'EXO' + event_badge_data['registration_type_code'] = 'ex_booth' event_badge_data['registration_type'] = 'Exhibitor Booth Staff' elif e_impexium_event_id in ['2023 Lung Transplantation Morning Master Class', '2023 Lung Transplantation Afternoon Master Class', '2023 Nursing and Allied Health Master Class', '2023 Pediatric MCS Master Class', '2023 Pulmonary Hypertension Master Class']: log.info('Processing ISHLT 2023 Annual Meeting Academies...') @@ -258,6 +279,10 @@ async def event_import_reg( if membership_effective_datetime := individual_profile_membership.get('effectiveDate'): pass if membership_expire_datetime := individual_profile_membership.get('expireDate'): pass log.debug(f'Membership - Code: {membership_code}; Type: {membership_type}; Effective Datetime: {membership_effective_datetime}; Expire Datetime: {membership_expire_datetime}') + + # NOTE: The person may have multiple memberships (hopefully only one is current). Assume that if the expiration date for at least one of them is 2023-12-31 then they are current. + # We will break the loop after that future date has been found. + if individual_profile_membership.get('expireDate') == '2023-12-31T23:59:59': break else: log.warning('Found individual profile membership section, but no list was found.') individual_profile_membership_li = [] @@ -462,11 +487,13 @@ async def event_import_reg( 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 if membership_code: event_badge_data['member_type_code'] = membership_code else: event_badge_data['member_type_code'] = event_registrant.get('customerType') if membership_type: event_badge_data['member_type'] = membership_type + # NOTE: This membership expiration date should be the newest. There is a chance the person may have multiple overlapping membership types. Assuming this is not the case with ISHLT 2023. if membership_expire_datetime: current_datetime_utc = datetime.datetime.utcnow() # membership_expire_datetime_obj = datetime.datetime.strptime(membership_expire_datetime, '%Y-%m-%d') @@ -484,6 +511,24 @@ async def event_import_reg( # member_status = 'inactive' # Inactive member; expired event_badge_data['member_status'] = 'inactive' # Inactive member; expired + # More badge type code clean up + if e_impexium_event_id == '2023_Annual Meeting': + if event_badge_data['badge_type_code'] in ['industry', 'nurse_allied_nonphysician', 'physician']: + if event_badge_data['member_status'] == 'current': + event_badge_data['badge_type_code'] = 'current_member' + event_badge_data['badge_type'] = 'Member' + else: + event_badge_data['badge_type_code'] = 'inactive_member' + event_badge_data['badge_type'] = 'Non-Member' + elif event_badge_data['badge_type_code'] in ['trainee']: + if event_badge_data['member_status'] == 'current': + event_badge_data['badge_type_code'] = 'current_member_trainee' + event_badge_data['badge_type'] = 'Trainee Member' # Student/Trainee? + else: + 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')