diff --git a/app/routers/order.py b/app/routers/order.py index 7dc46d7..dccc6ee 100644 --- a/app/routers/order.py +++ b/app/routers/order.py @@ -9,7 +9,7 @@ from app.db_sql import * 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.order_methods import load_order_obj, save_order_obj +from app.methods.order_methods import get_order_rec_list, load_order_obj, save_order_obj from app.models.response_models import * from app.models.order_models import Order_Base, Order_DB_Base @@ -111,16 +111,6 @@ async def get_order_obj_li( log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - # obj_type = 'order' - # result = get_obj_li_template( - # obj_type=obj_type, - # for_obj_type=for_obj_type, - # for_obj_id=for_obj_id, - # by_alias=True, - # exclude_unset=True, - # ) - # return result - data = {} if for_obj_type == 'account' and for_obj_id: data['account_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='account') @@ -220,9 +210,125 @@ async def get_order_obj( # ### END ### API Order Routes ### get_order_obj() ### -# NOTE 2021-08-09: Use with rework of order_cart -@router.get('/person/{person_id}/order/open', response_model=Resp_Body_Base) -async def get_person_id_order_open_obj( +# ### 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) + + # 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() ### + + +# ### 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) + + # 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() ### + + +# ### BEGIN ### API Order ### get_person_id_order_cart() ### +# NOTE 2021-08-09: Use with rework of order_cart. The most recent (hopefully only one) "open" order for a person. +# Updated 2021-11-19 +@router.get('/person/{person_id}/order/cart', response_model=Resp_Body_Base) +async def get_person_id_order_cart( person_id: str = Query(..., min_length=11, max_length=22), enabled: str = 'enabled', inc_order_line_list: bool = False, @@ -235,7 +341,10 @@ async def get_person_id_order_open_obj( log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) + # Query to get the one "open" order status for a person ID + return False +# ### END ### API Order ### get_person_id_order_cart() ### @router.delete('/order/{obj_id}', response_model=Resp_Body_Base) diff --git a/app/routers/person.py b/app/routers/person.py index d961825..1dada9b 100644 --- a/app/routers/person.py +++ b/app/routers/person.py @@ -10,7 +10,6 @@ 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.membership_person_methods import load_membership_person_obj -from app.methods.order_methods import get_order_rec_list, load_order_obj from app.methods.person_methods import create_update_person_obj_v4b, get_person_rec_list, get_person_rec_w_external_id, load_person_obj, update_person_obj from app.models.person_models import Person_Base @@ -459,69 +458,6 @@ async def get_person_obj( # ### END ### API Person ### get_person_obj() ### -# ### BEGIN ### API Person ### get_person_obj_order_list() ### -# Working well as of 2021-06-28. Using as a template for other routes. -@router.get('/person/{person_id}/order_list', response_model=Resp_Body_Base) -async def get_person_obj_order_list( - person_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_order_list: bool = False, - # inc_order_cart_list: bool = False, - # inc_user: 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()) - - 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 - - return mk_resp(data=response_data) -# ### END ### API Person ### get_person_obj_order_list() ### - - - # ### BEGIN ### API Person ### get_account_obj_person_list() ### # Working well as of 2021-07-09. Using as a template for other routes. @router.get('/account/{account_id}/person/list', response_model=Resp_Body_Base) diff --git a/app/routers/user.py b/app/routers/user.py index c3196ca..32c4719 100644 --- a/app/routers/user.py +++ b/app/routers/user.py @@ -878,7 +878,7 @@ async def get_user_obj( # ### BEGIN ### API User ### get_user_obj_order_list() ### -# Working well as of 2021-06-28. Using as a template for other routes. +# 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), @@ -899,8 +899,9 @@ async def get_user_obj_order_list( exclude_unset: Optional[bool] = True, response: Response = Response, ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + 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: