Code clean up. Working on returning proper 404 vs 400 responses if the results are empty and nothing went wrong.

This commit is contained in:
Scott Idem
2021-12-13 18:55:31 -05:00
parent 92a44b9f41
commit 39db1999fb
27 changed files with 301 additions and 239 deletions

View File

@@ -154,9 +154,11 @@ async def get_account_obj_activity_log_list(
else:
activity_log_result_list.append(None)
response_data = activity_log_result_list
elif isinstance(activity_log_rec_list_result, list):
elif isinstance(activity_log_rec_list_result, list) or activity_log_rec_list_result is None: # Empty list or 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)

View File

@@ -111,8 +111,8 @@ obj_type_li['order_line'] = {'table_name': 'v_order_line', 'base_name': Order_Li
obj_type_li['organization'] = {'table_name': 'v_organization', 'base_name': Organization_Base}
obj_type_li['page'] = {'table_name': 'page', 'base_name': Page_Base}
obj_type_li['person'] = {'table_name': 'v_person', 'base_name': Person_Base}
obj_type_li['post'] = {'table_name': 'v_post_detail', 'base_name': Post_Base} # NOTE check view name: *_detail?
obj_type_li['post_comment'] = {'table_name': 'v_post_comment_detail', 'base_name': Post_Comment_Base} # NOTE check view name: *_detail?
obj_type_li['post'] = {'table_name': 'v_post', 'base_name': Post_Base} # NOTE check view name: *_detail?
obj_type_li['post_comment'] = {'table_name': 'v_post_comment', 'base_name': Post_Comment_Base} # NOTE check view name: *_detail?
obj_type_li['product'] = {'table_name': 'v_product', 'base_name': Product_Base}
obj_type_li['site'] = {'table_name': 'site', 'base_name': Site_Base}
obj_type_li['site_domain'] = {'table_name': 'v_site_domain', 'base_name': Site_Domain_Base} # NOTE check view name: *_detail?

View File

@@ -399,7 +399,7 @@ async def get_person_obj_cont_edu_cert_person_list(
else:
cont_edu_cert_person_result_list.append(None)
response_data = cont_edu_cert_person_result_list
elif cont_edu_cert_person_rec_list_result is None:
elif isinstance(cont_edu_cert_person_rec_list_result, list) or cont_edu_cert_person_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=None, status_code=404, response=response) # Not Found
else:

View File

@@ -404,7 +404,7 @@ 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:
elif isinstance(event_rec_list_result, list) or event_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=None, status_code=404, response=response) # Not Found
else:
@@ -412,6 +412,7 @@ async def get_account_obj_event_list(
return mk_resp(data=False, status_code=400, response=response) # Bad Request
log.debug(response_data)
return mk_resp(data=response_data, response=response)
# ### END ### API Event ### get_account_obj_event_list() ###
@@ -454,7 +455,7 @@ 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:
elif isinstance(event_meeting_rec_list_result, list) or event_meeting_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=None, status_code=404, response=response) # Not Found
else:
@@ -462,6 +463,7 @@ async def get_account_obj_event_meeting_list_flat(
return mk_resp(data=False, status_code=400, response=response) # Bad Request
log.debug(response_data)
return mk_resp(data=response_data, response=response)
# ### END ### API Event ### get_account_obj_event_list() ###
@@ -532,6 +534,8 @@ async def get_person_event_obj_li(
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)
# ### END ### API Event Methods ### get_person_event_obj_li() ###

View File

@@ -170,7 +170,7 @@ 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:
elif isinstance(event_location_rec_list_result, list) or event_location_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=None, status_code=404, response=response) # Not Found
else:

View File

@@ -603,7 +603,7 @@ async def get_event_event_session_obj_li(
else:
event_session_result_list.append(None)
response_data = event_session_result_list
elif event_session_rec_list_result is None:
elif isinstance(event_session_rec_list_result, list) or event_session_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=False, status_code=404, response=response) # Not Found
else:

View File

@@ -18,24 +18,24 @@ from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
# ### BEGIN ### API Lookup ### get_lookup_li() ###
@router.get('/{for_lookup_name}/list', response_model=Resp_Body_Base)
async def get_lookup_li(
for_lookup_name: Optional[str] = Query(None, min_length=2, max_length=50),
account_id: Optional[str] = Query(None, min_length=2, max_length=50),
account_id: Optional[str] = Query(None, min_length=11, max_length=50),
for_type: Optional[str] = Query(None, min_length=2, max_length=50),
inc_admin_options: bool = False,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
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())
allowed_lookup_tables = ['country', 'country_subdivision', 'education_degree', 'education_level', 'event_session_type', 'file_purpose', 'membership_group_status', 'membership_person_status', 'membership_type_status', 'order_status', 'post_topic', 'product_type', 'time_zone', 'user_status']
if for_lookup_name in allowed_lookup_tables: pass
else:
return mk_resp(data=False, status_code=400, response=response)
else: return mk_resp(data=False, status_code=400, response=response) # Bad Request (not in allowed list)
if for_lookup_name == 'post_topic':
if lu_post_topic_rec_list_result := get_lu_post_topic_rec_list(
@@ -46,48 +46,64 @@ async def get_lookup_li(
enabled = enabled,
):
response_data = lu_post_topic_rec_list_result
elif isinstance(lu_post_topic_rec_list_result, list) or lu_post_topic_rec_list_result is None: # Empty list or 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
elif for_lookup_name == 'time_zone':
table_name = f'v_lu_{for_lookup_name}'
lu_time_zone_result = sql_select(table_name=table_name)
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(lu_time_zone_result)
log.debug(type(lu_time_zone_result))
# lu_time_zone_result = lu_time_zone_result[0:50]
# fake_li = []
# import secrets
# for time_zone in lu_time_zone_result:
# fake = {}
# # fake['id'] = time_zone['id']
# # fake['name'] = time_zone['name']
# fake['xxx'] = secrets.token_urlsafe(8)
# fake['yyy'] = secrets.token_urlsafe(8)
# fake_li.append(fake)
# # time_zone['name'] = 'asdf'
response_data = lu_time_zone_result
# response_data = fake_li
if lu_time_zone_result := sql_select(table_name=table_name):
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(lu_time_zone_result)
log.debug(type(lu_time_zone_result))
# lu_time_zone_result = lu_time_zone_result[0:50]
# fake_li = []
# import secrets
# for time_zone in lu_time_zone_result:
# fake = {}
# # fake['id'] = time_zone['id']
# # fake['name'] = time_zone['name']
# fake['xxx'] = secrets.token_urlsafe(8)
# fake['yyy'] = secrets.token_urlsafe(8)
# fake_li.append(fake)
# # time_zone['name'] = 'asdf'
response_data = lu_time_zone_result
# response_data = fake_li
elif isinstance(lu_time_zone_result, list) or lu_time_zone_result is None: # Empty list or 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
else:
table_name = f'lu_{for_lookup_name}'
lu_list_result = sql_select(table_name=table_name)
response_data = lu_list_result
if lu_list_result := sql_select(table_name=table_name):
response_data = lu_list_result
# fake_li = []
# import secrets
# for list_item in lu_list_result:
# fake = {}
# # fake['id'] = time_zone['id']
# # fake['name'] = time_zone['name']
# fake['xxx'] = secrets.token_urlsafe(8)
# fake['yyy'] = secrets.token_urlsafe(8)
# fake_li.append(fake)
# response_data = fake_li
# fake_li = []
# import secrets
# for list_item in lu_list_result:
# fake = {}
# # fake['id'] = time_zone['id']
# # fake['name'] = time_zone['name']
# fake['xxx'] = secrets.token_urlsafe(8)
# fake['yyy'] = secrets.token_urlsafe(8)
# fake_li.append(fake)
# response_data = fake_li
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(response_data)
response_data = response_data
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(response_data)
response_data = response_data
elif isinstance(lu_list_result, list) or lu_list_result is None: # Empty list or 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.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(response_data)
return mk_resp(data=response_data)
# ### END ### API Lookup ### get_lookup_li() ###

View File

@@ -211,7 +211,7 @@ async def get_order_obj(
# ### BEGIN ### API Order ### get_obj_id_order_list() ###
# Updated 2021-11-19
# Updated 2021-12-13
@router.get('/{obj_type}/{obj_id}/order/list', response_model=Resp_Body_Base)
async def get_obj_id_order_list(
obj_type: str = Query(..., min_length=4, max_length=25), # Expects account or person
@@ -266,7 +266,7 @@ async def get_obj_id_order_list(
else:
order_result_list.append(None)
response_data = order_result_list
elif order_rec_list_result is None:
elif isinstance(order_rec_list_result, list) or order_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=None, status_code=404, response=response) # Not Found
else:
@@ -277,118 +277,118 @@ async def get_obj_id_order_list(
# ### END ### API Order ### get_obj_id_order_list() ###
# ### BEGIN ### API Order ### get_account_obj_order_list() ###
# Updated 2021-11-19
@router.get('/account/{account_id}/order/list', response_model=Resp_Body_Base)
async def get_account_id_order_list(
account_id: str = Query(..., min_length=11, max_length=22),
limit: int = 50,
enabled: str = 'enabled',
from_datetime: datetime.datetime = None,
to_datetime: datetime.datetime = None,
inc_order_cfg: bool = False,
inc_order_line_list: bool = False,
# inc_order_w_prod_type: str = 'all', # all, membership, fundraising, event, etc
status: str = 'closed', # open, locked, reopened?, closed (complete), canceled, other
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())
# # ### BEGIN ### API Order ### get_account_obj_order_list() ###
# # Updated 2021-11-19
# @router.get('/account/{account_id}/order/list', response_model=Resp_Body_Base)
# async def get_account_id_order_list(
# account_id: str = Query(..., min_length=11, max_length=22),
# limit: int = 50,
# enabled: str = 'enabled',
# from_datetime: datetime.datetime = None,
# to_datetime: datetime.datetime = None,
# inc_order_cfg: bool = False,
# inc_order_line_list: bool = False,
# # inc_order_w_prod_type: str = 'all', # all, membership, fundraising, event, etc
# status: str = 'closed', # open, locked, reopened?, closed (complete), canceled, other
# 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 account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: return mk_resp(data=None, status_code=404, response=response)
# if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): 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 = 'account',
for_obj_id = account_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-06-28
# if order_rec_list_result := get_order_rec_list(
# for_obj_type = 'account',
# for_obj_id = account_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
return mk_resp(data=response_data)
# ### END ### API Order ### get_account_obj_order_list() ###
# return mk_resp(data=response_data)
# # ### END ### API Order ### get_account_obj_order_list() ###
# ### BEGIN ### API Order ### get_person_obj_order_list() ###
# Updated 2021-11-19
@router.get('/person/{person_id}/order/list', response_model=Resp_Body_Base)
async def get_person_id_order_list(
person_id: str = Query(..., min_length=11, max_length=22),
limit: int = 50,
enabled: str = 'enabled',
from_datetime: datetime.datetime = None,
to_datetime: datetime.datetime = None,
inc_order_cfg: bool = False,
inc_order_line_list: bool = False,
# inc_order_w_prod_type: str = 'all', # all, membership, fundraising, event, etc
status: str = 'closed', # open, locked, reopened?, closed (complete), canceled, other
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())
# # ### BEGIN ### API Order ### get_person_obj_order_list() ###
# # Updated 2021-11-19
# @router.get('/person/{person_id}/order/list', response_model=Resp_Body_Base)
# async def get_person_id_order_list(
# person_id: str = Query(..., min_length=11, max_length=22),
# limit: int = 50,
# enabled: str = 'enabled',
# from_datetime: datetime.datetime = None,
# to_datetime: datetime.datetime = None,
# inc_order_cfg: bool = False,
# inc_order_line_list: bool = False,
# # inc_order_w_prod_type: str = 'all', # all, membership, fundraising, event, etc
# status: str = 'closed', # open, locked, reopened?, closed (complete), canceled, other
# 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 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=response)
# 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=response)
# Updated 2021-06-28
if order_rec_list_result := get_order_rec_list(
for_obj_type = 'person',
for_obj_id = person_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-06-28
# if order_rec_list_result := get_order_rec_list(
# for_obj_type = 'person',
# for_obj_id = person_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
return mk_resp(data=response_data)
# ### END ### API Order ### get_person_obj_order_list() ###
# return mk_resp(data=response_data)
# # ### END ### API Order ### get_person_obj_order_list() ###
# ### BEGIN ### API Order ### get_person_id_order_cart() ###

View File

@@ -95,7 +95,7 @@ async def get_post_obj_li(
# ### BEGIN ### API Post ### get_account_obj_post_list() ###
# Working well as of 2021-06-28. Using as a template for other routes.
# Updated 2021-12-13
@router.get('/account/{account_id}/post/list', response_model=Resp_Body_Base)
async def get_account_obj_post_list(
account_id: str = Query(..., min_length=1, max_length=22),
@@ -122,7 +122,7 @@ async def get_account_obj_post_list(
response_data = None
# Updated 2021-06-28
# Updated 2021-12-13
if post_rec_list_result := get_post_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
@@ -133,14 +133,11 @@ async def get_account_obj_post_list(
post_result_list = []
for post_rec in post_rec_list_result:
if load_post_result := load_post_obj(
post_id = post_rec.get('post_id', None),
post_id = post_rec.get('post_id'),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
enabled = enabled,
# inc_address = inc_address,
# inc_contact = inc_contact,
inc_person = inc_person,
inc_post_comment_list = inc_post_comment_list,
inc_user = inc_user,
@@ -149,7 +146,11 @@ async def get_account_obj_post_list(
else:
post_result_list.append(None)
response_data = post_result_list
elif isinstance(post_rec_list_result, list) or post_rec_list_result is None: # Empty list or 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)

View File

@@ -520,7 +520,7 @@ async def get_account_user_obj_li(
else:
user_result_list.append(None)
response_data = user_result_list
elif user_rec_list_result is None:
elif isinstance(user_rec_list_result, list) or user_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=False, status_code=404, response=response) # Not Found
else: