From 7ceb1250266fde0e8aa325b5d9d788b2d9dc9b84 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 23 Sep 2021 16:04:16 -0400 Subject: [PATCH] Work on event person tracking --- app/methods/event_person_tracking_methods.py | 57 +++++++++++++++--- app/routers/event_person_tracking.py | 62 +++++++++++++++++++- 2 files changed, 110 insertions(+), 9 deletions(-) diff --git a/app/methods/event_person_tracking_methods.py b/app/methods/event_person_tracking_methods.py index cfe2ff3..3b9a8de 100644 --- a/app/methods/event_person_tracking_methods.py +++ b/app/methods/event_person_tracking_methods.py @@ -78,20 +78,60 @@ def load_event_person_tracking_obj( # for_obj_type: account, event, event_session, event_person # Updated 2021-09-21 def get_event_person_tracking_rec_list( - for_obj_type: str, # NOTE: This is not for_type because the field name generated based - for_obj_id: str, # NOTE: This is not for_id because the field name generated based + account_id: int|str, + event_id: int|str = None, + event_person_id: int|str = None, + event_session_id: int|str = None, + # for_obj_type: str, # NOTE: This is not for_type because the field name generated based + # for_obj_id: str, # NOTE: This is not for_id because the field name generated based enabled: str = 'enabled', # enabled, disabled, all limit: int = 1000, ) -> list|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass + data = {} + + if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass else: return False - data = {} - data[f'{for_obj_type}_id'] = for_obj_id - sql_obj_type_id = f'`event_person_tracking`.{for_obj_type}_id = :{for_obj_type}_id' + data['account_id'] = account_id + # sql_select_account_id = f'`event_person_tracking`.account_id = :account_id' + sql_select_account_id = '1=1' + + sql_select_event_id = '' + sql_select_event_person_id = '' + sql_select_event_session_id = '' + + if event_id: + if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass + else: return False + + data['event_id'] = event_id + sql_select_event_id = f'AND `event_person_tracking`.event_id = :event_id' + + if event_person_id: + if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass + else: return False + + data['event_person_id'] = event_person_id + sql_select_event_person_id = f'AND `event_person_tracking`.event_person_id = :event_person_id' + + if event_session_id: + if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass + else: return False + + data['event_session_id'] = event_session_id + sql_select_event_session_id = f'AND `event_person_tracking`.event_session_id = :event_session_id' + + if event_id or event_person_id or event_session_id: pass + else: return False + + # if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass + # else: return False + + # data[f'{for_obj_type}_id'] = for_obj_id + # sql_obj_type_id = f'`event_person_tracking`.{for_obj_type}_id = :{for_obj_type}_id' # if enabled in ['enabled', 'disabled', 'all']: # if enabled == 'enabled': @@ -114,7 +154,10 @@ def get_event_person_tracking_rec_list( SELECT `event_person_tracking`.id AS 'event_person_tracking_id', `event_person_tracking`.id_random AS 'event_person_tracking_id_random' FROM `event_person_tracking` AS `event_person_tracking` WHERE - {sql_obj_type_id} + {sql_select_account_id} + {sql_select_event_id} + {sql_select_event_person_id} + {sql_select_event_session_id} {sql_enabled} ORDER BY `event_person_tracking`.created_on DESC, `event_person_tracking`.updated_on DESC {sql_limit}; diff --git a/app/routers/event_person_tracking.py b/app/routers/event_person_tracking.py index 8a73a32..4e248e2 100644 --- a/app/routers/event_person_tracking.py +++ b/app/routers/event_person_tracking.py @@ -116,6 +116,64 @@ async def get_event_person_tracking_obj( return result +# ### BEGIN ### API Event Person Tracking ### get_event_person_obj_tracking_list() ### +# Updated 2021-09-23 +@router.get('/event/person/{event_person_id}/tracking/list', response_model=Resp_Body_Base) +async def get_event_person_obj_tracking_list( + event_person_id: str = Query(..., min_length=11, max_length=22), + event_session_id: str = Query(None, min_length=11, max_length=22), + limit: int = 500, # For now this covers any included objects or object lists + enabled: str = 'enabled', # For now this covers any included objects or object lists + inc_event_person: bool = False, + inc_event_session: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + response: Response = Response, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass + else: return mk_resp(data=None, status_code=404, response=response) + + if event_session_id: + if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass + else: return mk_resp(data=None, status_code=404, response=response) + + # Updated 2021-09-21 + if event_person_tracking_rec_list_result := get_event_person_tracking_rec_list( + account_id = x_account_id, + event_person_id = event_person_id, + event_session_id = event_session_id, + enabled = enabled, + limit = limit, + ): + event_person_tracking_result_list = [] + for event_person_tracking_rec in event_person_tracking_rec_list_result: + if load_event_person_tracking_result := load_event_person_tracking_obj( + event_person_tracking_id = event_person_tracking_rec.get('event_person_tracking_id', None), + enabled = enabled, + limit = limit, + inc_event_person = inc_event_person, + inc_event_session = inc_event_session, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + ): + event_person_tracking_result_list.append(load_event_person_tracking_result) + else: + event_person_tracking_result_list.append(None) + response_data = event_person_tracking_result_list + elif isinstance(event_person_tracking_rec_list_result, list): + return mk_resp(data=False, status_code=404, response=response) # Not Found + else: + return mk_resp(data=False, status_code=400, response=response) # Bad Request + + return mk_resp(data=response_data, response=response) +# ### END ### API Event Person Tracking ### get_event_person_obj_tracking_list() ### + + # ### BEGIN ### API Event Person Tracking ### get_event_session_obj_event_person_tracking_list() ### # Updated 2021-09-21 @router.get('/event/session/{event_session_id}/event/person/tracking/list', response_model=Resp_Body_Base) @@ -138,8 +196,8 @@ async def get_event_session_obj_event_person_tracking_list( # Updated 2021-09-21 if event_person_tracking_rec_list_result := get_event_person_tracking_rec_list( - for_obj_type = 'event_session', - for_obj_id = event_session_id, + account_id = x_account_id, + event_session_id = event_session_id, enabled = enabled, limit = limit, ):