From a56804cee6b1075548f1b9228b8c24584226dc8f Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 1 Jul 2021 17:55:25 -0400 Subject: [PATCH] Working on membership, fundraising, and products and other things --- app/main.py | 18 +- app/methods/membership_group_methods.py | 169 ++++--------- app/methods/membership_type_methods.py | 129 +++++----- app/models/membership_type_models.py | 2 + app/routers/account.py | 302 +----------------------- app/routers/membership_group.py | 79 ++++++- app/routers/membership_member.py | 99 +++++++- app/routers/membership_type.py | 83 ++++++- app/routers/post.py | 72 +++++- app/routers/product.py | 6 +- 10 files changed, 425 insertions(+), 534 deletions(-) diff --git a/app/main.py b/app/main.py index 394a5c5..a1b0c84 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from app.lib_general import log, logging from app.log import log # Import the routers here first: -from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_file, event_person, event_person_detail, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, lookup, membership_type, membership_member, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals +from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_file, event_person, event_person_detail, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, lookup, membership_group, membership_member, membership_type, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals from app.db_sql import db @@ -159,19 +159,19 @@ app.include_router( prefix='/lu', tags=['Lookup'], ) -# app.include_router( -# membership_group.router, -# prefix='/membership/group', -# tags=['Membership Group'], -# ) +app.include_router( + membership_group.router, + # prefix='/membership/group', + tags=['Membership Group'], +) app.include_router( membership_member.router, - prefix='/membership/member', + # prefix='/membership/member', tags=['Membership Member'], ) app.include_router( membership_type.router, - prefix='/membership/type', + # prefix='/membership/type', tags=['Membership Type'], ) app.include_router( @@ -201,7 +201,7 @@ app.include_router( ) app.include_router( post.router, - prefix='/post', + # prefix='/post', tags=['Post'], ) app.include_router( diff --git a/app/methods/membership_group_methods.py b/app/methods/membership_group_methods.py index 25fd6e0..75347c8 100644 --- a/app/methods/membership_group_methods.py +++ b/app/methods/membership_group_methods.py @@ -15,6 +15,7 @@ from app.models.membership_group_models import Membership_Group_Base # ### BEGIN ### API Membership Group Methods ### load_membership_group_obj() ### +# Updated 2021-07-01 def load_membership_group_obj( membership_group_id: int|str, limit: int = 1000, @@ -32,6 +33,7 @@ def load_membership_group_obj( inc_organization: bool = False, inc_parent_membership_group: bool = False, inc_person: bool = False, + inc_product: bool = False, # Per membership member inc_product_list: bool = False, # List of products that give access to this group inc_user: bool = False, ) -> Membership_Group_Base|bool: @@ -139,151 +141,76 @@ def load_membership_group_obj( # ### BEGIN ### API Membership Group Methods ### get_membership_group_rec_list() ### def get_membership_group_rec_list( - for_obj_type: str, - for_obj_id: str, + account_id: str = None, + # product_id: str = None, + # type_level: int = None, limit: int = 1000, enabled: str = 'enabled', # enabled, disabled, all ) -> list|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 for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass - else: return False + if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass + # if product_id := redis_lookup_id_random(record_id_random=product_id, table_name='product'): pass + data = {} - data[f'{for_obj_type}_id'] = for_obj_id - # data['for_obj_type'] = for_obj_type - if for_obj_type == 'account': - sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id' + data['account_id'] = account_id + # data['product_id'] = product_id + # data['level'] = type_level - if enabled in ['enabled', 'disabled', 'all']: - if enabled == 'enabled': - data['enable'] = True - sql_enabled = f'AND `tbl`.enable = :enable' - elif enabled == 'disabled': - data['enable'] = False - sql_enabled = f'AND `tbl`.enable = :enable' - elif enabled == 'all': - sql_enabled = '' + if account_id: + sql_account_id = f'`membership_group`.account_id = :account_id' + else: sql_account_id = '' - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' + # if product_id: + # sql_product_id = f'`membership_group`.product_id = :product_id' + # else: sql_product_id = '' - sql = f""" - SELECT `tbl`.id AS 'membership_group_id', `tbl`.id_random AS 'membership_group_id_random' - FROM `membership_group` AS `tbl` - WHERE - {sql_obj_type_id} - {sql_enabled} - ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC - {sql_limit}; - """ - elif for_obj_type == 'membership_member': - sql_obj_type_id = f'`membership_group_member`.{for_obj_type}_id = :{for_obj_type}_id' + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `membership_group`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `membership_group`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + else: sql_enabled = '' - if enabled in ['enabled', 'disabled', 'all']: - if enabled == 'enabled': - data['enable'] = True - sql_enabled = f'AND `membership_group_member`.enable = :enable' - elif enabled == 'disabled': - data['enable'] = False - sql_enabled = f'AND `membership_group_member`.enable = :enable' - elif enabled == 'all': - sql_enabled = '' + # if type_level: + # sql_type_level = f"""AND membership_group.level = :level""" + # else: sql_type_level = '' - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' - sql = f""" - SELECT `membership_group_member`.id AS 'membership_group_id', `membership_group_member`.id_random AS 'membership_group_id_random' - FROM `membership_group_member` - INNER JOIN membership_group ON membership_group_member.membership_group_id = membership_group.id - WHERE - {sql_obj_type_id} - {sql_enabled} + sql = f""" + SELECT `membership_group`.id AS 'membership_group_id', `membership_group`.id_random AS 'membership_group_id_random' + FROM `v_membership_group` AS `membership_group` + WHERE + {sql_account_id} + {sql_enabled} + ORDER BY `membership_group`.sort ASC, `membership_group`.created_on DESC, `membership_group`.updated_on DESC + {sql_limit}; + """ - ORDER BY `membership_group_member`.created_on DESC, `membership_group_member`.updated_on DESC - {sql_limit}; - """ # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql) + if membership_group_rec_li_result := sql_select(data=data, sql=sql, as_list=True): membership_group_rec_li = membership_group_rec_li_result else: membership_group_rec_li = [] - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(membership_group_rec_li_result) return membership_group_rec_li # ### END ### API Membership Group Methods ### get_membership_group_rec_list() ### -# ### BEGIN ### API Membership Group Methods ### load_membership_group_obj() ### -# def load_membership_group_list( -# for_obj_type: str, -# for_obj_id: str, -# limit: int = 1000, -# by_alias: bool = True, -# exclude_unset: bool = True, -# model_as_dict: bool = False, -# enabled: str = 'enabled', # enabled, disabled, all -# inc_address: bool = False, -# inc_contact: bool = False, -# inc_membership_cfg: bool = False, -# inc_membership_group_member_list: bool = False, -# inc_membership_member: bool = False, -# inc_membership_member_profile: bool = False, # under membership_member -# inc_membership_type: bool = False, # ??? -# # inc_parent_membership_group: bool = False, -# inc_organization: bool = False, -# inc_person: bool = False, -# inc_product_list: bool = False, -# inc_user: bool = False, -# ) -> Membership_Group_Base|bool: -# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) - -# if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass -# else: return False - -# if membership_group_rec_list_result := get_membership_group_rec_list( -# for_obj_type = for_obj_type, -# for_obj_id = for_obj_id, -# limit = limit, -# enabled = enabled, -# ): -# membership_group_result_list = [] -# for membership_group_rec in membership_group_rec_list_result: -# membership_group_result_list.append( -# load_membership_group_obj( -# membership_group_id = membership_group_rec.get('membership_group_id', None), -# limit = limit, -# by_alias = by_alias, -# exclude_unset = exclude_unset, -# model_as_dict = model_as_dict, -# inc_address = inc_address, -# inc_contact = inc_contact, -# inc_membership_group_member_list = inc_membership_group_member_list, # List of members associated with a group -# inc_membership_member = inc_membership_member, -# inc_membership_member_profile = inc_membership_member_profile, -# inc_membership_type = inc_membership_type, -# inc_organization = inc_organization, -# inc_person = inc_person, -# inc_product_list = inc_product_list, # List of products that are linked to a membership group -# inc_user = inc_user, -# ) -# ) -# account_obj.membership_group_list = membership_group_result_list -# else: account_obj.membership_group_list = [] - - - - # ### BEGIN ### API Membership Group Methods ### create_membership_group_obj() ### def create_membership_group_obj(membership_group_obj_new:Membership_Group_Base) -> bool|int: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -335,4 +262,4 @@ def update_membership_group_obj( else: log.debug(membership_group_obj_up_result) return False -# ### END ### API Membership Group Methods ### update_membership_group_obj() ### \ No newline at end of file +# ### END ### API Membership Group Methods ### update_membership_group_obj() ### diff --git a/app/methods/membership_type_methods.py b/app/methods/membership_type_methods.py index 2136550..bf85503 100644 --- a/app/methods/membership_type_methods.py +++ b/app/methods/membership_type_methods.py @@ -14,15 +14,6 @@ from app.methods.product_methods import get_product_rec_list, load_product_obj from app.models.membership_type_models import Membership_Type_Base -# ### BEGIN ### API Membership Type Methods ### save_membership_type_obj() ### -def save_membership_type_obj(membership_type_obj_new:Membership_Type_Base): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - return membership_type_id -# ### END ### API Membership Type Methods ### save_membership_type_obj() ### - - # ### BEGIN ### API Membership Type Methods ### load_membership_type_obj() ### def load_membership_type_obj( membership_type_id:int|str, @@ -40,8 +31,8 @@ def load_membership_type_obj( inc_membership_member_profile: bool = False, # under membership_member inc_organization: bool = False, inc_person: bool = False, - # inc_product: bool = False, # is this needed? - inc_product_list: bool = False, + inc_product: bool = False, # Per membership member + inc_product_list: bool = False, # One or more er membership type inc_user: bool = False, ) -> Membership_Type_Base: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -107,6 +98,7 @@ def load_membership_type_obj( if product_rec_list_result := get_product_rec_list( for_obj_type = 'membership_type', for_obj_id = membership_type_id, + # prod_type = prod_type, limit = limit, enabled = enabled, ): @@ -132,81 +124,64 @@ def load_membership_type_obj( # ### BEGIN ### API Membership Type Methods ### get_membership_type_rec_list() ### def get_membership_type_rec_list( - for_obj_type: str, - for_obj_id: str, + account_id: str = None, + # product_id: str = None, + type_level: int = None, limit: int = 1000, enabled: str = 'enabled', # enabled, disabled, all ) -> list|bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass - else: return False + if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass + # if product_id := redis_lookup_id_random(record_id_random=product_id, table_name='product'): pass + data = {} - data[f'{for_obj_type}_id'] = for_obj_id + data['account_id'] = account_id + # data['product_id'] = product_id + data['level'] = type_level - allowed_forign_key_li = ['account'] # 'lu_membership_type_id'? 'level'? - if for_obj_type in allowed_forign_key_li: - log.info(f'Query using forign key: {for_obj_type} {for_obj_id}') - sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id' + if account_id: + sql_account_id = f'`membership_type`.account_id = :account_id' + else: sql_account_id = '' - if enabled in ['enabled', 'disabled', 'all']: - if enabled == 'enabled': - data['enable'] = True - sql_enabled = f'AND `tbl`.enable = :enable' - elif enabled == 'disabled': - data['enable'] = False - sql_enabled = f'AND `tbl`.enable = :enable' - elif enabled == 'all': - sql_enabled = '' + # if product_id: + # sql_product_id = f'`membership_type`.product_id = :product_id' + # else: sql_product_id = '' - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `membership_type`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `membership_type`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + else: sql_enabled = '' - sql = f""" - SELECT `tbl`.id AS 'membership_type_id', `tbl`.id_random AS 'membership_type_id_random' - FROM `membership_type` AS `tbl` - WHERE - {sql_obj_type_id} - {sql_enabled} - ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC - {sql_limit}; - """ - elif for_obj_type == 'membership_member': - log.info(f'Query using joined table: {for_obj_type} {for_obj_id}') - sql_obj_type_id = f'`membership_member`.{for_obj_type}_id = :{for_obj_type}_id' + if type_level: + sql_type_level = f"""AND membership_type.level = :level""" + else: sql_type_level = '' - if enabled in ['enabled', 'disabled', 'all']: - if enabled == 'enabled': - data['enable'] = True - sql_enabled = f'AND `membership_member`.enable = :enable' - elif enabled == 'disabled': - data['enable'] = False - sql_enabled = f'AND `membership_member`.enable = :enable' - elif enabled == 'all': - sql_enabled = '' + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' + sql = f""" + SELECT `membership_type`.id AS 'membership_type_id', `membership_type`.id_random AS 'membership_type_id_random' + FROM `v_membership_type` AS `membership_type` + WHERE + {sql_account_id} + {sql_type_level} + {sql_enabled} + ORDER BY `membership_type`.sort ASC, `membership_type`.created_on DESC, `membership_type`.updated_on DESC + {sql_limit}; + """ - sql = f""" - SELECT `membership_member`.id AS 'membership_type_id', `membership_member`.id_random AS 'membership_type_id_random' - FROM `membership_member` - INNER JOIN membership_type ON membership_member.membership_type_id = membership_type.id - WHERE - {sql_obj_type_id} - {sql_enabled} - - ORDER BY `membership_member`.created_on DESC, `membership_member`.updated_on DESC - {sql_limit}; - """ - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql) if membership_type_rec_li_result := sql_select(data=data, sql=sql, as_list=True): @@ -220,6 +195,14 @@ def get_membership_type_rec_list( # ### END ### API Membership Type Methods ### get_membership_type_rec_list() ### +# ### BEGIN ### API Membership Type Methods ### save_membership_type_obj() ### +def save_membership_type_obj(membership_type_obj_new:Membership_Type_Base): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + return membership_type_id +# ### END ### API Membership Type Methods ### save_membership_type_obj() ### + # ### BEGIN ### API Membership Type Methods ### get_membership_type_rec_list() ### # def get_membership_type_rec_list( diff --git a/app/models/membership_type_models.py b/app/models/membership_type_models.py index c653bb4..6827961 100644 --- a/app/models/membership_type_models.py +++ b/app/models/membership_type_models.py @@ -27,6 +27,8 @@ class Membership_Type_Base(BaseModel): account_id_random: Optional[str] account_id: Optional[int] + level: Optional[int] + name: Optional[str] description: Optional[str] diff --git a/app/routers/account.py b/app/routers/account.py index a192ea6..f632d01 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -12,10 +12,10 @@ from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_ from app.methods.account_methods import load_account_obj, load_account_obj_membership_type 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.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj -from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj -from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj -from app.methods.post_methods import get_post_rec_list, load_post_obj +# from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj +# from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj +# from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj +# from app.methods.post_methods import get_post_rec_list, load_post_obj from app.models.account_models import Account_Base from app.models.response_models import Resp_Body_Base, mk_resp @@ -382,300 +382,6 @@ async def get_account_obj_event_list( # ### END ### API Account ### get_account_obj_event_list() ### -# ### BEGIN ### API Account ### get_account_obj_membership_member_list() ### -# Working well as of 2021-06-24. Using as a template for other routes. -@router.get('/{account_id}/membership_member_list', response_model=Resp_Body_Base) -async def get_account_obj_membership_member_list( - account_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 - # inc_account_cfg: bool = False, - inc_address: bool = False, # Under contact - inc_contact: bool = False, - inc_membership_cfg: bool = False, - # inc_membership_group: bool = False, - inc_membership_group_list: bool = False, - # inc_membership_member: bool = False, - # inc_membership_member_list: bool = False, - inc_membership_member_profile: bool = False, - inc_membership_member_profile_cust: bool = False, - inc_membership_type: bool = False, - # inc_membership_type_list: bool = False, - # inc_order: bool = False, - inc_organization: bool = False, - inc_person: bool = False, - inc_product: bool = False, - inc_product_list: bool = False, - inc_user: bool = False, - x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - ): - 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_data = None - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - - # Updated 2021-06-23 - if membership_member_rec_list_result := get_membership_member_rec_list( - for_obj_type = 'account', - for_obj_id = account_id, - limit = limit, - enabled = enabled, - ): - membership_member_result_list = [] - for membership_member_rec in membership_member_rec_list_result: - if load_membership_member_result := load_membership_member_obj( - membership_member_id = membership_member_rec.get('membership_member_id', None), - 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_membership_cfg = inc_membership_cfg, - inc_membership_group_list = inc_membership_group_list, - # inc_membership_group_member_list = inc_membership_group_member_list, - # inc_membership_member = inc_membership_member, - # inc_membership_member_list = inc_membership_member_list, - inc_membership_member_profile = inc_membership_member_profile, - inc_membership_type = inc_membership_type, - # inc_order = inc_order, - inc_organization = inc_organization, - inc_person = inc_person, - inc_product = inc_product, - # inc_product_list = inc_product_list, - inc_user = inc_user, - ): - membership_member_result_list.append(load_membership_member_result) - else: - membership_member_result_list.append(None) - response_data = membership_member_result_list - else: - return mk_resp(data=False, status_code=400) # Bad Request - - return mk_resp(data=response_data) -# ### END ### API Account ### get_account_obj_membership_member_list() ### - - -# ### BEGIN ### API Account ### get_account_obj_membership_group_list() ### -# Working well as of 2021-06-23. Using as a template for other routes. -@router.get('/{account_id}/membership_group_list', response_model=Resp_Body_Base) -async def get_account_obj_membership_group_list( - account_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 - inc_account_cfg: bool = False, - inc_address: bool = False, # Under contact - inc_contact: bool = False, - inc_membership_cfg: bool = False, - inc_membership_group_member_list: bool = False, # per membership group - inc_membership_member: bool = False, - inc_membership_member_profile: bool = False, - inc_membership_type: bool = False, - # inc_membership_type_list: bool = False, - # inc_order: bool = False, - inc_organization: bool = False, - inc_person: bool = False, - # inc_product: bool = False, - inc_product_list: bool = False, - inc_user: bool = False, - x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - ): - 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_data = None - - # Updated 2021-06-23 - if membership_group_rec_list_result := get_membership_group_rec_list( - for_obj_type = 'account', - for_obj_id = account_id, - limit = limit, - enabled = enabled, - ): - membership_group_result_list = [] - for membership_group_rec in membership_group_rec_list_result: - if load_membership_group_result := load_membership_group_obj( - membership_group_id = membership_group_rec.get('membership_group_id', None), - limit = limit, - enabled = enabled, - by_alias = by_alias, - exclude_unset = exclude_unset, - # model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, - inc_membership_cfg = inc_membership_cfg, - # inc_membership_group_member_list = inc_membership_group_member_list, - inc_membership_member = inc_membership_member, - inc_membership_member_profile = inc_membership_member_profile, - # inc_membership_type_list = inc_membership_type_list, - # inc_membership_member_list = inc_membership_member_list, - # inc_membership_group_member_list = inc_membership_group_member_list, - inc_person = inc_person, - inc_product_list = inc_product_list, - inc_user = inc_user, - ): - membership_group_result_list.append(load_membership_group_result) - else: - membership_group_result_list.append(None) - response_data = membership_group_result_list - else: - return mk_resp(data=False, status_code=400) # Bad Request - - return mk_resp(data=response_data) -# ### END ### API Account ### get_account_obj_membership_group_list() ### - - -# ### BEGIN ### API Account ### get_account_obj_membership_type_list() ### -# Working well as of 2021-06-23. Using as a template for other routes. -@router.get('/{account_id}/membership_type_list', response_model=Resp_Body_Base) -async def get_account_obj_membership_type_list( - account_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 - inc_account_cfg: bool = False, - inc_address: bool = False, # Under contact - inc_contact: bool = False, - inc_membership_cfg: bool = False, - # inc_membership_group: bool = False, - inc_membership_group_list: bool = False, - inc_membership_member: bool = False, - inc_membership_member_list: bool = False, - inc_membership_member_profile: bool = False, - # inc_membership_type: bool = False, - # inc_membership_type_list: bool = False, - # inc_order: bool = False, - inc_organization: bool = False, - inc_person: bool = False, - # inc_product: bool = False, - inc_product_list: bool = False, - inc_user: bool = False, - x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - ): - 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_data = None - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - - # Updated 2021-06-23 - if membership_type_rec_list_result := get_membership_type_rec_list( - for_obj_type = 'account', - for_obj_id = account_id, - limit = limit, - enabled = enabled, - ): - membership_type_result_list = [] - for membership_type_rec in membership_type_rec_list_result: - if load_membership_type_result := load_membership_type_obj( - membership_type_id = membership_type_rec.get('membership_type_id', None), - limit = limit, - enabled = enabled, - by_alias = by_alias, - exclude_unset = exclude_unset, - # model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, - inc_membership_cfg = inc_membership_cfg, - inc_membership_group_list = inc_membership_group_list, - # inc_membership_group_member_list = inc_membership_group_member_list, - # inc_membership_member = inc_membership_member, - inc_membership_member_list = inc_membership_member_list, - inc_membership_member_profile = inc_membership_member_profile, - inc_person = inc_person, - inc_product_list = inc_product_list, - inc_user = inc_user, - ): - membership_type_result_list.append(load_membership_type_result) - else: - membership_type_result_list.append(None) - response_data = membership_type_result_list - else: - return mk_resp(data=False, status_code=400) # Bad Request - - return mk_resp(data=response_data) -# ### END ### API Account ### get_account_obj_membership_type_list() ### - - -# ### BEGIN ### API Account ### get_account_obj_post_list() ### -# Working well as of 2021-06-28. Using as a template for other routes. -@router.get('/{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), - 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 - archive_on: datetime.datetime = None, - inc_account_cfg: bool = False, - inc_address: bool = False, # Under contact - inc_contact: bool = False, - inc_person: bool = False, - inc_post_comment_list: bool = False, - inc_user: bool = False, - x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, - ): - 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_data = None - - # Updated 2021-06-28 - if post_rec_list_result := get_post_rec_list( - for_obj_type = 'account', - for_obj_id = account_id, - limit = limit, - enabled = enabled, - archive_on = archive_on, - ): - 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), - 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, - ): - post_result_list.append(load_post_result) - else: - post_result_list.append(None) - response_data = post_result_list - else: - return mk_resp(data=False, status_code=400) # Bad Request - - return mk_resp(data=response_data) -# ### END ### API Account ### get_account_obj_post_list() ### - - @router.delete('/{obj_id}', response_model=Resp_Body_Base) async def delete_account_obj( obj_id: str = Query(..., min_length=1, max_length=22), diff --git a/app/routers/membership_group.py b/app/routers/membership_group.py index 2e44a5c..c259bb4 100644 --- a/app/routers/membership_group.py +++ b/app/routers/membership_group.py @@ -9,7 +9,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.membership_group_methods import load_membership_group_obj +from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj from app.models.membership_group_models import Membership_Group_Base from app.models.response_models import Resp_Body_Base, mk_resp @@ -18,7 +18,7 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() -@router.post('', response_model=Resp_Body_Base) +@router.post('/membership/group', response_model=Resp_Body_Base) async def post_membership_group_obj( obj: Membership_Group_Base, x_account_id: str = Header(...), @@ -41,7 +41,7 @@ async def post_membership_group_obj( return result -@router.patch('/{obj_id}', response_model=Resp_Body_Base) +@router.patch('/membership/group/{obj_id}', response_model=Resp_Body_Base) async def patch_membership_group_obj( obj_id: str = Query(..., min_length=1, max_length=22), obj: Membership_Group_Base = None, @@ -68,7 +68,7 @@ async def patch_membership_group_obj( return result -@router.get('/list', response_model=Resp_Body_Base) +@router.get('/membership/group/list', response_model=Resp_Body_Base) async def get_membership_group_obj_li( for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), @@ -90,8 +90,73 @@ async def get_membership_group_obj_li( return result +# ### BEGIN ### API Membership Group Methods ### get_account_membership_group_obj_li() ### +# Updated 2021-07-01 +@router.get('/account/{account_id}/membership/group/list', response_model=Resp_Body_Base) +async def get_account_membership_group_obj_li( + account_id: str = Query(..., min_length=1, max_length=22), + # product_id: Optional[str] = Query(None, min_length=1, max_length=22), + # type_level: Optional[int] = None, + enabled: str = 'enabled', + limit: int = 1000, + inc_address: bool = False, + inc_contact: bool = False, + inc_membership_cfg: bool = False, + inc_membership_group_member_list: bool = False, + inc_organization: bool = False, + inc_person: bool = False, + inc_product_list: bool = False, + inc_user: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + log.setLevel(logging.DEBUG) # 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) + + + # Updated 2021-07-01 + if membership_group_rec_list_result := get_membership_group_rec_list( + account_id = account_id, + # product_id = product_id, + # type_level = type_level, + limit = limit, + enabled = enabled, + ): + membership_group_result_list = [] + for membership_group_rec in membership_group_rec_list_result: + if load_membership_group_result := load_membership_group_obj( + membership_group_id = membership_group_rec.get('membership_group_id', None), + enabled = enabled, + limit = limit, + inc_address = inc_address, + inc_contact = inc_contact, + inc_membership_cfg = inc_membership_cfg, + inc_membership_group_member_list = inc_membership_group_member_list, + inc_organization = inc_organization, + inc_person = inc_person, + inc_product_list = inc_product_list, + inc_user = inc_user, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + ): + membership_group_result_list.append(load_membership_group_result) + else: + membership_group_result_list.append(None) + response_data = membership_group_result_list + else: + return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=response_data) +# ### BEGIN ### API Membership Group Methods ### get_account_membership_group_obj_li() ### + + # Look up is only for account, person, or user records -@router.get('/lookup', response_model=Resp_Body_Base) +@router.get('/membership/group/lookup', response_model=Resp_Body_Base) async def lookup_membership_group_obj( for_obj_id: Union[int,str], for_obj_type: str = Query(..., min_length=2, max_length=50), @@ -180,7 +245,7 @@ async def lookup_membership_group_obj( # ### BEGIN ### API Membership Group ### get_membership_group_obj() ### # Working well as of 2021-06-21. Using as a template for other routes. -@router.get('/{membership_group_id}', response_model=Resp_Body_Base) +@router.get('/membership/group/{membership_group_id}', response_model=Resp_Body_Base) async def get_membership_group_obj( membership_group_id: str = Query(..., min_length=1, max_length=22), enabled: str = 'enabled', # For now this covers any included objects or object lists @@ -234,7 +299,7 @@ async def get_membership_group_obj( # ### END ### API Membership ### get_membership_group_obj() ### -@router.delete('/{obj_id}', response_model=Resp_Body_Base) +@router.delete('/membership/group/{obj_id}', response_model=Resp_Body_Base) async def delete_membership_group_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), diff --git a/app/routers/membership_member.py b/app/routers/membership_member.py index 57912e4..c11d7db 100644 --- a/app/routers/membership_member.py +++ b/app/routers/membership_member.py @@ -9,7 +9,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.membership_member_methods import load_membership_member_obj +from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj from app.models.membership_member_models import Membership_Member_Base from app.models.response_models import Resp_Body_Base, mk_resp @@ -18,7 +18,7 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() -@router.post('', response_model=Resp_Body_Base) +@router.post('/membership/member', response_model=Resp_Body_Base) async def post_membership_member_obj( obj: Membership_Member_Base, x_account_id: str = Header(...), @@ -41,7 +41,7 @@ async def post_membership_member_obj( return result -@router.patch('/{obj_id}', response_model=Resp_Body_Base) +@router.patch('/membership/member/{obj_id}', response_model=Resp_Body_Base) async def patch_membership_member_obj( obj_id: str = Query(..., min_length=1, max_length=22), obj: Membership_Member_Base = None, @@ -68,7 +68,7 @@ async def patch_membership_member_obj( return result -@router.get('/list', response_model=Resp_Body_Base) +@router.get('/membership/member/list', response_model=Resp_Body_Base) async def get_membership_member_obj_li( for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), @@ -90,8 +90,93 @@ async def get_membership_member_obj_li( return result + +# ### BEGIN ### API Membership Member ### get_account_obj_membership_member_list() ### +# Working well as of 2021-06-24. Using as a template for other routes. +@router.get('/account/{account_id}/membership/member/list', response_model=Resp_Body_Base) +async def get_account_obj_membership_member_list( + account_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 + # inc_account_cfg: bool = False, + inc_address: bool = False, # Under contact + inc_contact: bool = False, + inc_membership_cfg: bool = False, + # inc_membership_group: bool = False, + inc_membership_group_list: bool = False, + # inc_membership_member: bool = False, + # inc_membership_member_list: bool = False, + inc_membership_member_profile: bool = False, + inc_membership_member_profile_cust: bool = False, + inc_membership_type: bool = False, + # inc_membership_type_list: bool = False, + # inc_order: bool = False, + inc_organization: bool = False, + inc_person: bool = False, + inc_product: bool = False, + inc_product_list: bool = False, + inc_user: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + 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_data = None + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + # Updated 2021-06-23 + if membership_member_rec_list_result := get_membership_member_rec_list( + for_obj_type = 'account', + for_obj_id = account_id, + limit = limit, + enabled = enabled, + ): + membership_member_result_list = [] + for membership_member_rec in membership_member_rec_list_result: + if load_membership_member_result := load_membership_member_obj( + membership_member_id = membership_member_rec.get('membership_member_id', None), + 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_membership_cfg = inc_membership_cfg, + inc_membership_group_list = inc_membership_group_list, + # inc_membership_group_member_list = inc_membership_group_member_list, + # inc_membership_member = inc_membership_member, + # inc_membership_member_list = inc_membership_member_list, + inc_membership_member_profile = inc_membership_member_profile, + inc_membership_type = inc_membership_type, + # inc_order = inc_order, + inc_organization = inc_organization, + inc_person = inc_person, + inc_product = inc_product, + # inc_product_list = inc_product_list, + inc_user = inc_user, + ): + membership_member_result_list.append(load_membership_member_result) + else: + membership_member_result_list.append(None) + response_data = membership_member_result_list + else: + return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=response_data) +# ### END ### API Membership Member ### get_account_obj_membership_member_list() ### + + + + + # Look up is only for account, person, or user records -@router.get('/lookup', response_model=Resp_Body_Base) +@router.get('/membership/member/lookup', response_model=Resp_Body_Base) async def lookup_membership_member_obj( for_obj_id: Union[int,str], for_obj_type: str = Query(..., min_length=2, max_length=50), @@ -180,7 +265,7 @@ async def lookup_membership_member_obj( # ### BEGIN ### API Membership Group ### get_membership_member_obj() ### # Working well as of 2021-06-24. Using as a template for other routes. -@router.get('/{membership_member_id}', response_model=Resp_Body_Base) +@router.get('/membership/member/{membership_member_id}', response_model=Resp_Body_Base) async def get_membership_member_obj( membership_member_id: str = Query(..., min_length=1, max_length=22), enabled: str = 'enabled', # For now this covers any included objects or object lists @@ -235,7 +320,7 @@ async def get_membership_member_obj( # ### END ### API Membership ### get_membership_member_obj() ### -@router.delete('/{obj_id}', response_model=Resp_Body_Base) +@router.delete('/membership/member/{obj_id}', response_model=Resp_Body_Base) async def delete_membership_member_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), diff --git a/app/routers/membership_type.py b/app/routers/membership_type.py index 52a95c2..cf0488a 100644 --- a/app/routers/membership_type.py +++ b/app/routers/membership_type.py @@ -9,7 +9,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.membership_type_methods import load_membership_type_obj +from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj from app.models.membership_type_models import Membership_Type_Base from app.models.response_models import Resp_Body_Base, mk_resp @@ -18,7 +18,7 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() -@router.post('', response_model=Resp_Body_Base) +@router.post('/membership/type', response_model=Resp_Body_Base) async def post_membership_type_obj( obj: Membership_Type_Base, x_account_id: str = Header(...), @@ -41,7 +41,7 @@ async def post_membership_type_obj( return result -@router.patch('/{obj_id}', response_model=Resp_Body_Base) +@router.patch('/membership/type/{obj_id}', response_model=Resp_Body_Base) async def patch_membership_type_obj( obj_id: str = Query(..., min_length=1, max_length=22), obj: Membership_Type_Base = None, @@ -68,7 +68,7 @@ async def patch_membership_type_obj( return result -@router.get('/list', response_model=Resp_Body_Base) +@router.get('/membership/type/list', response_model=Resp_Body_Base) async def get_membership_type_obj_li( for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), @@ -90,8 +90,73 @@ async def get_membership_type_obj_li( return result +# ### BEGIN ### API Membership Type Methods ### get_account_membership_type_obj_li() ### +# Updated 2021-07-01 +@router.get('/account/{account_id}/membership/type/list', response_model=Resp_Body_Base) +async def get_account_membership_type_obj_li( + account_id: str = Query(..., min_length=1, max_length=22), + # product_id: Optional[str] = Query(None, min_length=1, max_length=22), + type_level: Optional[int] = None, + enabled: str = 'enabled', + limit: int = 1000, + inc_address: bool = False, + inc_contact: bool = False, + inc_membership_cfg: bool = False, + inc_membership_member_list: bool = False, + inc_organization: bool = False, + inc_person: bool = False, + inc_product_list: bool = False, + inc_user: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + 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) + + + # Updated 2021-07-01 + if membership_type_rec_list_result := get_membership_type_rec_list( + account_id = account_id, + # product_id = product_id, + type_level = type_level, + limit = limit, + enabled = enabled, + ): + membership_type_result_list = [] + for membership_type_rec in membership_type_rec_list_result: + if load_membership_type_result := load_membership_type_obj( + membership_type_id = membership_type_rec.get('membership_type_id', None), + enabled = enabled, + limit = limit, + inc_address = inc_address, + inc_contact = inc_contact, + inc_membership_cfg = inc_membership_cfg, + inc_membership_member_list = inc_membership_member_list, + inc_organization = inc_organization, + inc_person = inc_person, + inc_product_list = inc_product_list, + inc_user = inc_user, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + ): + membership_type_result_list.append(load_membership_type_result) + else: + membership_type_result_list.append(None) + response_data = membership_type_result_list + else: + return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=response_data) +# ### BEGIN ### API Membership Type Methods ### get_account_membership_type_obj_li() ### + + # Look up is only for account, person, or user records -@router.get('/lookup', response_model=Resp_Body_Base) +@router.get('/membership/type/lookup', response_model=Resp_Body_Base) async def lookup_membership_type_obj( for_obj_id: Union[int,str], for_obj_type: str = Query(..., min_length=2, max_length=50), @@ -179,8 +244,8 @@ async def lookup_membership_type_obj( # ### BEGIN ### API Membership Type ### get_membership_type_obj() ### -# Working well as of 2021-06-21. Using as a template for other routes. -@router.get('/{membership_type_id}', response_model=Resp_Body_Base) +# Working well as of 2021-07-01. Using as a template for other routes. +@router.get('/membership/type/{membership_type_id}', response_model=Resp_Body_Base) async def get_membership_type_obj( membership_type_id: str = Query(..., min_length=1, max_length=22), enabled: str = 'enabled', # For now this covers any included objects or object lists @@ -234,7 +299,7 @@ async def get_membership_type_obj( # ### END ### API Membership ### get_membership_type_obj() ### -# @router.get('/{obj_id}', response_model=Resp_Body_Base) +# @router.get('/membership/type/{obj_id}', response_model=Resp_Body_Base) # async def get_membership_type_obj_old( # obj_id: str = Query(..., min_length=1, max_length=22), # x_account_id: str = Header(...), @@ -254,7 +319,7 @@ async def get_membership_type_obj( # return result -@router.delete('/{obj_id}', response_model=Resp_Body_Base) +@router.delete('/membership/type/{obj_id}', response_model=Resp_Body_Base) async def delete_membership_type_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), diff --git a/app/routers/post.py b/app/routers/post.py index 92881de..ed6158d 100644 --- a/app/routers/post.py +++ b/app/routers/post.py @@ -10,6 +10,7 @@ from app.config import settings from app.db_sql import * from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template +from app.methods.post_methods import get_post_rec_list, load_post_obj from app.models.post_models import Post_Base from app.models.response_models import * @@ -18,7 +19,7 @@ from app.models.response_models import * router = APIRouter() -@router.post('', response_model=Resp_Body_Base) +@router.post('/post', response_model=Resp_Body_Base) async def post_post_obj( obj: Post_Base, x_account_id: str = Header(...), @@ -41,7 +42,7 @@ async def post_post_obj( return result -@router.patch('/{obj_id}', response_model=Resp_Body_Base) +@router.patch('/post/{obj_id}', response_model=Resp_Body_Base) async def patch_post_obj( obj_id: str = Query(..., min_length=1, max_length=22), obj: Post_Base = None, @@ -68,7 +69,7 @@ async def patch_post_obj( return result -@router.get('/list', response_model=Resp_Body_Base) +@router.get('/post/list', response_model=Resp_Body_Base) async def get_post_obj_li( for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), @@ -90,7 +91,68 @@ async def get_post_obj_li( return result -@router.get('/{obj_id}', response_model=Resp_Body_Base) +# ### BEGIN ### API Post ### get_account_obj_post_list() ### +# Working well as of 2021-06-28. Using as a template for other routes. +@router.get('/post/{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), + 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 + archive_on: datetime.datetime = None, + inc_account_cfg: bool = False, + inc_address: bool = False, # Under contact + inc_contact: bool = False, + inc_person: bool = False, + inc_post_comment_list: bool = False, + inc_user: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + 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_data = None + + # Updated 2021-06-28 + if post_rec_list_result := get_post_rec_list( + for_obj_type = 'account', + for_obj_id = account_id, + limit = limit, + enabled = enabled, + archive_on = archive_on, + ): + 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), + 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, + ): + post_result_list.append(load_post_result) + else: + post_result_list.append(None) + response_data = post_result_list + else: + return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=response_data) +# ### END ### API Post ### get_account_obj_post_list() ### + + +@router.get('/post/{obj_id}', response_model=Resp_Body_Base) async def get_post_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), @@ -110,7 +172,7 @@ async def get_post_obj( return result -@router.delete('/{obj_id}', response_model=Resp_Body_Base) +@router.delete('/post/{obj_id}', response_model=Resp_Body_Base) async def delete_post_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), diff --git a/app/routers/product.py b/app/routers/product.py index 997f382..c04780e 100644 --- a/app/routers/product.py +++ b/app/routers/product.py @@ -85,10 +85,7 @@ async def get_product_obj_li( log.debug(locals()) if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass - else: - return mk_resp(data=None, status_code=404) - - response_data = None + else: return mk_resp(data=None, status_code=404) # Updated 2021-07-01 if product_rec_list_result := get_product_rec_list( @@ -102,7 +99,6 @@ async def get_product_obj_li( for product_rec in product_rec_list_result: if load_product_result := load_product_obj( product_id = product_rec.get('product_id', None), - limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, # model_as_dict = model_as_dict,