Work on exhibits and badges and related

This commit is contained in:
Scott Idem
2022-04-11 19:38:10 -04:00
parent 8433f07e57
commit f64efa3494
3 changed files with 72 additions and 6 deletions

View File

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

View File

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

View File

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