More improvement to Impexium API calls. Should be faster and more robust now.

This commit is contained in:
Scott Idem
2022-03-23 15:38:53 -04:00
parent 7c7bd3c530
commit c625cda845
5 changed files with 120 additions and 55 deletions

View File

@@ -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)