More improvement to Impexium API calls. Should be faster and more robust now.
This commit is contained in:
@@ -10,7 +10,7 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select,
|
||||
|
||||
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
|
||||
|
||||
from app.methods.e_impexium_methods import get_custom_fields, get_events, get_event_registrants
|
||||
from app.methods.e_impexium_methods import get_custom_fields, get_events, get_event_registrants, get_individual_custom_fields
|
||||
|
||||
from app.methods.event_person_methods import create_event_person_obj, create_update_event_person_obj_v4, get_event_person_rec_list, load_event_person_obj, update_event_person_obj, update_event_person_obj_v3
|
||||
|
||||
@@ -28,6 +28,7 @@ async def event_import_reg(
|
||||
e_impexium_event_id: str = Query(..., min_length=11, max_length=22), # For ISHLT: 42_AM (2022-04); EX22_AM (2022-04); 41V_2 (2021-04)
|
||||
registered_since: datetime.datetime = None, # datetime.datetime.now() + datetime.timedelta(seconds=120)
|
||||
details: bool = True,
|
||||
inc_membership_fields: bool = True,
|
||||
page: int = 0, # 250 per page from Impexium
|
||||
event_id: str = Query(..., min_length=11, max_length=22), # For ISHLT: ZDzTBlevhZs (2022-04)
|
||||
# Account ID For ISHLT: d8TqXqf1EOg
|
||||
@@ -54,17 +55,19 @@ async def event_import_reg(
|
||||
for event_registrant in event_registrant_li:
|
||||
if loop_count > loop_limit: break
|
||||
log.info(f"Record Num: {event_registrant.get('recordNumber')}, Registration Num: {event_registrant.get('registrationNumber')}, Registrant Type Code: {event_registrant.get('registrantTypeCode')}")
|
||||
log.debug(event_registrant)
|
||||
# log.debug(event_registrant)
|
||||
|
||||
# Creating an external ID from the Impexium record number and registration number. Very explicitly converting each number to a string before joining, just in case.
|
||||
external_id_old = str(event_registrant.get('recordNumber'))+':'+str(event_registrant.get('registrationNumber'))
|
||||
external_id_new = str(e_impexium_event_id)+':'+str(event_registrant.get('recordNumber'))+':'+str(event_registrant.get('registrationNumber'))
|
||||
external_sys_id = event_registrant.get('id') # Impexium UUID for person
|
||||
|
||||
event_person_data = {}
|
||||
event_person_data['account_id'] = account_id
|
||||
event_person_data['event_id'] = event_id
|
||||
event_person_data['external_id'] = external_id_new
|
||||
event_person_data['external_id_old'] = external_id_old
|
||||
event_person_data['external_sys_id'] = external_sys_id
|
||||
# event_person_data['external_id_old'] = external_id_old
|
||||
|
||||
email = None
|
||||
country_subdivision_code = None
|
||||
@@ -88,6 +91,20 @@ async def event_import_reg(
|
||||
country_alpha_2_code = country_data.get('twoLetterIsoCode')
|
||||
country = address.get('country')
|
||||
|
||||
degrees = None
|
||||
organization_name = None
|
||||
if inc_membership_fields:
|
||||
individual_custom_fields_li = get_individual_custom_fields(individual_id=event_registrant.get('id'))
|
||||
|
||||
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['pronouns'] = event_registrant.get('gender')
|
||||
event_person_profile_data['informal_name'] = event_registrant.get('preferredFirstName')
|
||||
@@ -98,11 +115,17 @@ async def event_import_reg(
|
||||
event_person_profile_data['family_name'] = event_registrant.get('lastName')
|
||||
event_person_profile_data['designations'] = event_registrant.get('suffix')
|
||||
|
||||
event_person_profile_data['professional_title'] = event_registrant.get('title')
|
||||
if degrees:
|
||||
event_person_profile_data['professional_title'] = degrees # Ideally should be degrees for ISHLT
|
||||
else:
|
||||
event_person_profile_data['professional_title'] = event_registrant.get('title') # Should this be None if no degrees found above???
|
||||
|
||||
event_person_profile_data['display_name'] = event_registrant.get('badgeName')
|
||||
|
||||
event_person_profile_data['affiliations'] = event_registrant.get('badgeOrganization')
|
||||
if organization_name:
|
||||
event_person_profile_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???
|
||||
|
||||
if email: event_person_profile_data['email'] = email
|
||||
|
||||
@@ -112,7 +135,8 @@ async def event_import_reg(
|
||||
event_badge_data = {}
|
||||
event_badge_data['event_id'] = event_id
|
||||
event_badge_data['external_id'] = external_id_new
|
||||
event_badge_data['external_id_old'] = external_id_old
|
||||
event_badge_data['external_sys_id'] = external_sys_id
|
||||
# event_badge_data['external_id_old'] = external_id_old
|
||||
|
||||
if reg_type_code := event_registrant.get('registrantTypeCode'):
|
||||
event_badge_data['badge_type_code'] = event_registrant.get('registrantTypeCode') # Using this as the badge_type
|
||||
@@ -204,11 +228,17 @@ async def event_import_reg(
|
||||
event_badge_data['family_name'] = event_registrant.get('lastName')
|
||||
event_badge_data['designations'] = event_registrant.get('suffix')
|
||||
|
||||
event_badge_data['professional_title'] = event_registrant.get('title')
|
||||
if degrees:
|
||||
event_badge_data['professional_title'] = degrees # Ideally should be degrees for ISHLT
|
||||
else:
|
||||
event_badge_data['professional_title'] = event_registrant.get('title') # Should this be None if no degrees found above???
|
||||
|
||||
event_badge_data['display_name'] = event_registrant.get('badgeName')
|
||||
|
||||
event_badge_data['affiliations'] = event_registrant.get('badgeOrganization')
|
||||
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
|
||||
|
||||
@@ -370,6 +400,25 @@ async def testing(
|
||||
)
|
||||
log.debug(type(event_registrant_li))
|
||||
|
||||
|
||||
for event_registrant in event_registrant_li:
|
||||
log.debug(event_registrant)
|
||||
log.info(f"ID: {event_registrant.get('id')}, Registration Num: {event_registrant.get('registrationNumber')}, Registrant Name: {event_registrant.get('badgeName')}")
|
||||
|
||||
individual_custom_fields_li = get_individual_custom_fields(individual_id=event_registrant.get('id'))
|
||||
# log.debug(individual_custom_fields_li)
|
||||
degrees = None
|
||||
organization_name = None
|
||||
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('organization_name') == 'organization_name':
|
||||
organization_name = individual_custom_field.get('value')
|
||||
|
||||
log.debug(f'Degree: {degrees}; Organization Name: {organization_name}')
|
||||
|
||||
|
||||
|
||||
if event_registrant_li:
|
||||
return mk_resp(data=event_registrant_li, status_code=200, response=commons.response)
|
||||
# return mk_resp(data=len(event_registrant_li), status_code=200, response=commons.response)
|
||||
|
||||
Reference in New Issue
Block a user