Work on Impexium and badges for ISHLT
This commit is contained in:
@@ -179,6 +179,7 @@ def get_events(page=1):
|
|||||||
# Updated 2021-10-07
|
# Updated 2021-10-07
|
||||||
def get_event_registrants(
|
def get_event_registrants(
|
||||||
event_code: str,
|
event_code: str,
|
||||||
|
details: bool = False,
|
||||||
page: int = 0,
|
page: int = 0,
|
||||||
# return_all: bool = False
|
# return_all: bool = False
|
||||||
):
|
):
|
||||||
@@ -209,7 +210,7 @@ def get_event_registrants(
|
|||||||
# pass
|
# pass
|
||||||
endpoint = f'/Events/{event_code}/Registrations/{page}'
|
endpoint = f'/Events/{event_code}/Registrations/{page}'
|
||||||
uri = api['base_url']+endpoint
|
uri = api['base_url']+endpoint
|
||||||
params = {}
|
params = { 'includeDetails': details }
|
||||||
|
|
||||||
if resp := requests.get(url=uri, params=params, headers=api['headers']): pass
|
if resp := requests.get(url=uri, params=params, headers=api['headers']): pass
|
||||||
else: break
|
else: break
|
||||||
|
|||||||
@@ -30,6 +30,10 @@ class Event_Badge_Base(BaseModel):
|
|||||||
event_id_random: Optional[str]
|
event_id_random: Optional[str]
|
||||||
event_id: Optional[int]
|
event_id: Optional[int]
|
||||||
|
|
||||||
|
# NOTE: This should only be used when the event_person record can not be created. And records before 2022.
|
||||||
|
event_id_random_only: Optional[str]
|
||||||
|
event_id_only: Optional[int]
|
||||||
|
|
||||||
event_person_id_random: Optional[str]
|
event_person_id_random: Optional[str]
|
||||||
event_person_id: Optional[int]
|
event_person_id: Optional[int]
|
||||||
|
|
||||||
@@ -73,6 +77,10 @@ class Event_Badge_Base(BaseModel):
|
|||||||
|
|
||||||
full_address: Optional[str]
|
full_address: Optional[str]
|
||||||
|
|
||||||
|
# This is updated using SQL triggers and a SQL function
|
||||||
|
# Combines informal, given, middle, family, email
|
||||||
|
query_str: Optional[str]
|
||||||
|
|
||||||
# NOTE: More badge fields need to be added here once things are cleaned up
|
# NOTE: More badge fields need to be added here once things are cleaned up
|
||||||
badge_type_code: Optional[str]
|
badge_type_code: Optional[str]
|
||||||
badge_type: Optional[str]
|
badge_type: Optional[str]
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ router = APIRouter()
|
|||||||
@router.get('/event/{e_impexium_event_id}/import_reg', response_model=Resp_Body_Base)
|
@router.get('/event/{e_impexium_event_id}/import_reg', response_model=Resp_Body_Base)
|
||||||
async def event_import_reg(
|
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)
|
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)
|
||||||
|
details: bool = False,
|
||||||
page: int = 0, # 250 per page from Impexium
|
page: int = 0, # 250 per page from Impexium
|
||||||
event_id: str = Query(..., min_length=11, max_length=22), # For ISHLT: ZDzTBlevhZs (2022-04)
|
event_id: str = Query(..., min_length=11, max_length=22), # For ISHLT: ZDzTBlevhZs (2022-04)
|
||||||
# Account ID For ISHLT: d8TqXqf1EOg
|
# Account ID For ISHLT: d8TqXqf1EOg
|
||||||
@@ -41,7 +42,7 @@ async def event_import_reg(
|
|||||||
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass
|
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass
|
||||||
else: return mk_resp(data=None, status_code=404, status_message=f'The Event ID was not found. Event ID: {event_id}', response=commons.response)
|
else: return mk_resp(data=None, status_code=404, status_message=f'The Event ID was not found. Event ID: {event_id}', response=commons.response)
|
||||||
|
|
||||||
event_registrant_li = get_event_registrants(event_code=e_impexium_event_id, page=page)
|
event_registrant_li = get_event_registrants(event_code=e_impexium_event_id, details=details, page=page)
|
||||||
log.debug(type(event_registrant_li))
|
log.debug(type(event_registrant_li))
|
||||||
|
|
||||||
# return mk_resp(data=len(event_registrant_li), status_code=501, response=commons.response) # Not Implemented
|
# return mk_resp(data=len(event_registrant_li), status_code=501, response=commons.response) # Not Implemented
|
||||||
@@ -62,6 +63,12 @@ async def event_import_reg(
|
|||||||
event_person_data['event_id'] = event_id
|
event_person_data['event_id'] = event_id
|
||||||
event_person_data['external_id'] = external_id
|
event_person_data['external_id'] = external_id
|
||||||
|
|
||||||
|
email = None
|
||||||
|
if details:
|
||||||
|
if emails := event_registrant.get('emails'):
|
||||||
|
if isinstance(emails, list) and len(emails):
|
||||||
|
email = emails[0].get('address')
|
||||||
|
|
||||||
event_person_profile_data = {}
|
event_person_profile_data = {}
|
||||||
event_person_profile_data['pronouns'] = event_registrant.get('gender')
|
event_person_profile_data['pronouns'] = event_registrant.get('gender')
|
||||||
event_person_profile_data['informal_name'] = event_registrant.get('preferredFirstName')
|
event_person_profile_data['informal_name'] = event_registrant.get('preferredFirstName')
|
||||||
@@ -78,6 +85,8 @@ async def event_import_reg(
|
|||||||
|
|
||||||
event_person_profile_data['affiliations'] = event_registrant.get('badgeOrganization')
|
event_person_profile_data['affiliations'] = event_registrant.get('badgeOrganization')
|
||||||
|
|
||||||
|
if email: event_person_profile_data['email'] = email
|
||||||
|
|
||||||
event_person_data['event_person_profile'] = {}
|
event_person_data['event_person_profile'] = {}
|
||||||
event_person_data['event_person_profile'] = event_person_profile_data
|
event_person_data['event_person_profile'] = event_person_profile_data
|
||||||
|
|
||||||
@@ -106,6 +115,8 @@ async def event_import_reg(
|
|||||||
|
|
||||||
event_badge_data['affiliations'] = event_registrant.get('badgeOrganization')
|
event_badge_data['affiliations'] = event_registrant.get('badgeOrganization')
|
||||||
|
|
||||||
|
if email: event_badge_data['email'] = email
|
||||||
|
|
||||||
event_badge_data['city'] = event_registrant.get('badgeCity')
|
event_badge_data['city'] = event_registrant.get('badgeCity')
|
||||||
event_badge_data['state_province'] = event_registrant.get('badgeState')
|
event_badge_data['state_province'] = event_registrant.get('badgeState')
|
||||||
|
|
||||||
|
|||||||
@@ -142,15 +142,17 @@ async def search_event_badge_obj_li(
|
|||||||
event_badge_id: str = Query(None, min_length=3, max_length=22),
|
event_badge_id: str = Query(None, min_length=3, max_length=22),
|
||||||
event_person_id: str = Query(None, min_length=3, max_length=22),
|
event_person_id: str = Query(None, min_length=3, max_length=22),
|
||||||
|
|
||||||
external_id: str = Query('%', max_length=100), # NOTE: Not currently used! 2022-02-15
|
external_id: str = Query(None, max_length=100), # NOTE: Not currently used! 2022-02-15
|
||||||
|
|
||||||
given_name: str = Query('%', max_length=25),
|
query_str: str = Query('', max_length=50),
|
||||||
family_name: str = Query('%', max_length=25),
|
|
||||||
email: str = Query('%', max_length=50),
|
given_name: str = Query('', max_length=25),
|
||||||
|
family_name: str = Query('', max_length=25),
|
||||||
|
email: str = Query('', max_length=50),
|
||||||
|
|
||||||
commons: Common_Route_Params = Depends(common_route_params),
|
commons: Common_Route_Params = Depends(common_route_params),
|
||||||
):
|
):
|
||||||
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
# account_id = commons.x_account_id
|
# account_id = commons.x_account_id
|
||||||
@@ -158,24 +160,50 @@ async def search_event_badge_obj_li(
|
|||||||
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass
|
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass
|
||||||
else: return mk_resp(data=None, status_code=404, response=commons.response)
|
else: return mk_resp(data=None, status_code=404, response=commons.response)
|
||||||
|
|
||||||
log.info(f'Searching: Event ID: {event_id}; Event Badge ID: {event_badge_id}; Event Person ID: {event_person_id}; External ID: {external_id}; Give Name: {given_name}; Family Name: {family_name}; Email: {email}')
|
if event_badge_id or event_person_id or external_id:
|
||||||
|
log.info(f'Searching: Event ID: {event_id}; Event Badge ID: {event_badge_id}; Event Person ID: {event_person_id}; External ID: {external_id}')
|
||||||
|
elif query_str:
|
||||||
|
log.info(f'Searching: Event ID: {event_id}; Query String: {query_str}')
|
||||||
|
else:
|
||||||
|
log.info(f'Searching: Event ID: {event_id}; Event Badge ID: {event_badge_id}; Event Person ID: {event_person_id}; External ID: {external_id}; Give Name: {given_name}; Family Name: {family_name}; Email: {email}')
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
# data['account_id'] = account_id
|
# data['account_id'] = account_id
|
||||||
data['event_id'] = event_id
|
data['event_id'] = event_id
|
||||||
|
|
||||||
|
# Adding the % symbol here because it turns certain combinations into special characters
|
||||||
if event_badge_id and len(event_badge_id) > 2:
|
if event_badge_id and len(event_badge_id) > 2:
|
||||||
log.info(f'Using Event Badge ID: {event_badge_id}')
|
log.info(f'Using Event Badge ID: {event_badge_id}')
|
||||||
data['event_badge_id_random'] = f'%{event_badge_id}%'
|
data['event_badge_id_random'] = f'%{event_badge_id}%'
|
||||||
elif event_person_id and len(event_person_id) > 2:
|
elif event_person_id and len(event_person_id) > 2:
|
||||||
log.info(f'Using Event Person ID: {event_person_id}')
|
log.info(f'Using Event Person ID: {event_person_id}')
|
||||||
data['event_person_id_random'] = f'%{event_person_id}%'
|
data['event_person_id_random'] = f'%{event_person_id}%'
|
||||||
else:
|
elif external_id and len(external_id) > 2:
|
||||||
|
log.info(f'Using External ID: {external_id}')
|
||||||
|
data['external_id'] = f'%{external_id}%'
|
||||||
|
elif query_str and len(query_str) > 1:
|
||||||
|
log.info(f'Using Query String: {query_str}')
|
||||||
|
|
||||||
|
# Strip (left right) whitespace then commas then semicolons
|
||||||
|
query_str = query_str.strip().strip(',').strip(';')
|
||||||
|
# Replace commas, semicolons, and then spaces with %
|
||||||
|
query_str_like = query_str.replace(',', ' ').replace(';', ' ').replace(' ', '%').replace(' ', '%')
|
||||||
|
# data['query_str'] = f'%{query_str}%'
|
||||||
|
log.debug(query_str_like)
|
||||||
|
data['query_str'] = f'%{query_str_like}%'
|
||||||
|
|
||||||
|
query_li = query_str.split()
|
||||||
|
data['query_li'] = query_li
|
||||||
|
elif len(given_name) > 1 or len(family_name) > 1 or len(email) > 1:
|
||||||
log.info(f'Using other data fields')
|
log.info(f'Using other data fields')
|
||||||
data['external_id'] = '%'+external_id+'%'
|
if given_name: data['given_name'] = '%'+given_name+'%'
|
||||||
data['given_name'] = '%'+given_name+'%'
|
else: data['given_name'] = '%'
|
||||||
data['family_name'] = '%'+family_name+'%'
|
if family_name: data['family_name'] = '%'+family_name+'%'
|
||||||
data['email'] = '%'+email+'%' # Adding the % symbol here because it turns certain combinations into special characters
|
else: data['family_name'] = '%'
|
||||||
|
if email: data['email'] = '%'+email+'%'
|
||||||
|
else: data['email'] = '%'
|
||||||
|
else:
|
||||||
|
return mk_resp(data=None, status_code=404, status_message=f'Need more characters for query.', response=commons.response)
|
||||||
log.debug(data)
|
log.debug(data)
|
||||||
|
|
||||||
sql_enabled, data['enable'] = sql_enable_part(table_name='event_badge', enabled=commons.enabled) # Reasonably safe return str and bool
|
sql_enabled, data['enable'] = sql_enable_part(table_name='event_badge', enabled=commons.enabled) # Reasonably safe return str and bool
|
||||||
@@ -201,6 +229,52 @@ async def search_event_badge_obj_li(
|
|||||||
ORDER BY event_badge.given_name ASC, event_badge.family_name ASC, event_badge.created_on DESC, event_badge.updated_on DESC
|
ORDER BY event_badge.given_name ASC, event_badge.family_name ASC, event_badge.created_on DESC, event_badge.updated_on DESC
|
||||||
{sql_limit};
|
{sql_limit};
|
||||||
"""
|
"""
|
||||||
|
elif external_id and len(external_id) > 2:
|
||||||
|
sql = f"""
|
||||||
|
SELECT *
|
||||||
|
FROM `v_event_badge` AS event_badge
|
||||||
|
WHERE event_badge.event_id = :event_id
|
||||||
|
AND event_badge.external_id LIKE :external_id
|
||||||
|
{sql_enabled}
|
||||||
|
ORDER BY event_badge.given_name ASC, event_badge.family_name ASC, event_badge.created_on DESC, event_badge.updated_on DESC
|
||||||
|
{sql_limit};
|
||||||
|
"""
|
||||||
|
elif query_str and len(query_str) > 1:
|
||||||
|
# sql = f"""
|
||||||
|
# SELECT *
|
||||||
|
# FROM `v_event_badge` AS event_badge
|
||||||
|
# WHERE event_badge.event_id = :event_id
|
||||||
|
# AND (
|
||||||
|
# event_badge.given_name LIKE :query_str
|
||||||
|
# OR event_badge.family_name LIKE :query_str
|
||||||
|
# OR event_badge.email LIKE :query_str
|
||||||
|
# )
|
||||||
|
# {sql_enabled}
|
||||||
|
# ORDER BY event_badge.given_name ASC, event_badge.family_name ASC, event_badge.created_on DESC, event_badge.updated_on DESC
|
||||||
|
# {sql_limit};
|
||||||
|
# """
|
||||||
|
# sql = f"""
|
||||||
|
# SELECT *
|
||||||
|
# FROM `v_event_badge` AS event_badge
|
||||||
|
# WHERE event_badge.event_id = :event_id
|
||||||
|
# AND (
|
||||||
|
# event_badge.given_name IN (:query_li)
|
||||||
|
# OR event_badge.family_name IN (:query_li)
|
||||||
|
# OR event_badge.email IN (:query_li)
|
||||||
|
# )
|
||||||
|
# {sql_enabled}
|
||||||
|
# ORDER BY event_badge.given_name ASC, event_badge.family_name ASC, event_badge.created_on DESC, event_badge.updated_on DESC
|
||||||
|
# {sql_limit};
|
||||||
|
# """
|
||||||
|
sql = f"""
|
||||||
|
SELECT *
|
||||||
|
FROM `v_event_badge` AS event_badge
|
||||||
|
WHERE event_badge.event_id = :event_id
|
||||||
|
AND event_badge.query_str LIKE :query_str
|
||||||
|
{sql_enabled}
|
||||||
|
ORDER BY event_badge.given_name ASC, event_badge.family_name ASC, event_badge.created_on DESC, event_badge.updated_on DESC
|
||||||
|
{sql_limit};
|
||||||
|
"""
|
||||||
else:
|
else:
|
||||||
# sql = f"""
|
# sql = f"""
|
||||||
# SELECT *
|
# SELECT *
|
||||||
|
|||||||
Reference in New Issue
Block a user