diff --git a/app/methods/event_exhibit_tracking_methods.py b/app/methods/event_exhibit_tracking_methods.py index 382fab6..caf4ca1 100644 --- a/app/methods/event_exhibit_tracking_methods.py +++ b/app/methods/event_exhibit_tracking_methods.py @@ -85,7 +85,7 @@ def update_event_exhibit_tracking_obj( event_exhibit_tracking_dict = event_exhibit_tracking_dict_obj event_exhibit_tracking_dict['id'] = event_exhibit_tracking_id try: - event_exhibit_tracking_obj = Person_Base(**event_exhibit_tracking_dict) + event_exhibit_tracking_obj = Event_Exhibit_Tracking_Base(**event_exhibit_tracking_dict) except ValidationError as e: log.error(e.json()) return False @@ -94,7 +94,31 @@ def update_event_exhibit_tracking_obj( event_exhibit_tracking_obj.id = event_exhibit_tracking_id log.debug(event_exhibit_tracking_obj) - event_exhibit_tracking_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={ 'event_id', 'event_id_random', 'event_badge', 'event_badge_id_random', 'event_badge_informal_name', 'event_badge_given_name', 'event_badge_family_name', 'event_badge_display_name', 'event_badge_full_name', 'event_badge_affiliations', 'event_badge_email', 'event_person_informal_name', 'event_person_given_name', 'event_person_family_name', 'event_person_display_name', 'event_person_full_name', 'event_person_affiliations', 'event_person_email', 'event_exhibit_name', 'event_person', 'event_person_id_random', 'created_on', 'updated_on'}) + event_exhibit_tracking_dict = event_exhibit_tracking_obj.dict( + by_alias = False, + exclude_defaults = False, + exclude_unset = True, + exclude = { + 'event_id', 'event_id_random', 'event_badge', 'event_badge_id_random', + 'event_badge_informal_name', 'event_badge_title_names', + 'event_badge_given_name', 'event_badge_middle_name', 'event_badge_family_name', + 'event_badge_display_name', 'event_badge_full_name', + + 'event_badge_designations', 'event_badge_professional_title', 'event_badge_affiliations', + 'event_badge_email', + 'event_badge_city', + 'event_badge_country_subdivision_code', 'event_badge_state_province_abb', 'event_badge_state_province', + 'event_badge_country_alpha_2_code', 'event_badge_country', + + 'event_badge_badge_type_code', 'event_badge_badge_type', 'event_badge_registration_type_code', 'event_badge_registration_type', + + 'event_person_informal_name', 'event_person_given_name', + 'event_person_family_name', 'event_person_display_name', 'event_person_full_name', + 'event_person_affiliations', 'event_person_email', + 'event_exhibit_name', + 'event_person', 'event_person_id_random', 'created_on', 'updated_on' + } + ) # ### SECTION ### Process data if event_exhibit_tracking_dict_up_result := sql_update( @@ -210,19 +234,21 @@ def load_event_exhibit_tracking_obj( def get_event_exhibit_tracking_rec_list( event_id: int|str = None, event_exhibit_id: int|str = None, + event_badge_id: int|str = None, event_person_id: int|str = None, hidden: str = 'not_hidden', # hidden, not_hidden, all enabled: str = 'enabled', # enabled, disabled, all limit: int = 100, offset: int = 0, ) -> list|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) data = {} sql_select_event_id = '' sql_select_event_exhibit_id = '' + sql_select_event_badge_id = '' sql_select_event_person_id = '' if event_id: @@ -241,6 +267,13 @@ def get_event_exhibit_tracking_rec_list( data['event_exhibit_id'] = event_exhibit_id sql_select_event_exhibit_id = f'AND `event_exhibit_tracking`.event_exhibit_id = :event_exhibit_id' + if event_badge_id: + if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): pass + else: return False + + data['event_badge_id'] = event_badge_id + sql_select_event_badge_id = f'AND `event_exhibit_tracking`.event_badge_id = :event_badge_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 @@ -275,17 +308,19 @@ def get_event_exhibit_tracking_rec_list( sql_limit = '' sql = f""" - SELECT `event_exhibit_tracking`.id AS 'event_exhibit_tracking_id', `event_exhibit_tracking`.id_random AS 'event_exhibit_tracking_id_random' + SELECT `event_exhibit_tracking`.id AS 'event_exhibit_tracking_id', `event_exhibit_tracking`.id_random AS 'event_exhibit_tracking_id_random', priority AS 'priority', sort AS 'sort', hide AS 'hide', enable AS 'enable' FROM `v_event_exhibit_tracking` AS `event_exhibit_tracking` WHERE {sql_select_event_id} {sql_select_event_exhibit_id} + {sql_select_event_badge_id} {sql_select_event_person_id} {sql_hidden} {sql_enabled} ORDER BY `event_exhibit_tracking`.priority DESC, `event_exhibit_tracking`.sort ASC, `event_exhibit_tracking`.created_on DESC, `event_exhibit_tracking`.updated_on DESC {sql_limit}; """ + log.debug(sql) if event_exhibit_rec_li_result := sql_select(data=data, sql=sql, as_list=True, log_lvl=logging.WARNING): log.info('Got a list result') diff --git a/app/models/event_exhibit_tracking_models.py b/app/models/event_exhibit_tracking_models.py index 35feeec..4998816 100644 --- a/app/models/event_exhibit_tracking_models.py +++ b/app/models/event_exhibit_tracking_models.py @@ -51,12 +51,24 @@ class Event_Exhibit_Tracking_Base(BaseModel): # Including convenience data # This is only for convenience. Probably going to keep unless it causes a problem. event_badge_informal_name: Optional[str] + event_badge_title_names: Optional[str] event_badge_given_name: Optional[str] + event_badge_middle_name: Optional[str] event_badge_family_name: Optional[str] event_badge_display_name: Optional[str] event_badge_full_name: Optional[str] + + event_badge_designations: Optional[str] + event_badge_professional_title: Optional[str] event_badge_affiliations: Optional[str] + event_badge_email: Optional[str] + event_badge_city: Optional[str] + country_subdivision_code: Optional[str] + state_province_abb: Optional[str] + state_province: Optional[str] + country_alpha_2_code: Optional[str] + country: Optional[str] event_person_informal_name: Optional[str] event_person_given_name: Optional[str] diff --git a/app/routers/event_exhibit_tracking.py b/app/routers/event_exhibit_tracking.py index 402a7f1..1bb82c6 100644 --- a/app/routers/event_exhibit_tracking.py +++ b/app/routers/event_exhibit_tracking.py @@ -34,7 +34,7 @@ async def post_event_exhibit_tracking_obj( commons: Common_Route_Params = Depends(common_route_params), ): - log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) # time.sleep(1) @@ -64,9 +64,28 @@ async def post_event_exhibit_tracking_obj( ): pass elif event_exhibit_tracking_id is None: # NOTE: I think it makes sense to try and look up the record using the Exhibitor and Person ID. This is for API call convenience. - if event_exhibit_tracking_rec_li := get_event_exhibit_tracking_rec_list(event_exhibit_id=event_exhibit_id,event_person_id=event_person_id): + if event_exhibit_tracking_rec_li := get_event_exhibit_tracking_rec_list( + event_exhibit_id = event_exhibit_id, + event_badge_id = event_badge_id, + event_person_id = event_person_id, + hidden = 'all', + ): + # log.debug(event_exhibit_tracking_rec_li) event_exhibit_tracking_rec = event_exhibit_tracking_rec_li[0] event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id') + + log.debug(event_exhibit_tracking_rec.get('hide')) + if event_exhibit_tracking_rec.get('hide'): + event_exhibit_tracking_data = {} + event_exhibit_tracking_data['hide'] = False + if event_exhibit_tracking_update_result := update_event_exhibit_tracking_obj( + event_exhibit_tracking_id = event_exhibit_tracking_id, + event_exhibit_tracking_dict_obj = event_exhibit_tracking_data, + ): pass + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=commons.response, status_message='Not updated. Something failed while processing the data. Check the field names and data types.') # Bad Request + else: log.warning('Should this be possible if there was an existing record? Assuming there is an existing record because the SQL function result was None.') return mk_resp(data=None, status_code=200, response=commons.response, status_message='Not created. Likely duplicate entry. Returning None.') # Success