From df6e8606206490b2e21d5c5356a805704faf2d0b Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 15 Feb 2022 16:05:29 -0500 Subject: [PATCH] General code clean up. More work on event tracking related --- app/db_sql.py | 34 ++- app/main.py | 5 + app/methods/event_exhibit_tracking_methods.py | 54 +++-- app/models/event_exhibit_tracking_models.py | 2 +- app/models/membership_person_models.py | 2 +- app/models/membership_person_type_models.py | 2 +- app/routers/event_exhibit_tracking.py | 211 ++++++++++++------ app/routers/person.py | 9 +- 8 files changed, 208 insertions(+), 111 deletions(-) diff --git a/app/db_sql.py b/app/db_sql.py index 14651d9..d2a9193 100644 --- a/app/db_sql.py +++ b/app/db_sql.py @@ -39,7 +39,7 @@ def sql_insert( rm_id_random: bool = False, id_random_length: int = 8, log_lvl: int = logging.WARNING, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - ): + ) -> None|bool|int: log.setLevel(log_lvl) if sql: @@ -623,10 +623,10 @@ def sql_select( log.debug('Successfully executed the SQL on the first try.') pass - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(f'Row count: {result.rowcount}') - #log.debug(vars(result)) - #log.debug(dir(result)) + # log.debug(vars(result)) + # log.debug(dir(result)) # NOTE: as_dict defaults to True for this function # NOTE: as_list defaults to False for this function @@ -679,7 +679,7 @@ def sql_select( # ### BEGIN ### Core Help CRUD ### sql_delete() ### # The catch all SQL DELETE function - STI 2021-02-17 # This one does it all for SQL DELETE queries -# Updated 2021-09-07 +# Updated 2022-02-15 @logger_reset def sql_delete( table_name: str|None = None, @@ -689,8 +689,8 @@ def sql_delete( field_value = None, sql: str|None = None, data: dict|None = None, - log_lvl: int = logging.WARNING, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - ): + log_lvl: int = logging.DEBUG, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + ) -> None|bool: log.setLevel(log_lvl) if table_name and (record_id or record_id_random) and not (field_name or field_value or sql or data): @@ -762,7 +762,7 @@ def sql_delete( # return False try: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL if data: log.info('Executing with SQL (DELETE) statement and data...') result = db.execute(sql, data) @@ -791,7 +791,7 @@ def sql_delete( db.engine.dispose() log.info('Now trying the query again...') try: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL if data: log.info('2x Executing with SQL statement and data...') result = db.execute(sql, data) @@ -826,8 +826,20 @@ def sql_delete( log.info('Successfully executed the SQL on the first try.') pass - # NOTE: Need to deal with 0 rows affected when the WHERE clause was not satisfied and there was no error. - return True # Successful + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(f'Row count: {result.rowcount}') + # log.debug(vars(result)) + # log.debug(dir(result)) + + if result.rowcount == 1: + log.info(f'Deleted one record. Returning True.') + return True # Successful + elif result.rowcount > 1: + log.info(f'Deleted {result.rowcount} records. Returning True.') + return True # Successful + else: + log.info('No records deleted. Returning None.') + return None # Successful even though no results # ### END ### Core Help CRUD ### sql_delete() ### diff --git a/app/main.py b/app/main.py index 414bc96..7837915 100644 --- a/app/main.py +++ b/app/main.py @@ -137,6 +137,11 @@ app.include_router( prefix='/event/exhibit', tags=['Event Exhibit'], ) +app.include_router( + event_exhibit_tracking.router, + # prefix='/event/exhibit/tracking', + tags=['Event Exhibit Tracking'], +) app.include_router( event_file.router, prefix='/event/file', diff --git a/app/methods/event_exhibit_tracking_methods.py b/app/methods/event_exhibit_tracking_methods.py index a13c882..8ed93a7 100644 --- a/app/methods/event_exhibit_tracking_methods.py +++ b/app/methods/event_exhibit_tracking_methods.py @@ -4,7 +4,7 @@ import datetime from typing import Dict, List, Optional, Set, Union from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator -from app.db_sql import get_account_id_w_for_type_id, redis_lookup_id_random, sql_insert, sql_select, sql_update +from app.db_sql import get_account_id_w_for_type_id, redis_lookup_id_random, sql_delete, sql_insert, sql_select, sql_update from app.lib_general import log, logging, logger_reset from app.models.common_field_schema import default_num_bytes @@ -15,7 +15,7 @@ from app.models.event_exhibit_tracking_models import Event_Exhibit_Tracking_Base # Updated 2022-02-15 @logger_reset def create_event_exhibit_tracking_obj( - exhibit_id: int|str, + event_exhibit_id: int|str, event_exhibit_tracking_dict_obj: Event_Exhibit_Tracking_Base, event_badge_id: int = None, event_person_id: int = None, @@ -30,7 +30,7 @@ def create_event_exhibit_tracking_obj( log.debug(type(event_exhibit_tracking_dict_obj)) if isinstance(event_exhibit_tracking_dict_obj, dict): event_exhibit_tracking_dict = event_exhibit_tracking_dict_obj - event_exhibit_tracking_dict['event_id'] = event_id + event_exhibit_tracking_dict['event_exhibit_id'] = event_exhibit_id event_exhibit_tracking_dict['event_badge_id'] = event_badge_id event_exhibit_tracking_dict['event_person_id'] = event_person_id try: @@ -40,7 +40,7 @@ def create_event_exhibit_tracking_obj( return False else: event_exhibit_tracking_obj = event_exhibit_tracking_dict_obj - event_exhibit_tracking_obj.event_id = event_id + event_exhibit_tracking_obj.event_exhibit_id = event_exhibit_id event_exhibit_tracking_obj.event_badge_id = event_badge_id event_exhibit_tracking_obj.event_person_id = event_person_id log.debug(event_exhibit_tracking_obj) @@ -53,17 +53,13 @@ def create_event_exhibit_tracking_obj( table_name = 'event_exhibit_tracking', rm_id_random = True, id_random_length = default_num_bytes - ): pass + ): + event_exhibit_tracking_id = event_exhibit_tracking_dict_in_result + log.info(f'Returning the new Event Exhibit Tracking ID: {event_exhibit_tracking_id}') + return event_exhibit_tracking_id else: log.warning(f'Event Exhibit Tracking not created.') - return False - - log.debug(event_exhibit_tracking_dict_in_result) - event_exhibit_tracking_id = event_exhibit_tracking_dict_in_result - - log.info(f'Returning the new Event Exhibit Tracking ID: {event_exhibit_tracking_id}') - - return event_exhibit_tracking_id + return event_exhibit_tracking_dict_in_result # False or None # ### END ### API Event Exhibit Tracking Methods ### create_event_exhibit_tracking_obj() ### @@ -100,17 +96,37 @@ def update_event_exhibit_tracking_obj( data = event_exhibit_tracking_dict, table_name = 'event_exhibit_tracking', rm_id_random = True, - ): pass + ): + log.info(f'Updated the Event Exhibit Tracking ID: {event_exhibit_tracking_id}') + return event_exhibit_tracking_id else: log.warning(f'Event Exhibit Tracking not updated.') - return False - - log.debug(event_exhibit_tracking_dict_up_result) - - return True + return event_exhibit_tracking_dict_up_result # False or None # ### END ### API Event Exhibit Tracking Methods ### update_event_exhibit_tracking_obj() ### +# ### BEGIN ### API Event Exhibit Tracking Methods ### delete_event_exhibit_tracking_obj() ### +# Updated 2022-02-15 +@logger_reset +def remove_event_exhibit_tracking_obj( + event_exhibit_tracking_id: int, + log_lvl: int = logging.DEBUG, # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + ) -> bool|None: + log.setLevel(log_lvl) + + if event_exhibit_tracking_dict_del_result := sql_delete( + table_name = 'event_exhibit_tracking', + record_id = event_exhibit_tracking_id, + log_lvl = log_lvl, + ): + log.info(f'Event Exhibit Tracking was deleted.') + return True + else: + log.warning(f'Event Exhibit Tracking not deleted.') + return event_exhibit_tracking_dict_del_result # False or None +# ### END ### API Event Exhibit Tracking Methods ### delete_event_exhibit_tracking_obj() ### + + # ### BEGIN ### API Event Exhibit Tracking Methods ### load_event_exhibit_tracking_obj() ### # Updated 2022-02-14 @logger_reset diff --git a/app/models/event_exhibit_tracking_models.py b/app/models/event_exhibit_tracking_models.py index 270c76f..2aa63dd 100644 --- a/app/models/event_exhibit_tracking_models.py +++ b/app/models/event_exhibit_tracking_models.py @@ -69,7 +69,7 @@ class Event_Exhibit_Tracking_Base(BaseModel): event_exhibit_name: Optional[str] # Including other related objects - event_badge: Optional[Union[Event_Badge_Base, None]] + # event_badge: Optional[Union[Event_Badge_Base, None]] event_person: Optional[Union[Event_Person_Base, None]] _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) diff --git a/app/models/membership_person_models.py b/app/models/membership_person_models.py index 2f97c3e..bc14d25 100644 --- a/app/models/membership_person_models.py +++ b/app/models/membership_person_models.py @@ -20,7 +20,7 @@ from app.models.product_models import Product_Base class Membership_Person_Base(BaseModel): - log.setLevel(logging.DEBUG) + log.setLevel(logging.INFO) log.debug(locals()) id_random: Optional[str] = Field( diff --git a/app/models/membership_person_type_models.py b/app/models/membership_person_type_models.py index bbd98e7..d76c3a1 100644 --- a/app/models/membership_person_type_models.py +++ b/app/models/membership_person_type_models.py @@ -14,7 +14,7 @@ from app.models.product_models import Product_Base class Membership_Person_Type_Base(BaseModel): - log.setLevel(logging.DEBUG) + log.setLevel(logging.INFO) log.debug(locals()) id_random: Optional[str] = Field( diff --git a/app/routers/event_exhibit_tracking.py b/app/routers/event_exhibit_tracking.py index cea89cf..11b708c 100644 --- a/app/routers/event_exhibit_tracking.py +++ b/app/routers/event_exhibit_tracking.py @@ -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.event_exhibit_tracking_methods import create_event_exhibit_tracking_obj, get_event_exhibit_tracking_rec_list, load_event_exhibit_tracking_obj, update_event_exhibit_tracking_obj +from app.methods.event_exhibit_tracking_methods import create_event_exhibit_tracking_obj, remove_event_exhibit_tracking_obj, get_event_exhibit_tracking_rec_list, load_event_exhibit_tracking_obj, update_event_exhibit_tracking_obj from app.models.event_exhibit_tracking_models import Event_Exhibit_Tracking_Base from app.models.response_models import Resp_Body_Base, mk_resp @@ -19,13 +19,18 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() +# ### BEGIN ### API Event Exhibit Tracking ### post_event_exhibit_tracking_obj() ### +# Updated 2022-02-15 @router.post('/event/exhibit/tracking', response_model=Resp_Body_Base) async def post_event_exhibit_tracking_obj( - event_exhibit_tracking_obj: Event_Exhibit_Tracking_Base, event_exhibit_id: str = Query(..., min_length=11, max_length=22), + event_exhibit_tracking_obj: Event_Exhibit_Tracking_Base = {}, event_badge_id: str = Query(None, min_length=11, max_length=22), event_person_id: str = Query(None, min_length=11, max_length=22), + inc_event_badge: bool = False, + inc_event_exhibit: bool = False, + inc_event_person: bool = False, return_obj: bool = True, commons: Common_Route_Params = Depends(common_route_params), @@ -43,55 +48,89 @@ async def post_event_exhibit_tracking_obj( else: return mk_resp(data=None, status_code=404, response=commons.response, status_message='The Event Badge ID was invalid or not found.') if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass - # elif event_person_id is None: pass + elif event_person_id is None: pass else: return mk_resp(data=None, status_code=404, response=commons.response, status_message='The Event Person ID was invalid or not found.') + if event_badge_id or event_person_id: pass + else: return mk_resp(data=None, status_code=404, response=commons.response, status_message='The Event Badge ID or Event Person ID is required.') + # ### SECTION ### Process data - if membership_person_id := create_membership_person_obj( - account_id = commons.x_account_id, - person_id = person_id, - membership_person_dict_obj = membership_person_obj, + if event_exhibit_tracking_id := create_event_exhibit_tracking_obj( + event_exhibit_id = event_exhibit_id, + event_exhibit_tracking_dict_obj = event_exhibit_tracking_obj, + event_badge_id = event_badge_id, + event_person_id = event_person_id, ): pass - else: return mk_resp(data=False, status_code=400, response=commons.response, status_message='The membership person was not created. Check the field names and data types.') # Bad Request + elif event_exhibit_tracking_id is None: + return mk_resp(data=None, status_code=200, response=commons.response, status_message='Not created. Likely duplicate entry. Returning None.') # Success + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=commons.response, status_message='Not created. Something failed while processing the data. Check the field names and data types.') # Bad Request - obj_type = 'event_exhibit_tracking' - event_exhibit_tracking_obj_data_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_unset=True) - result = post_obj_template( - obj_type = obj_type, - data = event_exhibit_tracking_obj_data_dict, - return_obj = True, - by_alias = True, - exclude_unset = True, - ) - return result + # ### SECTION ### Return successful results + if return_obj: + event_exhibit_tracking_obj = load_event_exhibit_tracking_obj( + event_exhibit_tracking_id = event_exhibit_tracking_id, + inc_event_badge = inc_event_badge, + inc_event_exhibit = inc_event_exhibit, + inc_event_person = inc_event_person, + ).dict(by_alias=commons.by_alias, exclude_unset=commons.exclude_unset) + data = event_exhibit_tracking_obj + else: + event_exhibit_tracking_id_random = get_id_random(record_id=event_exhibit_tracking_id, table_name='event_exhibit_tracking') + data = {} + data['event_exhibit_tracking_id'] = event_exhibit_tracking_id + data['event_exhibit_tracking_id_random'] = person_id_random + return mk_resp(data=data, response=commons.response) +# ### END ### API Event Exhibit Tracking ### post_event_exhibit_tracking_obj() ### +# ### BEGIN ### API Event Exhibit Tracking ### patch_event_exhibit_tracking_obj() ### +# Updated 2022-02-15 @router.patch('/event/exhibit/tracking/{event_exhibit_tracking_id}', response_model=Resp_Body_Base) async def patch_event_exhibit_tracking_obj( event_exhibit_tracking_obj: Event_Exhibit_Tracking_Base, - event_exhibit_tracking_id: str = Query(..., min_length=1, max_length=22), - x_account_id: Optional[str] = Header(..., ), - return_obj: Optional[bool] = True, - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - response: Response = Response, + event_exhibit_tracking_id: str = Query(..., min_length=11, max_length=22), + + inc_event_badge: bool = False, + inc_event_exhibit: bool = False, + inc_event_person: bool = False, + return_obj: bool = True, + + commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'event_exhibit_tracking' - event_exhibit_tracking_obj_data_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_unset=True) - event_exhibit_tracking_obj_data_dict['id'] = redis_lookup_id_random(record_id_random=event_exhibit_tracking_id, table_name=obj_type) - event_exhibit_tracking_obj_data_dict['id_random'] = event_exhibit_tracking_id - result = patch_obj_template( - obj_type = obj_type, - data = event_exhibit_tracking_obj_data_dict, - obj_id = event_exhibit_tracking_id, - return_obj = True, - by_alias = True, - exclude_unset = True, - ) - return result + # ### SECTION ### Secondary data validation + event_exhibit_tracking_id_random = event_exhibit_tracking_id # This is used later for the response data + if event_exhibit_tracking_id := redis_lookup_id_random(record_id_random=event_exhibit_tracking_id, table_name='event_exhibit_tracking'): pass + else: return mk_resp(data=None, status_code=404, response=commons.response, status_message='The Event Exhibit Tracking ID was invalid or not found.') + + # ### SECTION ### Process data + 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_obj, + ): 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 + + # ### SECTION ### Return successful results + if return_obj: + event_exhibit_tracking_obj = load_event_exhibit_tracking_obj( + event_exhibit_tracking_id = event_exhibit_tracking_id, + inc_event_badge = inc_event_badge, + inc_event_exhibit = inc_event_exhibit, + inc_event_person = inc_event_person, + ).dict(by_alias=commons.by_alias, exclude_unset=commons.exclude_unset) + data = event_exhibit_tracking_obj + else: + data = {} + data['event_exhibit_tracking_id'] = event_exhibit_tracking_id + data['event_exhibit_tracking_id_random'] = event_exhibit_tracking_id_random + return mk_resp(data=data, response=commons.response) +# ### END ### API Event Exhibit Tracking ### patch_event_exhibit_tracking_obj() ### @router.get('/event/exhibit/tracking/list', response_model=Resp_Body_Base) @@ -117,34 +156,52 @@ async def get_event_exhibit_tracking_obj_li( return result -@router.get('/event/exhibit/tracking/{obj_id}', response_model=Resp_Body_Base) +# ### BEGIN ### API Event Exhibit Tracking ### get_event_exhibit_tracking_obj() ### +# Updated 2022-02-15 +@router.get('/event/exhibit/tracking/{event_exhibit_tracking_id}', response_model=Resp_Body_Base) async def get_event_exhibit_tracking_obj( - obj_id: str = Query(..., min_length=1, max_length=22), - x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - response: Response = Response, + event_exhibit_tracking_id: str = Query(..., min_length=11, max_length=22), + + inc_event_badge: bool = False, + inc_event_exhibit: bool = False, + inc_event_person: bool = False, + return_obj: bool = True, + + commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'event_exhibit_tracking' - result = get_obj_template( - obj_type=obj_type, - obj_id=obj_id, - by_alias=True, - exclude_unset=True, - ) - return result + # ### SECTION ### Secondary data validation + event_exhibit_tracking_id_random = event_exhibit_tracking_id # This is used later for the response data + if event_exhibit_tracking_id := redis_lookup_id_random(record_id_random=event_exhibit_tracking_id, table_name='event_exhibit_tracking'): pass + else: return mk_resp(data=None, status_code=404, response=commons.response, status_message='The Event Exhibit Tracking ID was invalid or not found.') + + if event_exhibit_tracking_obj_result := load_event_exhibit_tracking_obj( + event_exhibit_tracking_id = event_exhibit_tracking_id, + inc_event_badge = inc_event_badge, + inc_event_exhibit = inc_event_exhibit, + inc_event_person = inc_event_person, + ): + log.info('Loading successful. Returning result') + return mk_resp(data=event_exhibit_tracking_obj_result, response=commons.response) # Success + elif isinstance(event_exhibit_tracking_obj_result, list) or event_exhibit_tracking_obj_result is None: # Empty list or None + log.info('No results') + return mk_resp(data=None, status_code=404, response=commons.response) # Not Found + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request +# ### END ### API Event Exhibit Tracking ### get_event_exhibit_tracking_obj() ### # ### BEGIN ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ### -# Updated 2022-02-14 +# Updated 2022-02-15 @router.get('/event/exhibit/{event_exhibit_id}/tracking/list', response_model=Resp_Body_Base) async def get_event_exhibit_obj_tracking_list( event_exhibit_id: str = Query(..., min_length=11, max_length=22), event_person_id: str = Query(None, min_length=11, max_length=22), + inc_event_badge: bool = False, inc_event_exhibit: bool = False, inc_event_person: bool = False, @@ -160,7 +217,6 @@ async def get_event_exhibit_obj_tracking_list( 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=commons.response) - # Updated 2022-02-14 if event_exhibit_tracking_rec_list_result := get_event_exhibit_tracking_rec_list( event_exhibit_id = event_exhibit_id, event_person_id = event_person_id, @@ -170,40 +226,49 @@ async def get_event_exhibit_obj_tracking_list( event_exhibit_tracking_result_list = [] for event_exhibit_tracking_rec in event_exhibit_tracking_rec_list_result: if load_event_exhibit_tracking_result := load_event_exhibit_tracking_obj( - event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id', None), - enabled = commons.enabled, - limit = commons.limit, + event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id'), + inc_event_badge = inc_event_badge, inc_event_exhibit = inc_event_exhibit, inc_event_person = inc_event_person, - by_alias = commons.by_alias, - exclude_unset = commons.exclude_unset, - # model_as_dict = commons.model_as_dict, + # by_alias = commons.by_alias, + # exclude_unset = commons.exclude_unset, + # # model_as_dict = commons.model_as_dict, ): event_exhibit_tracking_result_list.append(load_event_exhibit_tracking_result) else: event_exhibit_tracking_result_list.append(None) - response_data = event_exhibit_tracking_result_list + return mk_resp(data=event_exhibit_tracking_result_list, response=commons.response) # Success elif isinstance(event_exhibit_tracking_rec_list_result, list): return mk_resp(data=False, status_code=404, response=commons.response) # Not Found else: return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request - - return mk_resp(data=commons.response_data, response=commons.response) # ### END ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ### -@router.delete('/event/exhibit/tracking/{obj_id}', response_model=Resp_Body_Base) -async def delete_event_exhibit_tracking_obj( - obj_id: str = Query(..., min_length=1, max_length=22), - x_account_id: str = Header(...), +# ### BEGIN ### API Event Exhibit Tracking ### delete_event_exhibit_tracking_obj() ### +# Updated 2022-02-15 +@router.delete('/event/exhibit/tracking/{event_exhibit_tracking_id}', response_model=Resp_Body_Base) +def delete_event_exhibit_tracking_obj( + event_exhibit_tracking_id: str = Query(..., min_length=11, max_length=22), + response: Response = Response, ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'event_exhibit_tracking' - result = delete_obj_template( - obj_type=obj_type, - obj_id=obj_id, - ) - return result \ No newline at end of file + # ### SECTION ### Secondary data validation + if event_exhibit_tracking_id := redis_lookup_id_random(record_id_random=event_exhibit_tracking_id, table_name='event_exhibit_tracking'): pass + else: return mk_resp(data=None, status_code=404, response=response, status_message='The Event Exhibit Tracking ID was invalid or not found.') + + if event_exhibit_tracking_obj_result := remove_event_exhibit_tracking_obj( + event_exhibit_tracking_id = event_exhibit_tracking_id, + ): + log.info('Delete successful. Returning True') + return mk_resp(data=True, response=response) # Success + elif event_exhibit_tracking_obj_result is None: # None + log.info('No results') + return mk_resp(data=None, status_code=404, response=response) # Not Found + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=response) # Bad Request +# ### END ### API Event Exhibit Tracking ### delete_event_exhibit_tracking_obj() ### diff --git a/app/routers/person.py b/app/routers/person.py index bed3477..87abdc3 100644 --- a/app/routers/person.py +++ b/app/routers/person.py @@ -63,7 +63,7 @@ async def post_person_obj( ): pass else: log.warning('Likely bad request') - return mk_resp(data=False, status_code=400, response=commons.response, status_message='Something failed while processing the data.') # Bad Request + return mk_resp(data=False, status_code=400, response=commons.response, status_message='Not created. Something failed while processing the data. Check the field names and data types.') # Bad Request # ### SECTION ### Return successful results if return_obj: @@ -132,7 +132,7 @@ async def patch_person_obj( ): pass else: log.warning('Likely bad request') - return mk_resp(data=False, status_code=400, response=commons.response, status_message='Something failed while processing the data.') # 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 # ### SECTION ### Return successful results if return_obj: @@ -276,10 +276,9 @@ async def lookup_email( # ### BEGIN ### API Person ### email_create_url() ### # Updated 2021-12-03 -# @router.get('/person/{person_id}/email_create_url', response_model=Resp_Body_Base) @router.get('/person/{person_id}/email_auth_key_url', response_model=Resp_Body_Base) async def email_auth_key_url( - person_id: str = Query(None, min_length=11, max_length=22), + person_id: str = Query(..., min_length=11, max_length=22), root_url: Optional[str] = Query(None, min_length=10, max_length=100), # Absolute min = 7 commons: Common_Route_Params = Depends(common_route_params), ): @@ -344,6 +343,7 @@ async def get_person_obj( log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) + # ### SECTION ### Secondary data validation if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass else: return mk_resp(data=None, status_code=404, response=commons.response) @@ -413,7 +413,6 @@ async def get_account_obj_person_list( else: return mk_resp(data=None, status_code=404, response=commons.response) response_data = None - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # Updated 2022-01-17 if person_rec_list_result := get_person_rec_list(