From 133cfab42f0ac0bfe4ff2da653ae7aa9c2199be6 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Mon, 13 Dec 2021 17:02:21 -0500 Subject: [PATCH] Code clean up. Working on returning proper 404 vs 400 responses if the results are empty and nothing went wrong. --- app/methods/cont_edu_cert_person_methods.py | 7 +- app/methods/event_location_methods.py | 21 ++-- app/methods/event_methods.py | 29 +++-- app/methods/event_session_methods.py | 17 ++- app/methods/user_methods.py | 1 - app/routers/account.py | 2 +- app/routers/event.py | 20 +++- app/routers/event_location.py | 8 +- app/routers/event_session.py | 6 +- app/routers/user.py | 120 ++++++++++---------- 10 files changed, 131 insertions(+), 100 deletions(-) diff --git a/app/methods/cont_edu_cert_person_methods.py b/app/methods/cont_edu_cert_person_methods.py index 905aa5c..10db0b3 100644 --- a/app/methods/cont_edu_cert_person_methods.py +++ b/app/methods/cont_edu_cert_person_methods.py @@ -23,7 +23,7 @@ def load_cont_edu_cert_person_obj( enabled: str = 'enabled', # enabled, disabled, all inc_cont_edu_cert: bool = False, ) -> Cont_Edu_Cert_Person_Base|dict|bool: - # log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if cont_edu_cert_person_id := redis_lookup_id_random(record_id_random=cont_edu_cert_person_id, table_name='cont_edu_cert_person'): pass @@ -73,7 +73,7 @@ def get_cont_edu_cert_person_rec_list( limit: int = 1000, enabled: str = 'enabled', # enabled, disabled, all ) -> None|list|bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if cont_edu_cert_id: @@ -132,10 +132,13 @@ def get_cont_edu_cert_person_rec_list( ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC {sql_limit}; """ + log.debug(sql) if cont_edu_cert_person_rec_li_result := sql_select(data=data, sql=sql): + log.info('Got a list result') cont_edu_cert_person_rec_li = cont_edu_cert_person_rec_li_result else: # None or False + log.info('No results or something went wrong') cont_edu_cert_person_rec_li = cont_edu_cert_person_rec_li_result # [] log.debug(cont_edu_cert_person_rec_li_result) diff --git a/app/methods/event_location_methods.py b/app/methods/event_location_methods.py index c144127..623f4fc 100644 --- a/app/methods/event_location_methods.py +++ b/app/methods/event_location_methods.py @@ -5,7 +5,7 @@ from typing import Dict, List, Optional, Set, Union from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update -from app.lib_general import log, logging +from app.lib_general import log, logging, logger_reset # from app.methods.event_methods import load_event_obj # from app.methods.event_device_methods import load_event_device_obj @@ -18,6 +18,7 @@ from app.models.event_location_models import Event_Location_Base # ### BEGIN ### API Event Location Methods ### load_event_location_obj() ### +@logger_reset def load_event_location_obj( event_location_id: int|str, inc_event_device_list: bool = False, @@ -37,7 +38,7 @@ def load_event_location_obj( exclude_unset: bool = True, model_as_dict: bool = False, ) -> Event_Location_Base|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_location_id := redis_lookup_id_random(record_id_random=event_location_id, table_name='event_location'): pass @@ -206,6 +207,8 @@ def load_event_location_obj( # ### BEGIN ### API Event Location Methods ### get_event_location_rec_list() ### +# Updated 2021-12-13 +@logger_reset def get_event_location_rec_list( event_id: str, enabled: str = 'enabled', # enabled, disabled, all @@ -261,16 +264,16 @@ def get_event_location_rec_list( ORDER BY `event_location`.priority DESC, `event_location`.sort ASC, `event_location`.name ASC, `event_location`.created_on DESC, `event_location`.updated_on DESC {sql_limit}; """ + log.debug(sql) - if event_location_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - + if event_location_rec_li_result := sql_select(data=data, sql=sql): + log.info('Got a list result') event_location_rec_li = event_location_rec_li_result - else: - event_location_rec_li = [] - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + else: # None or False + log.info('No results or something went wrong') + event_location_rec_li = event_location_rec_li_result # [] + log.debug(event_location_rec_li_result) - log.debug(type(event_location_rec_li)) - log.debug(len(event_location_rec_li)) return event_location_rec_li # ### END ### API Event Location Methods ### get_event_location_rec_list() ### diff --git a/app/methods/event_methods.py b/app/methods/event_methods.py index b2d0189..d8ebabb 100644 --- a/app/methods/event_methods.py +++ b/app/methods/event_methods.py @@ -5,7 +5,7 @@ from typing import Dict, List, Optional, Set, Union from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update -from app.lib_general import log, logging +from app.lib_general import log, logging, logger_reset from app.methods.address_methods import load_address_obj from app.methods.contact_methods import load_contact_obj @@ -21,6 +21,7 @@ from app.models.event_cfg_models import Event_Cfg_Base # ### BEGIN ### API Event Methods ### load_event_obj() ### +@logger_reset def load_event_obj( event_id: int|str, enabled: str = 'enabled', # enabled, disabled, all @@ -315,6 +316,8 @@ def load_event_obj( # ### BEGIN ### API Event Methods ### get_event_rec_list() ### +# Updated 2021-12-13 +@logger_reset def get_event_rec_list( account_id: str = None, organization_id: str = None, @@ -446,13 +449,13 @@ def get_event_rec_list( """ log.debug(sql) - if event_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - log.info('Got a list of events') - log.debug(event_rec_li_result) + if event_rec_li_result := sql_select(data=data, sql=sql): + log.info('Got a list result') event_rec_li = event_rec_li_result - else: - log.info('No events were found') - event_rec_li = [] + else: # None or False + log.info('No results or something went wrong') + event_rec_li = event_rec_li_result # [] + log.debug(event_rec_li_result) return event_rec_li @@ -461,6 +464,7 @@ def get_event_rec_list( # ### BEGIN ### API Event Methods ### get_event_meeting_rec_list() ### # Updated 2021-12-13 +@logger_reset def get_event_meeting_rec_list( account_id: str = None, organization_id: str = None, @@ -589,13 +593,14 @@ def get_event_meeting_rec_list( """ log.debug(sql) - if event_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - log.info('Got a list of events') + if event_rec_li_result := sql_select(data=data, sql=sql): + log.info('Got a list result') log.debug(event_rec_li_result) event_rec_li = event_rec_li_result - else: - log.info('No events were found') - event_rec_li = [] + else: # None or False + log.info('No results or something went wrong') + event_rec_li = event_rec_li_result # [] + log.debug(event_rec_li_result) return event_rec_li diff --git a/app/methods/event_session_methods.py b/app/methods/event_session_methods.py index a24941c..7bf39d8 100644 --- a/app/methods/event_session_methods.py +++ b/app/methods/event_session_methods.py @@ -53,7 +53,7 @@ def load_event_session_obj( exclude_unset: bool = True, model_as_dict: bool = False, ) -> Event_Session_Base|bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass @@ -269,6 +269,7 @@ def load_event_session_obj( # ### BEGIN ### API Event Session Methods ### get_event_session_rec_list() ### +# Updated 2021-12-13 def get_event_session_rec_list( event_id: str = None, event_location_id: str = None, @@ -355,18 +356,16 @@ def get_event_session_rec_list( ORDER BY `event_session`.priority DESC, `event_session`.sort ASC, `event_session`.start_datetime ASC, `event_session`.name ASC, `event_session`.created_on DESC, `event_session`.updated_on DESC {sql_limit}; """ - log.debug(sql) - if event_session_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - + if event_session_rec_li_result := sql_select(data=data, sql=sql): + log.info('Got a list result') event_session_rec_li = event_session_rec_li_result - else: - event_session_rec_li = [] - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + else: # None or False + log.info('No results or something went wrong') + event_session_rec_li = event_session_rec_li_result # [] + log.debug(event_session_rec_li_result) - log.debug(type(event_session_rec_li)) - log.debug(len(event_session_rec_li)) return event_session_rec_li # ### END ### API Event Session Methods ### get_event_session_rec_list() ### diff --git a/app/methods/user_methods.py b/app/methods/user_methods.py index baa95f1..31048c1 100644 --- a/app/methods/user_methods.py +++ b/app/methods/user_methods.py @@ -9,7 +9,6 @@ from app.lib_general import log, logging, send_email # from app.methods.account_methods import load_account_cfg_obj from app.methods.contact_methods import load_contact_obj, update_contact_obj -# from app.methods.event_methods import get_event_rec_list from app.methods.order_methods import load_order_obj, get_order_rec_list from app.methods.organization_methods import load_organization_obj, update_organization_obj from app.methods.person_methods import create_person_obj_v3, load_person_obj, update_person_obj diff --git a/app/routers/account.py b/app/routers/account.py index 8bcfb80..a61df10 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -11,7 +11,7 @@ from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_ from app.methods.account_methods import get_account_rec_list, load_account_obj from app.methods.account_cfg_methods import load_account_cfg_obj -from app.methods.event_methods import get_event_rec_list, load_event_obj +# from app.methods.event_methods import get_event_rec_list, load_event_obj # from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj # from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj # from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj diff --git a/app/routers/event.py b/app/routers/event.py index 1e9f72b..b402a89 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -205,7 +205,7 @@ async def get_event_obj_li( # ### BEGIN ### API Event ### get_event_obj() ### -# Working well as of 2021-06-30. Using as a template for other routes. +# Updated 2021-12-13 @router.get('/event/{event_id}', response_model=Resp_Body_Base) async def get_event_obj( event_id: str = Query(..., min_length=11, max_length=22), @@ -253,8 +253,7 @@ async def get_event_obj( log.debug(locals()) 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=response) + else: return mk_resp(data=None, status_code=404, response=response) if event_obj := load_event_obj( event_id = event_id, @@ -299,6 +298,7 @@ async def get_event_obj( # event_dict = event_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) pass else: + log.warning('Likely bad request') return mk_resp(data=False, status_code=400, response=response) # Bad Request return mk_resp(data=event_obj, response=response) @@ -404,7 +404,11 @@ async def get_account_obj_event_list( else: event_result_list.append(None) response_data = event_result_list + elif event_rec_list_result is 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 log.debug(response_data) @@ -450,8 +454,12 @@ async def get_account_obj_event_meeting_list_flat( continue event_result_list.append(event_obj) response_data = event_result_list + elif event_meeting_rec_list_result is None: + log.info('No results') + return mk_resp(data=None, status_code=404, response=response) # Not Found else: - return mk_resp(data=False, status_code=404, response=response) # Not Found + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=response) # Bad Request log.debug(response_data) return mk_resp(data=response_data, response=response) @@ -517,7 +525,11 @@ async def get_person_event_obj_li( else: event_result_list.append(None) response_data = event_result_list + elif event_rec_list_result is 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 return mk_resp(data=response_data, response=response) diff --git a/app/routers/event_location.py b/app/routers/event_location.py index 7c50ece..02e4856 100644 --- a/app/routers/event_location.py +++ b/app/routers/event_location.py @@ -96,7 +96,7 @@ async def get_event_location_obj( exclude_unset: Optional[bool] = True, response: Response = Response, ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_location_id := redis_lookup_id_random(record_id_random=event_location_id, table_name='event_location'): pass @@ -125,7 +125,7 @@ async def get_event_location_obj( # ### BEGIN ### API Event Location ### get_event_obj_event_location_list() ### -# Updated 2021-11-10 +# Updated 2021-12-13 @router.get('/event/{event_id}/event/location/list', response_model=Resp_Body_Base) async def get_event_obj_event_location_list( event_id: str = Query(..., min_length=11, max_length=22), @@ -170,7 +170,11 @@ async def get_event_obj_event_location_list( else: event_location_result_list.append(None) response_data = event_location_result_list + elif event_location_rec_list_result is 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 return mk_resp(data=response_data, response=response) diff --git a/app/routers/event_session.py b/app/routers/event_session.py index 121373c..b1270ce 100644 --- a/app/routers/event_session.py +++ b/app/routers/event_session.py @@ -570,7 +570,7 @@ async def get_event_event_session_obj_li( 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=response) - # Updated 2021-08-26 + # Updated 2021-12-13 if event_session_rec_list_result := get_event_session_rec_list( event_id = event_id, review = review, # ready, not_ready, all @@ -603,9 +603,11 @@ async def get_event_event_session_obj_li( else: event_session_result_list.append(None) response_data = event_session_result_list - elif isinstance(event_session_rec_list_result, list): + elif event_session_rec_list_result is None: + log.info('No results') return mk_resp(data=False, 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 return mk_resp(data=response_data, response=response) diff --git a/app/routers/user.py b/app/routers/user.py index 49e58b0..9a3e997 100644 --- a/app/routers/user.py +++ b/app/routers/user.py @@ -911,67 +911,71 @@ async def get_user_obj( # ### END ### API User ### get_user_obj() ### -# ### BEGIN ### API User ### get_user_obj_order_list() ### -# Deprecated 2021-11-19 -@router.get('/user/{user_id}/order_list', response_model=Resp_Body_Base) -async def get_user_obj_order_list( - user_id: str = Query(..., min_length=1, 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 - from_datetime: datetime.datetime = None, - to_datetime: datetime.datetime = None, - # inc_address: bool = False, - # inc_contact: bool = False, - inc_order_cfg: bool = False, - inc_order_line_list: bool = False, - status: str = 'complete', - # inc_person: bool = False, - # inc_order_list: bool = False, - # inc_order_cart_list: 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()) - log.warning('Deprecated 2021-11-19') +# # ### BEGIN ### API User ### get_user_obj_order_list() ### +# # Deprecated 2021-11-19 +# @router.get('/user/{user_id}/order_list', response_model=Resp_Body_Base) +# async def get_user_obj_order_list( +# user_id: str = Query(..., min_length=1, 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 +# from_datetime: datetime.datetime = None, +# to_datetime: datetime.datetime = None, +# # inc_address: bool = False, +# # inc_contact: bool = False, +# inc_order_cfg: bool = False, +# inc_order_line_list: bool = False, +# status: str = 'complete', +# # inc_person: bool = False, +# # inc_order_list: bool = False, +# # inc_order_cart_list: 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()) +# log.warning('Deprecated 2021-11-19') - if user_id := redis_lookup_id_random(record_id_random=user_id, table_name='user'): pass - else: - return mk_resp(data=None, status_code=404, response=response) +# if user_id := redis_lookup_id_random(record_id_random=user_id, table_name='user'): pass +# else: +# return mk_resp(data=None, status_code=404, response=response) - # Updated 2021-06-28 - if order_rec_list_result := get_order_rec_list( - for_obj_type = 'user', - for_obj_id = user_id, - limit = limit, - enabled = enabled, - from_datetime = from_datetime, - to_datetime = to_datetime, - status = status, - ): - order_result_list = [] - for order_rec in order_rec_list_result: - if load_order_result := load_order_obj( - order_id = order_rec.get('order_id', None), - limit = limit, - enabled = enabled, - by_alias = by_alias, - exclude_unset = exclude_unset, - # model_as_dict = model_as_dict, - inc_order_cfg = inc_order_cfg, - inc_order_line_list = inc_order_line_list, - ): - order_result_list.append(load_order_result) - else: - order_result_list.append(None) - response_data = order_result_list - else: - return mk_resp(data=False, status_code=400, response=response) # Bad Request +# # Updated 2021-12-13 +# if order_rec_list_result := get_order_rec_list( +# for_obj_type = 'user', +# for_obj_id = user_id, +# limit = limit, +# enabled = enabled, +# from_datetime = from_datetime, +# to_datetime = to_datetime, +# status = status, +# ): +# order_result_list = [] +# for order_rec in order_rec_list_result: +# if load_order_result := load_order_obj( +# order_id = order_rec.get('order_id', None), +# limit = limit, +# enabled = enabled, +# by_alias = by_alias, +# exclude_unset = exclude_unset, +# # model_as_dict = model_as_dict, +# inc_order_cfg = inc_order_cfg, +# inc_order_line_list = inc_order_line_list, +# ): +# order_result_list.append(load_order_result) +# else: +# order_result_list.append(None) +# response_data = order_result_list +# elif event_location_rec_list_result is 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 - return mk_resp(data=response_data, response=response) -# ### END ### API User ### get_user_obj_order_list() ### +# return mk_resp(data=response_data, response=response) +# # ### END ### API User ### get_user_obj_order_list() ### @router.delete('/user/{obj_id}', response_model=Resp_Body_Base)