From 6e0ceefa4802ea1f3a89869ce39cb34d12d607b9 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 23 Jun 2021 17:44:02 -0400 Subject: [PATCH] Working on all module routes, methods, and models --- app/methods/membership_group_methods.py | 15 +- app/methods/membership_member_methods.py | 396 ++++++++++++----------- app/methods/membership_type_methods.py | 169 +++++++--- app/routers/account.py | 199 +++++++----- 4 files changed, 469 insertions(+), 310 deletions(-) diff --git a/app/methods/membership_group_methods.py b/app/methods/membership_group_methods.py index 73c9e27..f56674e 100644 --- a/app/methods/membership_group_methods.py +++ b/app/methods/membership_group_methods.py @@ -29,6 +29,7 @@ def load_membership_group_obj( inc_membership_member: bool = False, inc_membership_member_profile: bool = False, # under membership_member inc_membership_type_list: bool = False, # ??? + inc_organization: bool = False, # inc_parent_membership_group: bool = False, inc_person: bool = False, inc_product_list: bool = False, @@ -65,7 +66,7 @@ def load_membership_group_obj( # Updated 2021-06-23 if inc_membership_group_member_list: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL if membership_group_member_rec_list_result := get_membership_group_member_rec_list( for_obj_type = 'membership_group', for_obj_id = membership_group_id, @@ -83,15 +84,14 @@ def load_membership_group_obj( enabled = enabled, inc_membership_member = inc_membership_member, # inc_membership_group_list = inc_membership_group_list, - # inc_membership_group_member_profile = inc_membership_group_member_profile, + # inc_membership_member_profile = inc_membership_member_profile, # inc_organization = inc_organization, inc_person = inc_person, # inc_product = inc_product, inc_user = inc_user, ): membership_group_member_result_list.append(load_membership_group_member_result) - else: - membership_group_member_result_list.append(None) + else: membership_group_member_result_list.append(None) membership_group_obj.membership_group_member_list = membership_group_member_result_list else: membership_group_obj.membership_group_member_list = [] @@ -144,7 +144,7 @@ def get_membership_group_rec_list( limit: int = 1000, enabled: str = 'enabled', # enabled, disabled, all ) -> list|bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # 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 @@ -210,18 +210,19 @@ def get_membership_group_rec_list( 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.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, diff --git a/app/methods/membership_member_methods.py b/app/methods/membership_member_methods.py index 57c09b1..35e8b9d 100644 --- a/app/methods/membership_member_methods.py +++ b/app/methods/membership_member_methods.py @@ -16,6 +16,213 @@ from app.methods.user_methods import load_user_obj from app.models.membership_member_models import Membership_Member_Base +# ### BEGIN ### API Membership Member Methods ### load_membership_member_obj() ### +def load_membership_member_obj( + membership_member_id:int|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_list: bool = False, + inc_membership_member_profile: bool = False, + inc_membership_type: bool = False, + # inc_membership_member_profile_cust: bool = False, + inc_organization: bool = False, + inc_person: bool = False, + inc_user: bool = False, + ) -> Membership_Member_Base: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass + else: return False + + if membership_member_rec := sql_select(table_name='v_membership_member', record_id=membership_member_id): pass + else: return False + + try: + membership_member_obj = Membership_Member_Base(**membership_member_rec) + log.debug(membership_member_obj) + except ValidationError as e: + log.error(e.json()) + + # Updated 2021-06-18 + if inc_membership_group_list: + if membership_group_rec_list_result := get_membership_group_rec_list( + for_obj_type = 'membership_member', + for_obj_id = membership_member_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, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + # inc_membership_group_list = inc_membership_group_list, + # inc_membership_member_profile = inc_membership_member_profile, + # inc_organization = inc_organization, + # inc_person = inc_person, + # inc_product = inc_product, + # inc_user = inc_user, + ): + membership_group_result_list.append(load_membership_group_result) + else: membership_group_result_list.append(None) + + + # 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, + # # enabled = enabled, + # ) + # ) + membership_member_obj.membership_group_list = membership_group_result_list + else: membership_member_obj.membership_group_list = [] + + # Updated 2021-06-21 + if inc_membership_member_profile: + membership_member_profile_id = membership_member_rec.get('membership_member_profile_id', None) + log.debug(membership_member_profile_id) + if membership_member_profile_result := load_membership_member_profile_obj( + membership_member_profile_id = membership_member_profile_id, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + inc_address = inc_address, + inc_contact = inc_contact, + # inc_membership = inc_membership, + inc_organization = inc_organization, + ): + membership_member_obj.membership_member_profile = membership_member_profile_result + else: membership_member_obj.membership_member_profile = None + log.debug(membership_member_profile_result) + + # Updated 2021-06-18 + if inc_membership_type: + membership_type_id = membership_member_rec.get('membership_type_id', None) + log.debug(membership_type_id) + if membership_type_result := load_membership_type_obj( + membership_type_id = membership_type_id, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + inc_address = inc_address, + inc_contact = inc_contact, + # inc_membership = inc_membership, + # inc_organization = inc_organization, + ): + membership_member_obj.membership_type = membership_type_result + else: membership_member_obj.membership_type = None + log.debug(membership_type_result) + + # Updated 2021-06-18 + if inc_person: + person_id = membership_member_rec.get('person_id', None) + log.debug(person_id) + if person_result := load_person_obj( + person_id = person_id, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + inc_address = inc_address, + inc_contact = inc_contact, + # inc_organization = inc_organization, + # inc_user = inc_user, + ): + membership_member_obj.person = person_result + else: membership_member_obj.person = None + log.debug(person_result) + + # Updated 2021-06-18 + if inc_user: + user_id = membership_member_rec.get('user_id', None) + if user_result := load_user_obj( + user_id = user_id, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + # inc_address = inc_address, + # inc_contact = inc_contact, + # inc_organization = inc_organization, + # inc_person = inc_person, + ): + membership_member_obj.user = user_result + else: membership_member_obj.user = None + log.debug(user_result) + + if model_as_dict: + return membership_member_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + else: + return membership_member_obj +# ### END ### API Membership Member Methods ### load_membership_member_obj() ### + + +# ### BEGIN ### API Membership Member Methods ### get_membership_member_rec_list() ### +def get_membership_member_rec_list( + for_obj_type: str, + for_obj_id: str, + limit: int = 1000, + enabled: str = 'enabled', # enabled, disabled, all + ) -> list|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 + data = {} + data[f'{for_obj_type}_id'] = for_obj_id + # data['for_obj_type'] = for_obj_type + sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_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 limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' + + sql = f""" + SELECT `tbl`.id AS 'membership_member_id', `tbl`.id_random AS 'membership_member_id_random' + FROM `membership_member` AS `tbl` + WHERE + {sql_obj_type_id} + {sql_enabled} + ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC + {sql_limit}; + """ + + if membership_member_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + membership_member_rec_li = membership_member_rec_li_result + else: + membership_member_rec_li = [] + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(membership_member_rec_li_result) + + return membership_member_rec_li +# ### END ### API Membership Member Methods ### get_membership_member_rec_list() ### + + # ### BEGIN ### API Membership Member Methods ### save_membership_member_obj() ### def save_membership_member_obj(order_obj_new:Membership_Member_Base=None): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -161,192 +368,3 @@ def save_membership_member_obj(order_obj_new:Membership_Member_Base=None): log.debug(order_line_obj_resp) return order_id # ### END ### API Membership Member Methods ### save_membership_member_obj() ### - - -# ### BEGIN ### API Membership Member Methods ### load_membership_member_obj() ### -def load_membership_member_obj( - membership_member_id:int|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_list: bool = False, - inc_membership_member_profile: bool = False, - inc_membership_type: bool = False, - # inc_membership_member_profile_cust: bool = False, - inc_organization: bool = False, - inc_person: bool = False, - inc_user: bool = False, - ) -> Membership_Member_Base: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass - else: return False - - if membership_member_rec := sql_select(table_name='v_membership_member', record_id=membership_member_id): pass - else: return False - - try: - membership_member_obj = Membership_Member_Base(**membership_member_rec) - log.debug(membership_member_obj) - except ValidationError as e: - log.error(e.json()) - - # Updated 2021-06-18 - if inc_membership_group_list: - if membership_group_rec_list_result := get_membership_group_rec_list( - for_obj_type = 'membership_member', - for_obj_id = membership_member_id, - limit = limit, - enabled = enabled, - ): - membership_group_result_list = [] - for membership_group_rec in membership_group_result_list: - 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, - # enabled = enabled, - ) - ) - membership_member_obj.membership_group_list = membership_group_result_list - else: membership_member_obj.membership_group_list = [] - - # Updated 2021-06-21 - if inc_membership_member_profile: - membership_member_profile_id = membership_member_rec.get('membership_member_profile_id', None) - log.debug(membership_member_profile_id) - if membership_member_profile_result := load_membership_member_profile_obj( - membership_member_profile_id = membership_member_profile_id, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, - # inc_membership = inc_membership, - inc_organization = inc_organization, - ): - membership_member_obj.membership_member_profile = membership_member_profile_result - else: membership_member_obj.membership_member_profile = None - log.debug(membership_member_profile_result) - - # Updated 2021-06-18 - if inc_membership_type: - membership_type_id = membership_member_rec.get('membership_type_id', None) - log.debug(membership_type_id) - if membership_type_result := load_membership_type_obj( - membership_type_id = membership_type_id, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, - # inc_membership = inc_membership, - # inc_organization = inc_organization, - ): - membership_member_obj.membership_type = membership_type_result - else: membership_member_obj.membership_type = None - log.debug(membership_type_result) - - # Updated 2021-06-18 - if inc_person: - person_id = membership_member_rec.get('person_id', None) - log.debug(person_id) - if person_result := load_person_obj( - person_id = person_id, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, - # inc_organization = inc_organization, - # inc_user = inc_user, - ): - membership_member_obj.person = person_result - else: membership_member_obj.person = None - log.debug(person_result) - - # Updated 2021-06-18 - if inc_user: - user_id = membership_member_rec.get('user_id', None) - if user_result := load_user_obj( - user_id = user_id, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - # inc_address = inc_address, - # inc_contact = inc_contact, - # inc_organization = inc_organization, - # inc_person = inc_person, - ): - membership_member_obj.user = user_result - else: membership_member_obj.user = None - log.debug(user_result) - - if model_as_dict: - return membership_member_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member - else: - return membership_member_obj -# ### END ### API Membership Member Methods ### load_membership_member_obj() ### - - -# ### BEGIN ### API Membership Member Methods ### get_membership_member_rec_list() ### -def get_membership_member_rec_list( - for_obj_type: str, - for_obj_id: str, - limit: int = 1000, - enabled: str = 'enabled', # enabled, disabled, all - ) -> list|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 - data = {} - data[f'{for_obj_type}_id'] = for_obj_id - # data['for_obj_type'] = for_obj_type - sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_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 limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' - - sql = f""" - SELECT `tbl`.id AS 'membership_member_id', `tbl`.id_random AS 'membership_member_id_random' - FROM `membership_member` AS `tbl` - WHERE - {sql_obj_type_id} - {sql_enabled} - ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC - {sql_limit}; - """ - - if membership_member_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - membership_member_rec_li = membership_member_rec_li_result - else: - membership_member_rec_li = [] - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_member_rec_li_result) - - return membership_member_rec_li -# ### END ### API Membership Member Methods ### get_membership_member_rec_list() ### diff --git a/app/methods/membership_type_methods.py b/app/methods/membership_type_methods.py index f8de66e..bc028fe 100644 --- a/app/methods/membership_type_methods.py +++ b/app/methods/membership_type_methods.py @@ -35,15 +35,16 @@ def load_membership_type_obj( inc_contact: bool = False, inc_membership_cfg: bool = False, inc_membership_group_list: bool = False, # under membership_member + inc_membership_group_member_list: bool = False, inc_membership_member_list: bool = False, 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: bool = False, # is this needed? inc_product_list: bool = False, inc_user: bool = False, ) -> Membership_Type_Base: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if membership_type_id := redis_lookup_id_random(record_id_random=membership_type_id, table_name='membership_type'): pass @@ -52,6 +53,7 @@ def load_membership_type_obj( if membership_type_rec := sql_select(table_name='v_membership_type', record_id=membership_type_id): pass else: return False + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(membership_type_rec) try: @@ -60,17 +62,18 @@ def load_membership_type_obj( except ValidationError as e: log.error(e.json()) - # Updated 2021-06-18 + # Updated 2021-06-23 if inc_membership_cfg: - membership_cfg_result = load_membership_cfg_obj( + if membership_cfg_obj_result := load_membership_cfg_obj( account_id = membership_type_rec.get('account_id', None), by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, - ) - membership_type_rec['cfg'] = membership_cfg_result + ): + membership_type_obj.cfg = membership_cfg_obj_result + else: membership_type_obj.cfg = None - # Updated 2021-06-18 + # Updated 2021-06-23 if inc_membership_member_list: if membership_member_rec_list_result := get_membership_member_rec_list( for_obj_type = 'membership_type', @@ -80,8 +83,7 @@ def load_membership_type_obj( ): membership_member_result_list = [] for membership_member_rec in membership_member_rec_list_result: - membership_member_result_list.append( - load_membership_member_obj( + 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, @@ -90,16 +92,17 @@ def load_membership_type_obj( enabled = enabled, inc_membership_group_list = inc_membership_group_list, inc_membership_member_profile = inc_membership_member_profile, - inc_organization = inc_organization, + # inc_organization = inc_organization, inc_person = inc_person, # inc_product = inc_product, inc_user = inc_user, - ) - ) + ): + membership_member_result_list.append(load_membership_member_result) + else: membership_member_result_list.append(None) membership_type_obj.membership_member_list = membership_member_result_list else: membership_type_obj.membership_member_list = [] - # Updated 2021-06-18 + # Updated 2021-06-23 if inc_product_list: if product_rec_list_result := get_product_rec_list( for_obj_type = 'membership_type', @@ -126,6 +129,7 @@ def load_membership_type_obj( return membership_type_obj # ### END ### API Membership Type Methods ### load_membership_type_obj() ### + # ### BEGIN ### API Membership Type Methods ### get_membership_type_rec_list() ### def get_membership_type_rec_list( for_obj_type: str, @@ -133,7 +137,7 @@ def get_membership_type_rec_list( 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 @@ -141,34 +145,68 @@ def get_membership_type_rec_list( data = {} data[f'{for_obj_type}_id'] = for_obj_id # data['for_obj_type'] = for_obj_type - sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id' + if for_obj_type == 'account': + print('********************************* account **************************') + sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_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 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 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 `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}; - """ + 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': + print('********************************* membership_member **************************') + sql_obj_type_id = f'`membership_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_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 = '' + + 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.debug(sql) if membership_type_rec_li_result := sql_select(data=data, sql=sql, as_list=True): membership_type_rec_li = membership_type_rec_li_result else: @@ -178,3 +216,58 @@ def get_membership_type_rec_list( return membership_type_rec_li # ### END ### API Membership Type Methods ### get_membership_type_rec_list() ### + + + +# ### BEGIN ### API Membership Type Methods ### get_membership_type_rec_list() ### +# def get_membership_type_rec_list( +# for_obj_type: str, +# for_obj_id: str, +# limit: int = 1000, +# enabled: str = 'enabled', # enabled, disabled, all +# ) -> list|bool: +# log.setLevel(logging.WARNING) # 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 +# data = {} +# data[f'{for_obj_type}_id'] = for_obj_id +# # data['for_obj_type'] = for_obj_type +# sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_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 limit: +# data['limit'] = limit +# sql_limit = f'LIMIT :limit' +# else: +# sql_limit = '' + +# 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}; +# """ + +# if membership_type_rec_li_result := sql_select(data=data, sql=sql, as_list=True): +# membership_type_rec_li = membership_type_rec_li_result +# else: +# membership_type_rec_li = [] +# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL +# log.debug(membership_type_rec_li_result) + +# return membership_type_rec_li +# ### END ### API Membership Type Methods ### get_membership_type_rec_list() ### diff --git a/app/routers/account.py b/app/routers/account.py index e2f501a..7ed7584 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -12,6 +12,8 @@ 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.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.models.account_models import Account_Base from app.models.response_models import Resp_Body_Base, mk_resp @@ -273,10 +275,10 @@ async def get_account_obj_new( # ### END ### API Account ### get_account_obj_new() ### -# ### BEGIN ### API Account ### get_account_obj_membership() ### +# ### BEGIN ### API Account ### get_account_obj_membership_member_list() ### # Working well as of 2021-06-23. Using as a template for other routes. -@router.get('/{account_id}/membership', response_model=Resp_Body_Base) -async def get_account_obj_membership( +@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 @@ -284,13 +286,13 @@ async def get_account_obj_membership( inc_address: bool = False, # Under contact inc_contact: bool = False, inc_membership_cfg: bool = False, - inc_membership_group: 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_list: bool = False, inc_membership_member_profile: bool = False, inc_membership_type: bool = False, - inc_membership_type_list: bool = False, + # inc_membership_type_list: bool = False, inc_order: bool = False, inc_organization: bool = False, inc_person: bool = False, @@ -308,48 +310,53 @@ async def get_account_obj_membership( else: return mk_resp(data=None, status_code=404) - if account_result := load_account_obj_membership_type( - account_id = account_id, - enabled = enabled, + 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, - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = False, # NOTE: returning model as a dict - inc_account_cfg = inc_account_cfg, - inc_address = inc_address, - inc_contact = inc_contact, - inc_membership_cfg = inc_membership_cfg, - inc_membership_group_list = inc_membership_group_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_list = inc_membership_type_list, - # inc_order = inc_order, - # inc_order_list = inc_order_list, - inc_organization = inc_organization, - inc_person = inc_person, - inc_product = inc_product, - inc_product_list = inc_product_list, - inc_user = inc_user, + enabled = enabled, ): - if isinstance(account_result, dict): - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.info('Result is a dict') - response_data = account_result - log.debug(response_data) - else: - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.info('Result is probably an object model') - response_data = account_result - log.debug(response_data) + 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, + 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_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() ### +# ### END ### API Account ### get_account_obj_membership_member_list() ### -# ### BEGIN ### API Account ### get_account_obj_membership() ### +# ### 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( @@ -417,48 +424,88 @@ async def get_account_obj_membership_group_list( else: membership_group_result_list.append(None) response_data = membership_group_result_list - - # if account_result := load_membership_group_list( - # account_id = account_id, - # enabled = enabled, - # limit = limit, - # by_alias = by_alias, - # exclude_unset = exclude_unset, - # model_as_dict = False, # NOTE: returning model as a dict - # inc_account_cfg = inc_account_cfg, - # 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 = inc_membership_type, - # # inc_membership_type_list = inc_membership_type_list, - # # inc_order = inc_order, - # # inc_order_list = inc_order_list, - # inc_organization = inc_organization, - # inc_person = inc_person, - # # inc_product = inc_product, - # inc_product_list = inc_product_list, - # inc_user = inc_user, - # ): - # if isinstance(account_result, dict): - # # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - # log.info('Result is a dict') - # response_data = account_result - # log.debug(response_data) - # else: - # # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - # log.info('Result is probably an object model') - # response_data = account_result - # log.debug(response_data) else: return mk_resp(data=False, status_code=400) # Bad Request return mk_resp(data=response_data) -# ### END ### API Account ### get_account_obj_membership() ### +# ### 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() ### @router.delete('/{obj_id}', response_model=Resp_Body_Base)