From 49805f48c9fae8e044923dc024b08124f24badbe Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Fri, 9 Jul 2021 17:34:02 -0400 Subject: [PATCH] A lot of changes related to person and membership --- app/db_sql.py | 14 +- app/main.py | 8 +- app/methods/account_methods.py | 90 +++---- app/methods/address_methods.py | 2 +- app/methods/archive_content_methods.py | 2 +- app/methods/archive_methods.py | 2 +- app/methods/contact_methods.py | 10 +- app/methods/event_methods.py | 2 +- app/methods/hosted_file_methods.py | 2 +- app/methods/journal_entry_methods.py | 2 +- app/methods/journal_methods.py | 2 +- app/methods/membership_cfg_methods.py | 6 +- .../membership_group_member_methods.py | 189 -------------- app/methods/membership_group_methods.py | 122 +++++---- .../membership_group_person_methods.py | 191 ++++++++++++++ ...ethods.py => membership_person_methods.py} | 219 ++++++++++------ ...y => membership_person_profile_methods.py} | 52 ++-- app/methods/membership_type_methods.py | 38 +-- app/methods/membership_type_person_methods.py | 238 ++++++++++++++++++ app/methods/order_line_methods.py | 2 +- app/methods/order_methods.py | 2 +- app/methods/organization_methods.py | 2 +- app/methods/person_methods.py | 108 +++++++- app/methods/post_comment_methods.py | 2 +- app/methods/post_methods.py | 2 +- app/methods/site_domain_methods.py | 2 +- app/methods/site_methods.py | 2 +- app/methods/user_methods.py | 4 +- app/methods/user_role_methods.py | 2 +- app/models/account_models.py | 2 +- app/models/common_field_schema.py | 7 +- app/models/contact_models.py | 8 +- app/models/membership_cfg_models.py | 8 +- app/models/membership_group_models.py | 2 +- ...s.py => membership_group_person_models.py} | 56 +++-- app/models/membership_person_models.py | 204 +++++++++++++++ ...py => membership_person_profile_models.py} | 20 +- app/models/membership_type_models.py | 2 +- ...ls.py => membership_type_person_models.py} | 74 ++---- app/models/person_models.py | 12 +- app/models/user_models.py | 8 +- app/routers/account.py | 14 +- app/routers/api_crud.py | 17 +- app/routers/lookup.py | 2 +- app/routers/membership_group.py | 18 +- ...bership_member.py => membership_person.py} | 229 +++++++++++------ app/routers/membership_type.py | 24 +- app/routers/person.py | 117 ++------- app/routers/user.py | 4 +- 49 files changed, 1389 insertions(+), 758 deletions(-) delete mode 100644 app/methods/membership_group_member_methods.py create mode 100644 app/methods/membership_group_person_methods.py rename app/methods/{membership_member_methods.py => membership_person_methods.py} (66%) rename app/methods/{membership_member_profile_methods.py => membership_person_profile_methods.py} (55%) create mode 100644 app/methods/membership_type_person_methods.py rename app/models/{membership_group_member_models.py => membership_group_person_models.py} (64%) create mode 100644 app/models/membership_person_models.py rename app/models/{membership_member_profile_models.py => membership_person_profile_models.py} (81%) rename app/models/{membership_member_models.py => membership_type_person_models.py} (64%) rename app/routers/{membership_member.py => membership_person.py} (51%) diff --git a/app/db_sql.py b/app/db_sql.py index 67286d5..6037804 100644 --- a/app/db_sql.py +++ b/app/db_sql.py @@ -880,9 +880,17 @@ def lookup_id_random_pop(obj_data:dict): obj_data['journal_entry_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('journal_entry_file_id_random', None), table_name='journal_entry_file') obj_data.pop('journal_entry_file_id_random') - if 'membership_entry_file_id_random' in obj_data: - obj_data['membership_entry_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_entry_file_id_random', None), table_name='membership_entry_file') - obj_data.pop('membership_entry_file_id_random') + if 'membership_group_id_random' in obj_data: + obj_data['membership_group_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_group_id_random', None), table_name='membership_group') + obj_data.pop('membership_group_id_random') + + if 'membership_person_id_random' in obj_data: + obj_data['membership_person_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_person_id_random', None), table_name='membership_person') + obj_data.pop('membership_person_id_random') + + if 'membership_type_id_random' in obj_data: + obj_data['membership_type_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_type_id_random', None), table_name='membership_type') + obj_data.pop('membership_type_id_random') if 'order_id_random' in obj_data: obj_data['order_id'] = redis_lookup_id_random(record_id_random=obj_data.get('order_id_random', None), table_name='order') diff --git a/app/main.py b/app/main.py index 585e35a..14e7e99 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, log_client_viewing, 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.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, log_client_viewing, lookup, membership_group, membership_person, 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 @@ -170,9 +170,9 @@ app.include_router( tags=['Membership Group'], ) app.include_router( - membership_member.router, + membership_person.router, # prefix='/membership/member', - tags=['Membership Member'], + tags=['Membership Person'], ) app.include_router( membership_type.router, @@ -201,7 +201,7 @@ app.include_router( ) app.include_router( person.router, - prefix='/person', + # prefix='/person', tags=['Person'], ) app.include_router( diff --git a/app/methods/account_methods.py b/app/methods/account_methods.py index 40a89f9..b631801 100644 --- a/app/methods/account_methods.py +++ b/app/methods/account_methods.py @@ -16,7 +16,7 @@ from app.methods.hosted_file_methods import get_hosted_file_rec_list, load_hoste from app.methods.journal_methods import get_journal_rec_list, load_journal_obj from app.methods.membership_cfg_methods import load_membership_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_person_methods import get_membership_person_rec_list, load_membership_person_obj from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj from app.methods.order_methods import get_order_rec_list, load_order_obj # from app.methods.order_cart_methods import get_order_cart_rec_list, load_order_cart_obj @@ -86,10 +86,10 @@ def load_account_obj( inc_journal_entry_list: bool = False, # Priority l3 inc_membership_cfg: bool = False, inc_membership_group_list: bool = False, # List of groups for the account - inc_membership_group_member_list: bool = False, # List of members of a group - inc_membership_member: bool = False, - inc_membership_member_list: bool = False, # Priority l1 - inc_membership_member_profile: bool = False, + inc_membership_group_person_list: bool = False, # List of members of a group + inc_membership_person: bool = False, + inc_membership_person_list: bool = False, # Priority l1 + inc_membership_person_profile: bool = False, # inc_membership_type: bool = False, inc_membership_type_list: bool = False, inc_order: bool = False, @@ -316,8 +316,8 @@ def load_account_obj( by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, - inc_membership_member_list = inc_membership_member_list, - # inc_membership_group_member_list = inc_membership_group_member_list, + inc_membership_person_list = inc_membership_person_list, + # inc_membership_group_person_list = inc_membership_group_person_list, inc_product_list = inc_product_list, ) ) @@ -325,33 +325,33 @@ def load_account_obj( else: account_obj.membership_group_list = [] # Updated 2021-06-21 - if inc_membership_member_list: - if membership_member_rec_list_result := get_membership_member_rec_list( + if inc_membership_person_list: + if membership_person_rec_list_result := get_membership_person_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: - membership_member_result_list.append( - load_membership_member_obj( - membership_member_id = membership_member_rec.get('membership_member_id', None), + membership_person_result_list = [] + for membership_person_rec in membership_person_rec_list_result: + membership_person_result_list.append( + load_membership_person_obj( + membership_person_id = membership_person_rec.get('membership_person_id', None), limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, inc_membership_group_list = inc_membership_group_list, - inc_membership_member_profile = inc_membership_member_profile, - # inc_membership_member_list = inc_membership_member_list, - # inc_membership_member_list = inc_membership_member_list, + inc_membership_person_profile = inc_membership_person_profile, + # inc_membership_person_list = inc_membership_person_list, + # inc_membership_person_list = inc_membership_person_list, # inc_product_list = inc_product_list, inc_person = inc_person, inc_user = inc_user, ) ) - account_obj.membership_member_list = membership_member_result_list - else: account_obj.membership_member_list = [] + account_obj.membership_person_list = membership_person_result_list + else: account_obj.membership_person_list = [] # Updated 2021-06-18 if inc_membership_type_list: @@ -371,7 +371,7 @@ def load_account_obj( by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, - inc_membership_member_list = inc_membership_member_list, + inc_membership_person_list = inc_membership_person_list, # inc_membership_type_member_list = inc_membership_type_member_list, inc_product_list = inc_product_list, ) @@ -551,7 +551,7 @@ def load_account_obj( inc_contact = inc_contact, inc_event_list = inc_event_list, inc_journal_list = inc_journal_list, - inc_membership_member = inc_membership_member, + inc_membership_person = inc_membership_person, inc_order_list = inc_order_list, inc_order_cart_list = inc_order_cart_list, inc_organization = inc_organization, @@ -586,10 +586,10 @@ def load_account_obj_membership_type( inc_contact: bool = False, inc_membership_cfg: bool = False, inc_membership_group_list: bool = False, # List of groups for the account - inc_membership_group_member_list: bool = False, # List of members of a group - inc_membership_member: bool = False, - inc_membership_member_list: bool = False, # Priority l1 - inc_membership_member_profile: bool = False, + inc_membership_group_person_list: bool = False, # List of members of a group + inc_membership_person: bool = False, + inc_membership_person_list: bool = False, # Priority l1 + inc_membership_person_profile: bool = False, inc_membership_type: bool = False, inc_membership_type_list: bool = False, inc_order: bool = False, @@ -603,7 +603,7 @@ def load_account_obj_membership_type( inc_user: bool = False, inc_user_list: bool = False, # Priority l2 ) -> Account_Base|dict|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # 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 @@ -658,8 +658,8 @@ def load_account_obj_membership_type( inc_address = inc_address, inc_contact = inc_contact, inc_membership_group_list = inc_membership_group_list, # per member - inc_membership_member_list = inc_membership_member_list, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_list = inc_membership_person_list, + inc_membership_person_profile = inc_membership_person_profile, inc_product_list = inc_product_list, inc_person = inc_person, inc_user = inc_user, @@ -690,10 +690,10 @@ def load_account_obj_membership_group( inc_contact: bool = False, inc_membership_cfg: bool = False, # inc_membership_group_list: bool = False, # List of groups for the account - inc_membership_group_member_list: bool = False, # List of members of a group - inc_membership_member: bool = False, - # inc_membership_member_list: bool = False, # Priority l1 - inc_membership_member_profile: bool = False, + inc_membership_group_person_list: bool = False, # List of members of a group + inc_membership_person: bool = False, + # inc_membership_person_list: bool = False, # Priority l1 + inc_membership_person_profile: bool = False, inc_membership_type: bool = False, # inc_membership_type_list: bool = False, # inc_order: bool = False, @@ -760,8 +760,8 @@ def load_account_obj_membership_group( model_as_dict = model_as_dict, inc_address = inc_address, inc_contact = inc_contact, - # inc_membership_member_list = inc_membership_member_list, - inc_membership_group_member_list = inc_membership_group_member_list, + # inc_membership_person_list = inc_membership_person_list, + inc_membership_group_person_list = inc_membership_group_person_list, inc_product_list = inc_product_list, inc_person = inc_person, inc_user = inc_user, @@ -771,18 +771,18 @@ def load_account_obj_membership_group( else: account_obj.membership_group_list = [] # Updated 2021-06-21 - if inc_membership_member_list: - if membership_member_rec_list_result := get_membership_member_rec_list( + if inc_membership_person_list: + if membership_person_rec_list_result := get_membership_person_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: - membership_member_result_list.append( - load_membership_member_obj( - membership_member_id = membership_member_rec.get('membership_member_id', None), + membership_person_result_list = [] + for membership_person_rec in membership_person_rec_list_result: + membership_person_result_list.append( + load_membership_person_obj( + membership_person_id = membership_person_rec.get('membership_person_id', None), limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, @@ -790,14 +790,14 @@ def load_account_obj_membership_group( inc_address = inc_address, inc_contact = inc_contact, inc_membership_group_list = inc_membership_group_list, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_type = inc_membership_type, inc_person = inc_person, inc_user = inc_user, ) ) - account_obj.membership_member_list = membership_member_result_list - else: account_obj.membership_member_list = [] + account_obj.membership_person_list = membership_person_result_list + else: account_obj.membership_person_list = [] # Updated 2021-06-18 if inc_membership_type_list: @@ -819,7 +819,7 @@ def load_account_obj_membership_group( model_as_dict = model_as_dict, inc_address = inc_address, inc_contact = inc_contact, - inc_membership_member_list = inc_membership_member_list, + inc_membership_person_list = inc_membership_person_list, # inc_membership_type_member_list = inc_membership_type_member_list, inc_product_list = inc_product_list, inc_person = inc_person, diff --git a/app/methods/address_methods.py b/app/methods/address_methods.py index 65aca57..9d7f5cf 100644 --- a/app/methods/address_methods.py +++ b/app/methods/address_methods.py @@ -53,7 +53,7 @@ def get_address_rec_list( 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 + 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 diff --git a/app/methods/archive_content_methods.py b/app/methods/archive_content_methods.py index a245b91..05132e2 100644 --- a/app/methods/archive_content_methods.py +++ b/app/methods/archive_content_methods.py @@ -55,7 +55,7 @@ def get_archive_content_rec_list( 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 + 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 diff --git a/app/methods/archive_methods.py b/app/methods/archive_methods.py index 1787af1..016af19 100644 --- a/app/methods/archive_methods.py +++ b/app/methods/archive_methods.py @@ -78,7 +78,7 @@ def get_archive_rec_list( 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 + 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 diff --git a/app/methods/contact_methods.py b/app/methods/contact_methods.py index 48db73e..9e99814 100644 --- a/app/methods/contact_methods.py +++ b/app/methods/contact_methods.py @@ -15,7 +15,7 @@ from app.models.contact_models import Contact_Base # ### BEGIN ### API Contact Methods ### load_contact_obj() ### def load_contact_obj( - contact_id:int|str, + contact_id: int|str, limit: int = 1000, by_alias: bool = True, exclude_unset: bool = True, @@ -23,7 +23,7 @@ def load_contact_obj( enabled: str = 'enabled', # enabled, disabled, all inc_address:bool=False ) -> Contact_Base|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if contact_id := redis_lookup_id_random(record_id_random=contact_id, table_name='contact'): pass @@ -67,10 +67,10 @@ def get_contact_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.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 + 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 @@ -108,7 +108,7 @@ def get_contact_rec_list( contact_rec_li = contact_rec_li_result else: contact_rec_li = [] - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(contact_rec_li_result) return contact_rec_li diff --git a/app/methods/event_methods.py b/app/methods/event_methods.py index 0a2075c..798208d 100644 --- a/app/methods/event_methods.py +++ b/app/methods/event_methods.py @@ -258,7 +258,7 @@ def get_event_rec_list( 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 + 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 diff --git a/app/methods/hosted_file_methods.py b/app/methods/hosted_file_methods.py index 8849e75..dbcb20c 100644 --- a/app/methods/hosted_file_methods.py +++ b/app/methods/hosted_file_methods.py @@ -261,7 +261,7 @@ def get_hosted_file_rec_list( 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 + 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 diff --git a/app/methods/journal_entry_methods.py b/app/methods/journal_entry_methods.py index 29ca7b6..8f0a4ec 100644 --- a/app/methods/journal_entry_methods.py +++ b/app/methods/journal_entry_methods.py @@ -113,7 +113,7 @@ def get_journal_entry_rec_list( 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 + 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 diff --git a/app/methods/journal_methods.py b/app/methods/journal_methods.py index 7a8b104..8e82b2b 100644 --- a/app/methods/journal_methods.py +++ b/app/methods/journal_methods.py @@ -143,7 +143,7 @@ def get_journal_rec_list( 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 + 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 diff --git a/app/methods/membership_cfg_methods.py b/app/methods/membership_cfg_methods.py index 836795c..8f70567 100644 --- a/app/methods/membership_cfg_methods.py +++ b/app/methods/membership_cfg_methods.py @@ -31,9 +31,9 @@ def load_membership_cfg_obj( ): pass else: return False # log.debug(membership_cfg_rec) - log.debug(type(membership_cfg_rec['extended_membership_member_profile'])) - log.debug(membership_cfg_rec['extended_membership_member_profile']) - membership_cfg_rec['extended_membership_member_profile'] = str(membership_cfg_rec['extended_membership_member_profile'], ) + log.debug(type(membership_cfg_rec['extended_membership_person_profile'])) + log.debug(membership_cfg_rec['extended_membership_person_profile']) + membership_cfg_rec['extended_membership_person_profile'] = str(membership_cfg_rec['extended_membership_person_profile'], ) try: membership_cfg_obj = Membership_Cfg_Base(**membership_cfg_rec) diff --git a/app/methods/membership_group_member_methods.py b/app/methods/membership_group_member_methods.py deleted file mode 100644 index 480d804..0000000 --- a/app/methods/membership_group_member_methods.py +++ /dev/null @@ -1,189 +0,0 @@ -from __future__ import annotations -import datetime - -from typing import Dict, List, Optional, Set, Union -from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator - -from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update -from app.lib_general import log, logging -# from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj - -from app.models.membership_group_member_models import Membership_Group_Member_Base - - -# ### BEGIN ### API Membership Group Member Methods ### load_membership_group_member_obj() ### -def load_membership_group_member_obj( - membership_group_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_group: bool = False, - inc_membership_member: bool = False, - inc_membership_member_profile: bool = False, - inc_membership_type: bool = False, - inc_organization: bool = False, - inc_person: bool = False, - inc_user: bool = False, - ) -> Membership_Group_Member_Base|bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - if membership_group_member_id := redis_lookup_id_random(record_id_random=membership_group_member_id, table_name='membership_group_member'): pass - else: return False - log.debug(membership_group_member_id) - - if membership_group_member_rec := sql_select(table_name='v_membership_group_member', record_id=membership_group_member_id): - log.debug(membership_group_member_rec) - else: return False - log.debug(membership_group_member_rec) - - try: - membership_group_member_obj = Membership_Group_Member_Base(**membership_group_member_rec) - log.debug(membership_group_member_obj) - except ValidationError as e: - log.error(e.json()) - - # Updated 2021-06-21 - if inc_membership_member: - from app.methods.membership_member_methods import load_membership_member_obj - membership_member_id = membership_group_member_rec.get('membership_member_id', None) - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_member_id) - if membership_member_result := load_membership_member_obj( - membership_member_id = membership_member_id, - 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_member_profile = inc_membership_member_profile, - inc_membership_type = inc_membership_type, - inc_organization = inc_organization, - inc_person = inc_person, - inc_user = inc_user, - ): - membership_group_member_obj.membership_member = membership_member_result - else: membership_group_member_obj.membership_member = None - log.debug(membership_member_result) - - if model_as_dict: - return membership_group_member_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member - else: - return membership_group_member_obj -# ### END ### API Membership Group Member Methods ### load_membership_group_member_obj() ### - - -# ### BEGIN ### API Membership Group Member Methods ### get_membership_group_member_rec_list() ### -def get_membership_group_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.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_group_member_id', `tbl`.id_random AS 'membership_group_member_id_random' - FROM `membership_group_member` AS `tbl` - WHERE - {sql_obj_type_id} - {sql_enabled} - ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC - {sql_limit}; - """ - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(sql) - - if membership_group_member_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - membership_group_member_rec_li = membership_group_member_rec_li_result - else: - membership_group_member_rec_li = [] - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_group_member_rec_li_result) - - return membership_group_member_rec_li -# ### END ### API Membership Group Member Methods ### get_membership_group_member_rec_list() ### - - -# ### BEGIN ### API Membership Group Member Methods ### create_membership_group_member_obj() ### -def create_membership_group_member_obj(membership_group_member_obj_new:Membership_Group_Member_Base) -> bool|int: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - membership_group_member_obj_data = membership_group_member_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'}) - - if membership_group_member_obj_in_result := sql_insert( - data=membership_group_member_obj_data, - table_name='membership_group_member', - rm_id_random=True, - id_random_length=8 - ): pass - else: return False - - log.debug(membership_group_member_obj_in_result) - - membership_group_member_id = membership_group_member_obj_in_result - - log.debug(f'New membership_group_member_id: {membership_group_member_id}') - return membership_group_member_id -# ### END ### API Membership Group Member Methods ### create_membership_group_member_obj() ### - - -# ### BEGIN ### API Membership Group Member Methods ### update_membership_group_member_obj() ### -def update_membership_group_member_obj( - membership_group_member_id: int|str, # This allows for updating of the id_random value. - membership_group_member_obj_up: Membership_Group_Member_Base, - create_missing_obj: bool = False, - ) -> bool: - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - if membership_group_member_id := redis_lookup_id_random(record_id_random=membership_group_member_id, table_name='membership_group_member'): pass - else: return False - - membership_group_member_obj_up.id = membership_group_member_id - - log.debug(membership_group_member_obj_up) - log.debug(membership_group_member_obj_up.dict(by_alias=False, exclude_unset=True)) - # log.debug(membership_group_member_obj_up.dict(by_alias=False, exclude_unset=False)) - - membership_group_member_dict_up = membership_group_member_obj_up.dict(by_alias=False, exclude_unset=True) - log.debug(membership_group_member_dict_up) - - if membership_group_member_obj_up_result := sql_update(data=membership_group_member_dict_up, table_name='membership_group_member', rm_id_random=True): - log.debug(membership_group_member_obj_up_result) - return True - else: - log.debug(membership_group_member_obj_up_result) - return False -# ### END ### API Membership Group Member Methods ### update_membership_group_member_obj() ### diff --git a/app/methods/membership_group_methods.py b/app/methods/membership_group_methods.py index 75347c8..e2c94d7 100644 --- a/app/methods/membership_group_methods.py +++ b/app/methods/membership_group_methods.py @@ -8,7 +8,7 @@ from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_updat from app.lib_general import log, logging from app.methods.membership_cfg_methods import load_membership_cfg_obj -from app.methods.membership_group_member_methods import get_membership_group_member_rec_list, load_membership_group_member_obj +from app.methods.membership_group_person_methods import get_membership_group_person_rec_list, load_membership_group_person_obj from app.methods.product_methods import get_product_rec_list, load_product_obj from app.models.membership_group_models import Membership_Group_Base @@ -26,9 +26,9 @@ def load_membership_group_obj( inc_address: bool = False, inc_contact: bool = False, inc_membership_cfg: bool = False, - inc_membership_group_member_list: bool = False, # List of members that are a part of this group - inc_membership_member: bool = False, - inc_membership_member_profile: bool = False, # under membership_member + inc_membership_group_person_list: bool = False, # List of members that are a part of this group + inc_membership_person: bool = False, + inc_membership_person_profile: bool = False, # under membership_person # inc_membership_type_list: bool = False, # ??? inc_organization: bool = False, inc_parent_membership_group: bool = False, @@ -37,7 +37,7 @@ def load_membership_group_obj( inc_product_list: bool = False, # List of products that give access to this group inc_user: bool = False, ) -> Membership_Group_Base|bool: - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if membership_group_id := redis_lookup_id_random(record_id_random=membership_group_id, table_name='membership_group'): pass @@ -67,35 +67,35 @@ def load_membership_group_obj( else: membership_group_obj.cfg = None # Updated 2021-06-23 - if inc_membership_group_member_list: + if inc_membership_group_person_list: # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - if membership_group_member_rec_list_result := get_membership_group_member_rec_list( + if membership_group_person_rec_list_result := get_membership_group_person_rec_list( for_obj_type = 'membership_group', for_obj_id = membership_group_id, limit = limit, enabled = enabled, ): - membership_group_member_result_list = [] - for membership_group_member_rec in membership_group_member_rec_list_result: - if load_membership_group_member_result := load_membership_group_member_obj( - membership_group_member_id = membership_group_member_rec.get('membership_group_member_id', None), + membership_group_person_result_list = [] + for membership_group_person_rec in membership_group_person_rec_list_result: + if load_membership_group_person_result := load_membership_group_person_obj( + membership_group_person_id = membership_group_person_rec.get('membership_group_person_id', None), limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, enabled = enabled, - inc_membership_member = inc_membership_member, + inc_membership_person = inc_membership_person, # inc_membership_group_list = inc_membership_group_list, - # inc_membership_member_profile = inc_membership_member_profile, + # inc_membership_person_profile = inc_membership_person_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) - membership_group_obj.membership_group_member_list = membership_group_member_result_list - else: membership_group_obj.membership_group_member_list = [] + membership_group_person_result_list.append(load_membership_group_person_result) + else: membership_group_person_result_list.append(None) + membership_group_obj.membership_group_person_list = membership_group_person_result_list + else: membership_group_obj.membership_group_person_list = [] # Updated 2021-06-18 # if inc_parent_membership_group: @@ -142,6 +142,7 @@ def load_membership_group_obj( # ### BEGIN ### API Membership Group Methods ### get_membership_group_rec_list() ### def get_membership_group_rec_list( account_id: str = None, + membership_person_id: str = None, # product_id: str = None, # type_level: int = None, limit: int = 1000, @@ -155,47 +156,70 @@ def get_membership_group_rec_list( data = {} data['account_id'] = account_id + data['membership_person_id'] = membership_person_id # data['product_id'] = product_id # data['level'] = type_level if account_id: sql_account_id = f'`membership_group`.account_id = :account_id' - else: sql_account_id = '' - # if product_id: - # sql_product_id = f'`membership_group`.product_id = :product_id' - # else: sql_product_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`.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 limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' - # if type_level: - # sql_type_level = f"""AND membership_group.level = :level""" - # else: sql_type_level = '' + 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}; + """ - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' + elif membership_person_id: + sql_membership_person_id = f'`membership_group_person`.membership_person_id = :membership_person_id' - 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}; - """ + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `membership_group_person`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `membership_group_person`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + else: sql_enabled = '' + + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' + + sql = f""" + SELECT `membership_group_person`.membership_group_id AS 'membership_group_id', `membership_group_person`.membership_group_id_random AS 'membership_group_id_random' + FROM `v_membership_group_person` AS `membership_group_person` + WHERE + {sql_membership_person_id} + {sql_enabled} + ORDER BY `membership_group_person`.sort ASC, `membership_group_person`.created_on DESC, `membership_group_person`.updated_on DESC + {sql_limit}; + """ + else: return False # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql) @@ -204,7 +228,7 @@ def get_membership_group_rec_list( 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 diff --git a/app/methods/membership_group_person_methods.py b/app/methods/membership_group_person_methods.py new file mode 100644 index 0000000..d7235f5 --- /dev/null +++ b/app/methods/membership_group_person_methods.py @@ -0,0 +1,191 @@ +from __future__ import annotations +import datetime + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update +from app.lib_general import log, logging +# from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj + +from app.models.membership_group_person_models import Membership_Group_Person_Base + + +# ### BEGIN ### API Membership Group Person Methods ### load_membership_group_person_obj() ### +def load_membership_group_person_obj( + membership_group_person_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_group: bool = False, + inc_membership_person: bool = False, + inc_membership_person_profile: bool = False, + inc_membership_type: bool = False, + inc_organization: bool = False, + inc_person: bool = False, + inc_product: bool = False, + # inc_product_list: bool = False, + inc_user: bool = False, + ) -> Membership_Group_Person_Base|bool: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if membership_group_person_id := redis_lookup_id_random(record_id_random=membership_group_person_id, table_name='membership_group_person'): pass + else: return False + log.debug(membership_group_person_id) + + if membership_group_person_rec := sql_select(table_name='v_membership_group_person', record_id=membership_group_person_id): + log.debug(membership_group_person_rec) + else: return False + log.debug(membership_group_person_rec) + + try: + membership_group_person_obj = Membership_Group_Person_Base(**membership_group_person_rec) + log.debug(membership_group_person_obj) + except ValidationError as e: + log.error(e.json()) + + # Updated 2021-06-21 + if inc_membership_person: + from app.methods.membership_person_methods import load_membership_person_obj + membership_person_id = membership_group_person_rec.get('membership_person_id', None) + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(membership_person_id) + if membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_id, + 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_person_profile = inc_membership_person_profile, + inc_membership_type = inc_membership_type, + inc_organization = inc_organization, + inc_person = inc_person, + inc_user = inc_user, + ): + membership_group_person_obj.membership_person = membership_person_result + else: membership_group_person_obj.membership_person = None + log.debug(membership_person_result) + + if model_as_dict: + return membership_group_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + else: + return membership_group_person_obj +# ### END ### API Membership Group Person Methods ### load_membership_group_person_obj() ### + + +# ### BEGIN ### API Membership Group Person Methods ### get_membership_group_person_rec_list() ### +def get_membership_group_person_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_group_person_id', `tbl`.id_random AS 'membership_group_person_id_random' + FROM `membership_group_person` AS `tbl` + WHERE + {sql_obj_type_id} + {sql_enabled} + ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC + {sql_limit}; + """ + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(sql) + + if membership_group_person_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + membership_group_person_rec_li = membership_group_person_rec_li_result + else: + membership_group_person_rec_li = [] + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(membership_group_person_rec_li_result) + + return membership_group_person_rec_li +# ### END ### API Membership Group Person Methods ### get_membership_group_person_rec_list() ### + + +# ### BEGIN ### API Membership Group Person Methods ### create_membership_group_person_obj() ### +def create_membership_group_person_obj(membership_group_person_obj_new:Membership_Group_Person_Base) -> bool|int: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + membership_group_person_obj_data = membership_group_person_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'}) + + if membership_group_person_obj_in_result := sql_insert( + data=membership_group_person_obj_data, + table_name='membership_group_person', + rm_id_random=True, + id_random_length=8 + ): pass + else: return False + + log.debug(membership_group_person_obj_in_result) + + membership_group_person_id = membership_group_person_obj_in_result + + log.debug(f'New membership_group_person_id: {membership_group_person_id}') + return membership_group_person_id +# ### END ### API Membership Group Person Methods ### create_membership_group_person_obj() ### + + +# ### BEGIN ### API Membership Group Person Methods ### update_membership_group_person_obj() ### +def update_membership_group_person_obj( + membership_group_person_id: int|str, # This allows for updating of the id_random value. + membership_group_person_obj_up: Membership_Group_Person_Base, + create_missing_obj: bool = False, + ) -> bool: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if membership_group_person_id := redis_lookup_id_random(record_id_random=membership_group_person_id, table_name='membership_group_person'): pass + else: return False + + membership_group_person_obj_up.id = membership_group_person_id + + log.debug(membership_group_person_obj_up) + log.debug(membership_group_person_obj_up.dict(by_alias=False, exclude_unset=True)) + # log.debug(membership_group_person_obj_up.dict(by_alias=False, exclude_unset=False)) + + membership_group_person_dict_up = membership_group_person_obj_up.dict(by_alias=False, exclude_unset=True) + log.debug(membership_group_person_dict_up) + + if membership_group_person_obj_up_result := sql_update(data=membership_group_person_dict_up, table_name='membership_group_person', rm_id_random=True): + log.debug(membership_group_person_obj_up_result) + return True + else: + log.debug(membership_group_person_obj_up_result) + return False +# ### END ### API Membership Group Person Methods ### update_membership_group_person_obj() ### diff --git a/app/methods/membership_member_methods.py b/app/methods/membership_person_methods.py similarity index 66% rename from app/methods/membership_member_methods.py rename to app/methods/membership_person_methods.py index e1cf1e7..f307d2f 100644 --- a/app/methods/membership_member_methods.py +++ b/app/methods/membership_person_methods.py @@ -8,20 +8,19 @@ from app.lib_general import log, logging from app.db_sql import redis_lookup_id_random, sql_insert_or_update, sql_select from app.methods.membership_cfg_methods import load_membership_cfg_obj -from app.methods.membership_group_member_methods import get_membership_group_member_rec_list, load_membership_group_member_obj from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj -from app.methods.membership_member_profile_methods import get_membership_member_profile_rec_list, load_membership_member_profile_obj -# from app.methods.membership_type_methods import load_membership_type_obj +from app.methods.membership_group_person_methods import get_membership_group_person_rec_list, load_membership_group_person_obj +from app.methods.membership_person_profile_methods import get_membership_person_profile_rec_list, load_membership_person_profile_obj from app.methods.person_methods import load_person_obj from app.methods.product_methods import load_product_obj from app.methods.user_methods import load_user_obj -from app.models.membership_member_models import Membership_Member_Base +from app.models.membership_person_models import Membership_Person_Base -# ### BEGIN ### API Membership Member Methods ### load_membership_member_obj() ### -def load_membership_member_obj( - membership_member_id:int|str, +# ### BEGIN ### API Membership Person Methods ### load_membership_person_obj() ### +def load_membership_person_obj( + membership_person_id:int|str, limit: int = 1000, by_alias: bool = True, exclude_unset: bool = True, @@ -30,52 +29,61 @@ def load_membership_member_obj( inc_address: bool = False, inc_contact: bool = False, inc_membership_cfg: bool = False, - inc_membership_group_list: bool = False, # The list of groups the member is a part of - inc_membership_member_profile: bool = False, - inc_membership_member_profile_cust: bool = False, # Extended profile? - inc_membership_type: bool = False, # The member_type the member is + inc_membership_group: bool = False, # Their primary membership group + inc_membership_group_list: bool = False, # The list of membership groups the person is a part of + inc_membership_group_person: bool = False, # The person information for their primary membership group + inc_membership_group_person_list: bool = False, # The person information for all of their membership groups + inc_membership_person_profile: bool = False, + inc_membership_person_profile_cust: bool = False, # Extended profile? + inc_membership_type: bool = False, # Their primary membership type + inc_membership_type_list: bool = False, # The list of membership types the person is a part of + inc_membership_type_person: bool = False, # The person information for their primary membership type + inc_membership_type_person_list: bool = False, # The person information for all of their membership types # inc_order: bool = False, inc_organization: bool = False, inc_person: bool = False, inc_product: bool = False, # The product the person actually purchased for a member_type or member_group inc_product_list: bool = False, # The list of products that give access to a member_type or member_group inc_user: bool = False, - ) -> Membership_Member_Base: + ) -> Membership_Person_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 + if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass else: return False - if membership_member_rec := sql_select(table_name='v_membership_member', record_id=membership_member_id): pass + if membership_person_rec := sql_select(table_name='v_membership_person', record_id=membership_person_id): pass else: return False # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_member_rec) + log.debug(membership_person_rec) try: - membership_member_obj = Membership_Member_Base(**membership_member_rec) - log.debug(membership_member_obj) + membership_person_obj = Membership_Person_Base(**membership_person_rec) + log.debug(membership_person_obj) except ValidationError as e: log.error(e.json()) # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_member_obj) + log.debug(membership_person_obj) # Updated 2021-06-24 if inc_membership_cfg: if membership_cfg_obj_result := load_membership_cfg_obj( - account_id = membership_member_rec.get('account_id', None), + account_id = membership_person_rec.get('account_id', None), by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, ): - membership_member_obj.membership_cfg = membership_cfg_obj_result - else: membership_member_obj.membership_cfg = None + membership_person_obj.membership_cfg = membership_cfg_obj_result + else: membership_person_obj.membership_cfg = None - # Updated 2021-06-18 + if inc_membership_group: pass # The primary membership group the person is a part of. Not used at this time. + + # Updated 2021-07-09 if inc_membership_group_list: # The list of groups the member is a part of if membership_group_rec_list_result := get_membership_group_rec_list( - for_obj_type = 'membership_member', - for_obj_id = membership_member_id, + # for_obj_type = 'membership_person', + # for_obj_id = membership_person_id, + membership_person_id = membership_person_id, limit = limit, enabled = enabled, ): @@ -89,24 +97,55 @@ def load_membership_member_obj( 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_membership_person_profile = inc_membership_person_profile, # inc_organization = inc_organization, # inc_person = inc_person, # inc_product = inc_product, - inc_product_list = inc_product_list, + # 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) - membership_member_obj.membership_group_list = membership_group_result_list - else: membership_member_obj.membership_group_list = [] + membership_person_obj.membership_group_list = membership_group_result_list + else: membership_person_obj.membership_group_list = [] + + # Updated 2021-07-09 + if inc_membership_group_person_list: # The person information for the list of groups the member is a part of + if membership_group_person_rec_list_result := get_membership_group_person_rec_list( + for_obj_type = 'membership_person', + for_obj_id = membership_person_id, + # membership_person_id = membership_person_id, + limit = limit, + enabled = enabled, + ): + membership_group_person_result_list = [] + for membership_group_person_rec in membership_group_person_rec_list_result: + if load_membership_group_person_result := load_membership_group_person_obj( + membership_group_person_id = membership_group_person_rec.get('membership_group_person_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + # inc_membership_group_person_list = inc_membership_group_person_list, + # inc_membership_person_profile = inc_membership_person_profile, + # inc_organization = inc_organization, + # inc_person = inc_person, + inc_product = inc_product, + # inc_product_list = inc_product_list, + # inc_user = inc_user, + ): + membership_group_person_result_list.append(load_membership_group_person_result) + else: membership_group_person_result_list.append(None) + membership_person_obj.membership_group_person_list = membership_group_person_result_list + else: membership_person_obj.membership_group_person_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, + if inc_membership_person_profile: + membership_person_profile_id = membership_person_rec.get('membership_person_profile_id', None) + log.debug(membership_person_profile_id) + if membership_person_profile_result := load_membership_person_profile_obj( + membership_person_profile_id = membership_person_profile_id, by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, @@ -116,14 +155,14 @@ def load_membership_member_obj( # inc_membership_cfg = inc_membership_cfg, 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) + membership_person_obj.membership_person_profile = membership_person_profile_result + else: membership_person_obj.membership_person_profile = None + log.debug(membership_person_profile_result) - # Updated 2021-06-18 - if inc_membership_type: + # Updated 2021-07-09 + if inc_membership_type: # The primary membership type for the person from app.methods.membership_type_methods import load_membership_type_obj - membership_type_id = membership_member_rec.get('membership_type_id', None) + membership_type_id = membership_person_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, @@ -139,13 +178,37 @@ def load_membership_member_obj( # inc_organization = inc_organization, inc_product_list = inc_product_list, ): - membership_member_obj.membership_type = membership_type_result - else: membership_member_obj.membership_type = None + membership_person_obj.membership_type = membership_type_result + else: membership_person_obj.membership_type = None log.debug(membership_type_result) + if inc_membership_type_list: pass # All of the membership types the person is a part of + + # Updated 2021-07-09 + if inc_membership_type_person: # The primary membership type person information for the person + from app.methods.membership_type_person_methods import load_membership_type_person_obj + membership_type_person_id = membership_person_rec.get('membership_type_person_id', None) + log.debug(membership_type_person_id) + if membership_type_person_result := load_membership_type_person_obj( + membership_type_person_id = membership_type_person_id, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + inc_membership_cfg = inc_membership_cfg, + inc_membership_type = inc_membership_type, + inc_product = inc_product, + ): + membership_person_obj.membership_type_person = membership_type_person_result + else: membership_person_obj.membership_type_person = None + log.debug(membership_type_person_result) + + if inc_membership_type_person_list: pass # All of the membership type person records for a person + # Updated 2021-06-18 if inc_person: - person_id = membership_member_rec.get('person_id', None) + person_id = membership_person_rec.get('person_id', None) log.debug(person_id) if person_result := load_person_obj( person_id = person_id, @@ -157,13 +220,13 @@ def load_membership_member_obj( # inc_organization = inc_organization, # inc_user = inc_user, ): - membership_member_obj.person = person_result - else: membership_member_obj.person = None + membership_person_obj.person = person_result + else: membership_person_obj.person = None log.debug(person_result) # Updated 2021-06-24 if inc_product: - product_id = membership_member_rec.get('product_id', None) + product_id = membership_person_rec.get('product_id', None) log.debug(product_id) if product_result := load_product_obj( product_id = product_id, @@ -171,13 +234,13 @@ def load_membership_member_obj( exclude_unset = exclude_unset, model_as_dict = model_as_dict, ): - membership_member_obj.product = product_result - else: membership_member_obj.product = None + membership_person_obj.product = product_result + else: membership_person_obj.product = None log.debug(product_result) # Updated 2021-06-18 if inc_user: - user_id = membership_member_rec.get('user_id', None) + user_id = membership_person_rec.get('user_id', None) if user_result := load_user_obj( user_id = user_id, by_alias = by_alias, @@ -188,28 +251,28 @@ def load_membership_member_obj( # inc_organization = inc_organization, # inc_person = inc_person, ): - membership_member_obj.user = user_result - else: membership_member_obj.user = None + membership_person_obj.user = user_result + else: membership_person_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 + return membership_person_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() ### + return membership_person_obj +# ### END ### API Membership Person Methods ### load_membership_person_obj() ### -# ### BEGIN ### API Membership Member Methods ### get_membership_member_rec_list() ### -def get_membership_member_rec_list( +# ### BEGIN ### API Membership Person Methods ### get_membership_person_rec_list() ### +def get_membership_person_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.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 + 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 @@ -236,8 +299,8 @@ def get_membership_member_rec_list( sql_limit = '' sql = f""" - SELECT `tbl`.id AS 'membership_member_id', `tbl`.id_random AS 'membership_member_id_random' - FROM `membership_member` AS `tbl` + SELECT `tbl`.id AS 'membership_person_id', `tbl`.id_random AS 'membership_person_id_random' + FROM `membership_person` AS `tbl` WHERE {sql_obj_type_id} {sql_enabled} @@ -246,15 +309,15 @@ def get_membership_member_rec_list( """ elif for_obj_type == 'unknown': 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' + # sql_obj_type_id = f'`membership_person`.{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' + # sql_enabled = f'AND `membership_person`.enable = :enable' # elif enabled == 'disabled': # data['enable'] = False - # sql_enabled = f'AND `membership_member`.enable = :enable' + # sql_enabled = f'AND `membership_person`.enable = :enable' # elif enabled == 'all': # sql_enabled = '' @@ -265,17 +328,17 @@ def get_membership_member_rec_list( # 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 + # SELECT `membership_person`.id AS 'membership_type_id', `membership_person`.id_random AS 'membership_type_id_random' + # FROM `membership_person` + # INNER JOIN membership_type ON membership_person.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 + # ORDER BY `membership_person`.created_on DESC, `membership_person`.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) # sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id' @@ -297,8 +360,8 @@ def get_membership_member_rec_list( # sql_limit = '' # sql = f""" - # SELECT `tbl`.id AS 'membership_member_id', `tbl`.id_random AS 'membership_member_id_random' - # FROM `membership_member` AS `tbl` + # SELECT `tbl`.id AS 'membership_person_id', `tbl`.id_random AS 'membership_person_id_random' + # FROM `membership_person` AS `tbl` # WHERE # {sql_obj_type_id} # {sql_enabled} @@ -306,19 +369,19 @@ def get_membership_member_rec_list( # {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 + if membership_person_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + membership_person_rec_li = membership_person_rec_li_result else: - membership_member_rec_li = [] + membership_person_rec_li = [] log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_member_rec_li_result) + log.debug(membership_person_rec_li_result) - return membership_member_rec_li -# ### END ### API Membership Member Methods ### get_membership_member_rec_list() ### + return membership_person_rec_li +# ### END ### API Membership Person Methods ### get_membership_person_rec_list() ### -# ### BEGIN ### API Membership Member Methods ### save_membership_member_obj() ### -def save_membership_member_obj(order_obj_new:Membership_Member_Base=None): +# ### BEGIN ### API Membership Person Methods ### save_membership_person_obj() ### +def save_membership_person_obj(order_obj_new:Membership_Person_Base=None): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -461,4 +524,4 @@ def save_membership_member_obj(order_obj_new:Membership_Member_Base=None): else: return False log.debug(order_line_obj_resp) return order_id -# ### END ### API Membership Member Methods ### save_membership_member_obj() ### +# ### END ### API Membership Person Methods ### save_membership_person_obj() ### diff --git a/app/methods/membership_member_profile_methods.py b/app/methods/membership_person_profile_methods.py similarity index 55% rename from app/methods/membership_member_profile_methods.py rename to app/methods/membership_person_profile_methods.py index 126dbe6..b2d865f 100644 --- a/app/methods/membership_member_profile_methods.py +++ b/app/methods/membership_person_profile_methods.py @@ -7,46 +7,46 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v from app.db_sql import redis_lookup_id_random, sql_select from app.lib_general import log, logging -from app.models.membership_member_profile_models import Membership_Member_Profile_Base +from app.models.membership_person_profile_models import Membership_Person_Profile_Base -# ### BEGIN ### API Membership Member Profile Methods ### load_membership_member_profile_obj() ### -def load_membership_member_profile_obj( - membership_member_profile_id: int|str, +# ### BEGIN ### API Membership Person Profile Methods ### load_membership_person_profile_obj() ### +def load_membership_person_profile_obj( + membership_person_profile_id: int|str, by_alias: bool = True, exclude_unset: bool = True, model_as_dict: bool = False, inc_address: bool = False, inc_contact: bool = False, inc_organization: bool = False, - ) -> Membership_Member_Profile_Base|dict|bool: + ) -> Membership_Person_Profile_Base|dict|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - if membership_member_profile_id := redis_lookup_id_random(record_id_random=membership_member_profile_id, table_name='membership_member_profile'): pass + if membership_person_profile_id := redis_lookup_id_random(record_id_random=membership_person_profile_id, table_name='membership_person_profile'): pass else: return False - if membership_member_profile_rec := sql_select( - table_name='v_membership_member_profile', - record_id=membership_member_profile_id, + if membership_person_profile_rec := sql_select( + table_name='v_membership_person_profile', + record_id=membership_person_profile_id, ): pass else: return False - log.debug(membership_member_profile_rec) + log.debug(membership_person_profile_rec) try: - membership_member_profile_obj = Membership_Member_Profile_Base(**membership_member_profile_rec) - log.debug(membership_member_profile_obj) + membership_person_profile_obj = Membership_Person_Profile_Base(**membership_person_profile_rec) + log.debug(membership_person_profile_obj) except ValidationError as e: log.error(e.json()) if model_as_dict: - return membership_member_profile_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + return membership_person_profile_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member else: - return membership_member_profile_obj -# ### END ### API Membership Member Profile Methods ### load_membership_member_profile_obj() ### + return membership_person_profile_obj +# ### END ### API Membership Person Profile Methods ### load_membership_person_profile_obj() ### -# ### BEGIN ### API Membership Member Profile Methods ### get_membership_member_profile_rec_list() ### -def get_membership_member_profile_rec_list( +# ### BEGIN ### API Membership Person Profile Methods ### get_membership_person_profile_rec_list() ### +def get_membership_person_profile_rec_list( for_obj_type: str, for_obj_id: str, limit: int = 1000, @@ -55,7 +55,7 @@ def get_membership_member_profile_rec_list( 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 + 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 @@ -79,8 +79,8 @@ def get_membership_member_profile_rec_list( sql_limit = '' sql = f""" - SELECT `tbl`.id AS 'membership_member_profile_id', `tbl`.id_random AS 'membership_member_profile_id_random' - FROM `membership_member_profile` AS `tbl` + SELECT `tbl`.id AS 'membership_person_profile_id', `tbl`.id_random AS 'membership_person_profile_id_random' + FROM `membership_person_profile` AS `tbl` WHERE {sql_obj_type_id} {sql_enabled} @@ -88,12 +88,12 @@ def get_membership_member_profile_rec_list( {sql_limit}; """ - if membership_member_profile_rec_li_result := sql_select(data=data, sql=sql, as_list=True): - membership_member_profile_rec_li = membership_member_profile_rec_li_result + if membership_person_profile_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + membership_person_profile_rec_li = membership_person_profile_rec_li_result else: - membership_member_profile_rec_li = [] + membership_person_profile_rec_li = [] log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(membership_member_profile_rec_li_result) + log.debug(membership_person_profile_rec_li_result) - return membership_member_profile_rec_li -# ### END ### API Membership Member Profile Methods ### get_membership_member_profile_rec_list() ### + return membership_person_profile_rec_li +# ### END ### API Membership Person Profile Methods ### get_membership_person_profile_rec_list() ### diff --git a/app/methods/membership_type_methods.py b/app/methods/membership_type_methods.py index bf85503..507cfd5 100644 --- a/app/methods/membership_type_methods.py +++ b/app/methods/membership_type_methods.py @@ -8,7 +8,7 @@ from app.lib_general import log, logging from app.db_sql import redis_lookup_id_random, sql_select from app.methods.membership_cfg_methods import load_membership_cfg_obj -from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj +from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj from app.methods.product_methods import get_product_rec_list, load_product_obj from app.models.membership_type_models import Membership_Type_Base @@ -25,17 +25,17 @@ def load_membership_type_obj( inc_address: bool = False, 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_membership_group_list: bool = False, # under membership_person + inc_membership_group_person_list: bool = False, + inc_membership_person_list: bool = False, + inc_membership_person_profile: bool = False, # under membership_person inc_organization: bool = False, inc_person: 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 + # 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 @@ -65,33 +65,33 @@ def load_membership_type_obj( else: membership_type_obj.cfg = None # Updated 2021-06-23 - if inc_membership_member_list: - if membership_member_rec_list_result := get_membership_member_rec_list( + if inc_membership_person_list: + if membership_person_rec_list_result := get_membership_person_rec_list( for_obj_type = 'membership_type', for_obj_id = membership_type_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), + membership_person_result_list = [] + for membership_person_rec in membership_person_rec_list_result: + if load_membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_rec.get('membership_person_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_membership_person_profile = inc_membership_person_profile, # 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 = [] + membership_person_result_list.append(load_membership_person_result) + else: membership_person_result_list.append(None) + membership_type_obj.membership_person_list = membership_person_result_list + else: membership_type_obj.membership_person_list = [] # Updated 2021-06-23 if inc_product_list: @@ -188,7 +188,7 @@ def get_membership_type_rec_list( 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.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(membership_type_rec_li_result) return membership_type_rec_li @@ -214,7 +214,7 @@ 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()) -# if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass +# 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 diff --git a/app/methods/membership_type_person_methods.py b/app/methods/membership_type_person_methods.py new file mode 100644 index 0000000..56a4071 --- /dev/null +++ b/app/methods/membership_type_person_methods.py @@ -0,0 +1,238 @@ +from __future__ import annotations +import datetime + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update +from app.lib_general import log, logging +# from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj +from app.methods.membership_cfg_methods import load_membership_cfg_obj +from app.methods.product_methods import get_product_rec_list, load_product_obj + +from app.models.membership_type_person_models import Membership_Type_Person_Base + + +# ### BEGIN ### API Membership Type Person Methods ### load_membership_type_person_obj() ### +# Updated 2021-07-09 +def load_membership_type_person_obj( + membership_type_person_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_person: bool = False, + inc_membership_person_profile: bool = False, + inc_membership_type: bool = False, + inc_organization: bool = False, + inc_product: bool = False, + inc_product_list: bool = False, + inc_person: bool = False, + inc_user: bool = False, + ) -> Membership_Type_Person_Base|bool: + # log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if membership_type_person_id := redis_lookup_id_random(record_id_random=membership_type_person_id, table_name='membership_type_person'): pass + else: return False + log.debug(membership_type_person_id) + + if membership_type_person_rec := sql_select(table_name='v_membership_type_person', record_id=membership_type_person_id): + log.debug(membership_type_person_rec) + else: return False + log.debug(membership_type_person_rec) + + try: + membership_type_person_obj = Membership_Type_Person_Base(**membership_type_person_rec) + log.debug(membership_type_person_obj) + except ValidationError as e: + log.error(e.json()) + + # Updated 2021-06-24 + if inc_membership_cfg: + if membership_cfg_obj_result := load_membership_cfg_obj( + account_id = membership_type_person_rec.get('account_id', None), + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + ): + membership_type_person_obj.membership_cfg = membership_cfg_obj_result + else: membership_type_person_obj.membership_cfg = None + + # Updated 2021-06-21 + if inc_membership_person: + from app.methods.membership_person_methods import load_membership_person_obj + membership_person_id = membership_type_person_rec.get('membership_person_id', None) + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(membership_person_id) + if membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_id, + 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_person_profile = inc_membership_person_profile, + inc_membership_type = inc_membership_type, + inc_organization = inc_organization, + inc_person = inc_person, + inc_user = inc_user, + ): + membership_type_person_obj.membership_person = membership_person_result + else: membership_type_person_obj.membership_person = None + log.debug(membership_person_result) + + # Updated 2021-07-09 + if inc_membership_type: # The primary membership type for the person + from app.methods.membership_type_methods import load_membership_type_obj + membership_type_id = membership_type_person_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, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + # inc_membership_cfg = inc_membership_cfg, + inc_product_list = inc_product_list, + ): + membership_type_person_obj.membership_type = membership_type_result + else: membership_type_person_obj.membership_type = None + log.debug(membership_type_result) + + # Updated 2021-07-09 + if inc_product: + product_id = membership_type_person_rec.get('product_id', None) + log.debug(product_id) + if product_result := load_product_obj( + product_id = product_id, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + ): + membership_type_person_obj.product = product_result + else: membership_type_person_obj.product = None + log.debug(product_result) + + if model_as_dict: + return membership_type_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + else: + return membership_type_person_obj +# ### END ### API Membership Type Person Methods ### load_membership_type_person_obj() ### + + +# ### BEGIN ### API Membership Type Person Methods ### get_membership_type_person_rec_list() ### +def get_membership_type_person_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_person_id', `tbl`.id_random AS 'membership_type_person_id_random' + FROM `membership_type_person` AS `tbl` + WHERE + {sql_obj_type_id} + {sql_enabled} + ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC + {sql_limit}; + """ + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(sql) + + if membership_type_person_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + membership_type_person_rec_li = membership_type_person_rec_li_result + else: + membership_type_person_rec_li = [] + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(membership_type_person_rec_li_result) + + return membership_type_person_rec_li +# ### END ### API Membership Type Person Methods ### get_membership_type_person_rec_list() ### + + +# ### BEGIN ### API Membership Type Person Methods ### create_membership_type_person_obj() ### +def create_membership_type_person_obj(membership_type_person_obj_new:Membership_Type_Person_Base) -> bool|int: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + membership_type_person_obj_data = membership_type_person_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'}) + + if membership_type_person_obj_in_result := sql_insert( + data=membership_type_person_obj_data, + table_name='membership_type_person', + rm_id_random=True, + id_random_length=8 + ): pass + else: return False + + log.debug(membership_type_person_obj_in_result) + + membership_type_person_id = membership_type_person_obj_in_result + + log.debug(f'New membership_type_person_id: {membership_type_person_id}') + return membership_type_person_id +# ### END ### API Membership Type Person Methods ### create_membership_type_person_obj() ### + + +# ### BEGIN ### API Membership Type Person Methods ### update_membership_type_person_obj() ### +def update_membership_type_person_obj( + membership_type_person_id: int|str, # This allows for updating of the id_random value. + membership_type_person_obj_up: Membership_Type_Person_Base, + create_missing_obj: bool = False, + ) -> bool: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if membership_type_person_id := redis_lookup_id_random(record_id_random=membership_type_person_id, table_name='membership_type_person'): pass + else: return False + + membership_type_person_obj_up.id = membership_type_person_id + + log.debug(membership_type_person_obj_up) + log.debug(membership_type_person_obj_up.dict(by_alias=False, exclude_unset=True)) + # log.debug(membership_type_person_obj_up.dict(by_alias=False, exclude_unset=False)) + + membership_type_person_dict_up = membership_type_person_obj_up.dict(by_alias=False, exclude_unset=True) + log.debug(membership_type_person_dict_up) + + if membership_type_person_obj_up_result := sql_update(data=membership_type_person_dict_up, table_name='membership_type_person', rm_id_random=True): + log.debug(membership_type_person_obj_up_result) + return True + else: + log.debug(membership_type_person_obj_up_result) + return False +# ### END ### API Membership Type Person Methods ### update_membership_type_person_obj() ### diff --git a/app/methods/order_line_methods.py b/app/methods/order_line_methods.py index bdbd6f8..80cf080 100644 --- a/app/methods/order_line_methods.py +++ b/app/methods/order_line_methods.py @@ -140,7 +140,7 @@ def get_order_line_rec_list( 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 + 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 diff --git a/app/methods/order_methods.py b/app/methods/order_methods.py index 905563c..a86f5eb 100644 --- a/app/methods/order_methods.py +++ b/app/methods/order_methods.py @@ -284,7 +284,7 @@ def get_order_rec_list( 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 + 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 diff --git a/app/methods/organization_methods.py b/app/methods/organization_methods.py index 57d3136..c8faa65 100644 --- a/app/methods/organization_methods.py +++ b/app/methods/organization_methods.py @@ -76,7 +76,7 @@ def get_organization_rec_list( 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 + 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 diff --git a/app/methods/person_methods.py b/app/methods/person_methods.py index 0a9974e..3de53af 100644 --- a/app/methods/person_methods.py +++ b/app/methods/person_methods.py @@ -30,7 +30,19 @@ def load_person_obj( inc_event_list: bool = False, inc_journal_list: bool = False, inc_journal_entry_list: bool = False, - inc_membership_member: bool = False, + inc_membership_cfg: bool = False, + inc_membership_group: bool = False, + inc_membership_person_group: bool = False, + inc_membership_group_list: bool = False, + inc_membership_group_person_list: bool = False, + inc_membership_person: bool = False, # NOTE: Same as inc_membership_person_list + inc_membership_person_list: bool = False, # NOTE: Same as inc_membership_person + inc_membership_person_profile: bool = False, + inc_membership_person_profile_cust: bool = False, + inc_membership_type: bool = False, + inc_membership_type_person: bool = False, + inc_membership_type_list: bool = False, + inc_membership_type_person_list: bool = False, inc_order_cfg: bool = False, inc_order_line_list: bool = False, inc_order_list: bool = False, @@ -38,9 +50,10 @@ def load_person_obj( inc_organization: bool = False, inc_post_list: bool = False, inc_post_comment_list: bool = False, + inc_product: bool = False, inc_user: bool = False, ) -> Person_Base|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 person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass @@ -55,7 +68,7 @@ def load_person_obj( except ValidationError as e: log.error(e.json()) - # Updated 2021-06-18 + # Updated 2021-07-09 if inc_contact: contact_id = person_rec.get('contact_id', None) log.debug(contact_id) @@ -71,6 +84,93 @@ def load_person_obj( person_obj.contact = contact_result else: person_obj.contact = None + # Updated 2021-07-09 + # if inc_membership_group_list: + # from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj + # if membership_group_rec_list_result := get_membership_group_rec_list( + # for_obj_type = 'person', + # for_obj_id = person_id, + # limit = limit, + # enabled = enabled, + # ): + # membership_group_result_list = [] + # for membership_group_rec in membership_group_rec_list_result: + # if 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_profile = inc_membership_group_profile, + # inc_membership_group_profile_cust = inc_membership_group_profile_cust, + # inc_membership_type = inc_membership_type, + # inc_product = inc_product, + # ): + # membership_group_result_list.append(membership_group_result) + # else: + # membership_group_result_list.append(None) + # person_obj.membership_group_list = membership_group_result_list + # else: person_obj.membership_group_list = [] + + # Updated 2021-07-09 + if inc_membership_person: + from app.methods.membership_person_methods import load_membership_person_obj + membership_person_id = person_rec.get('membership_person_id', None) + log.debug(membership_person_id) + if membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_id, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + enabled = enabled, + inc_address = inc_address, + inc_contact = inc_contact, + inc_membership_cfg = inc_membership_cfg, + inc_membership_group = inc_membership_group, # The primary membership group, if there is one. + inc_membership_group_list = inc_membership_group_list, # All membership groups they are a part of. + inc_membership_person_profile = inc_membership_person_profile, + inc_membership_person_profile_cust = inc_membership_person_profile_cust, + inc_membership_type = inc_membership_type, # The primary membership type, if there is one. + inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of. + # inc_person = inc_person, + inc_product = inc_product, + # inc_product_list = inc_product_list, + # inc_user = inc_user, + ): + person_obj.membership_person = membership_person_result + else: person_obj.membership_person = None + + # Updated 2021-07-09 + # if inc_membership_type or inc_membership_type_list: # Technically should this be inc_membership_type_list??? + # from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj + # if membership_type_rec_list_result := get_membership_type_rec_list( + # for_obj_type = 'person', + # for_obj_id = person_id, + # limit = limit, + # enabled = enabled, + # ): + # membership_type_result_list = [] + # for membership_type_rec in membership_type_rec_list_result: + # if membership_type_result := load_membership_type_obj( + # membership_type_id = membership_type_rec.get('membership_type_id', None), + # limit = limit, + # by_alias = by_alias, + # exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + # enabled = enabled, + # inc_membership_type_profile = inc_membership_type_profile, + # inc_membership_type_profile_cust = inc_membership_type_profile_cust, + # inc_membership_type = inc_membership_type, + # inc_product = inc_product, + # ): + # membership_type_result_list.append(membership_type_result) + # else: + # membership_type_result_list.append(None) + # type_obj.membership_type_list = membership_type_result_list + # else: type_obj.membership_type_list = [] + # Updated 2021-06-18 if inc_order_list: if order_rec_list_result := get_order_rec_list( @@ -147,7 +247,7 @@ def get_person_rec_list( 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 + 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 diff --git a/app/methods/post_comment_methods.py b/app/methods/post_comment_methods.py index 3e7cfdb..302de13 100644 --- a/app/methods/post_comment_methods.py +++ b/app/methods/post_comment_methods.py @@ -176,7 +176,7 @@ def get_post_comment_rec_list( 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 + 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 diff --git a/app/methods/post_methods.py b/app/methods/post_methods.py index 9b7ae77..6ab7fc9 100644 --- a/app/methods/post_methods.py +++ b/app/methods/post_methods.py @@ -204,7 +204,7 @@ def get_post_rec_list( 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 + 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 diff --git a/app/methods/site_domain_methods.py b/app/methods/site_domain_methods.py index 42d3696..7575137 100644 --- a/app/methods/site_domain_methods.py +++ b/app/methods/site_domain_methods.py @@ -112,7 +112,7 @@ def get_site_domain_rec_list( 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 + 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 diff --git a/app/methods/site_methods.py b/app/methods/site_methods.py index 01dbc05..f155f0d 100644 --- a/app/methods/site_methods.py +++ b/app/methods/site_methods.py @@ -134,7 +134,7 @@ def get_site_rec_list( 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 + 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 diff --git a/app/methods/user_methods.py b/app/methods/user_methods.py index 767c84b..f6ad3a9 100644 --- a/app/methods/user_methods.py +++ b/app/methods/user_methods.py @@ -87,7 +87,7 @@ def load_user_obj( # inc_hosted_file_list: bool = False, inc_journal_list: bool = False, inc_journal_entry_list: bool = False, - inc_membership_member: bool = False, + inc_membership_person: bool = False, inc_order_cfg: bool = False, inc_order_line_list: bool = False, inc_order_list: bool = False, @@ -377,7 +377,7 @@ def get_user_rec_list( 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 + 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 diff --git a/app/methods/user_role_methods.py b/app/methods/user_role_methods.py index 65b21ba..ae93799 100644 --- a/app/methods/user_role_methods.py +++ b/app/methods/user_role_methods.py @@ -55,7 +55,7 @@ def get_user_role_rec_list( 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 + 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 diff --git a/app/models/account_models.py b/app/models/account_models.py index acf7cf7..3304715 100644 --- a/app/models/account_models.py +++ b/app/models/account_models.py @@ -59,7 +59,7 @@ class Account_Base(BaseModel): journal_list: Optional[list] # Journal_Base() # Priority l3 membership_cfg: Optional[Membership_Cfg_Base] # Priority l2 membership_group_list: Optional[list] # Membership_Group_Base() # Priority l2 - membership_member_list: Optional[list] # Membership_Member_Base() # Priority l2 + membership_person_list: Optional[list] # Membership_Person_Base() # Priority l2 membership_type_list: Optional[list] # Membership_Type_Base() # Priority l2 order_list: Optional[list] # Order_Base() # Priority l2 organization_list: Optional[list] # Organization_Base() # Priority l3 diff --git a/app/models/common_field_schema.py b/app/models/common_field_schema.py index 9aa9380..f1da768 100644 --- a/app/models/common_field_schema.py +++ b/app/models/common_field_schema.py @@ -52,10 +52,11 @@ base_fields['log_client_viewing_id_random'] = xxx_id_random_field_schema # base_fields['membership_id_random'] = xxx_id_random_field_schema # renamed to membership_type base_fields['membership_cfg_id_random'] = xxx_id_random_field_schema base_fields['membership_group_id_random'] = xxx_id_random_field_schema -base_fields['membership_group_member_id_random'] = xxx_id_random_field_schema -base_fields['membership_member_id_random'] = xxx_id_random_field_schema -base_fields['membership_member_profile_id_random'] = xxx_id_random_field_schema +base_fields['membership_group_person_id_random'] = xxx_id_random_field_schema +base_fields['membership_person_id_random'] = xxx_id_random_field_schema +base_fields['membership_person_profile_id_random'] = xxx_id_random_field_schema base_fields['membership_type_id_random'] = xxx_id_random_field_schema +base_fields['membership_type_person_id_random'] = xxx_id_random_field_schema base_fields['order_cart_id_random'] = xxx_id_random_field_schema base_fields['order_cart_line_id_random'] = xxx_id_random_field_schema base_fields['order_id_random'] = xxx_id_random_field_schema diff --git a/app/models/contact_models.py b/app/models/contact_models.py index a64e42c..d472a78 100644 --- a/app/models/contact_models.py +++ b/app/models/contact_models.py @@ -41,10 +41,9 @@ class Contact_Base(BaseModel): description: Optional[str] lu_time_zone_id: Optional[str] timezone: Optional[str] + timezone_name: Optional[str] email: Optional[str] - website_url: Optional[str] - website_name: Optional[str] phone_mobile: Optional[str] phone_home: Optional[str] @@ -52,10 +51,13 @@ class Contact_Base(BaseModel): phone_land: Optional[str] phone_fax: Optional[str] + website_url: Optional[str] + website_name: Optional[str] + facebook_url: Optional[str] instagram_url: Optional[str] - twitter_url: Optional[str] linkedin_url: Optional[str] + twitter_url: Optional[str] other_site_url: Optional[str] other_site_name: Optional[str] diff --git a/app/models/membership_cfg_models.py b/app/models/membership_cfg_models.py index a575b81..54465c8 100644 --- a/app/models/membership_cfg_models.py +++ b/app/models/membership_cfg_models.py @@ -39,9 +39,9 @@ class Membership_Cfg_Base(BaseModel): confirm_name: Optional[str] # Including JSON data - # extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client - # extended_membership_member_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client - # extended_membership_member_profile: Optional[Json] # list of dicts outlining extended (custom) membership profile fields for client - extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client + # extended_membership_person_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client + # extended_membership_person_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client + # extended_membership_person_profile: Optional[Json] # list of dicts outlining extended (custom) membership profile fields for client + extended_membership_person_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client Membership_Cfg_Base.update_forward_refs() diff --git a/app/models/membership_group_models.py b/app/models/membership_group_models.py index 9441b6b..b461794 100644 --- a/app/models/membership_group_models.py +++ b/app/models/membership_group_models.py @@ -49,7 +49,7 @@ class Membership_Group_Base(BaseModel): # Including other related objects cfg: Optional[Membership_Cfg_Base] # membership_type: Optional[Membership_Type_Base] # The membership option/type they currently have - membership_group_member_list: Optional[list] # Membership_Group_Member_Base + membership_group_person_list: Optional[list] # Membership_Group_Person_Base # parent_membership_group: Optional[Membership_Group_Base] product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option diff --git a/app/models/membership_group_member_models.py b/app/models/membership_group_person_models.py similarity index 64% rename from app/models/membership_group_member_models.py rename to app/models/membership_group_person_models.py index 3e22c2a..7a0d863 100644 --- a/app/models/membership_group_member_models.py +++ b/app/models/membership_group_person_models.py @@ -8,32 +8,50 @@ from app.db_sql import redis_lookup_id_random from app.lib_general import log, logging from app.models.common_field_schema import base_fields, default_num_bytes +from app.models.membership_cfg_models import Membership_Cfg_Base from app.models.membership_group_models import Membership_Group_Base -from app.models.membership_member_models import Membership_Member_Base from app.models.product_models import Product_Base -class Membership_Group_Member_Base(BaseModel): +class Membership_Group_Person_Base(BaseModel): log.setLevel(logging.WARNING) log.debug(locals()) id_random: Optional[str] = Field( - **base_fields['membership_group_member_id_random'], - alias = 'membership_group_member_id_random', + **base_fields['membership_group_person_id_random'], + alias = 'membership_group_person_id_random', default_factory = lambda:secrets.token_urlsafe(default_num_bytes), ) id: Optional[int] = Field( - alias = 'membership_group_member_id' + alias = 'membership_group_person_id' ) - membership_group_id_random: Optional[str] - membership_group_id: Optional[int] - membership_member_id_random: Optional[str] - membership_member_id: Optional[int] + account_id_random: Optional[str] + account_id: Optional[int] + + membership_group_id_random: Optional[str] = Field( + alias = 'group_id_random', + ) # NOTE: This is not optional + membership_group_id: Optional[int] = Field( + alias = 'group_id', + ) # NOTE: This is not optional + membership_group_name: Optional[str] = Field( + alias = 'group_name', + ) + + membership_person_id_random: Optional[str] + membership_person_id: Optional[int] product_id_random: Optional[str] product_id: Optional[int] # The product they purchased to get this membership + membership_group_status_id: Optional[int] = Field( + alias = 'status_id' + ) + membership_group_status_name: Optional[str] = Field( + alias = 'status_name' + ) + flag: Optional[bool] flag_message: Optional[str] @@ -43,14 +61,16 @@ class Membership_Group_Member_Base(BaseModel): updated_on: Optional[datetime.datetime] = None # Including other related objects + membership_cfg: Optional[Membership_Cfg_Base] = Field( + alias = 'cfg', + ) membership_group: Optional[Membership_Group_Base] - membership_member: Optional[Membership_Member_Base] product: Optional[Product_Base] # The product used to be a part of the group? _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) - #@validator('membership_group_member_id_random', always=True) - def membership_group_member_id_random_copy(cls, v, values, **kwargs): + #@validator('membership_group_person_id_random', always=True) + def membership_group_person_id_random_copy(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) @@ -59,12 +79,12 @@ class Membership_Group_Member_Base(BaseModel): return None @validator('id', always=True) - def membership_group_member_id_lookup(cls, v, values, **kwargs): + def membership_group_person_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) if values['id_random']: - return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group_member') + return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group_person') return None @validator('membership_group_id', always=True) @@ -76,13 +96,13 @@ class Membership_Group_Member_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['membership_group_id_random'], table_name='membership_group') return None - @validator('membership_member_id', always=True) - def membership_member_id_lookup(cls, v, values, **kwargs): + @validator('membership_person_id', always=True) + def membership_person_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) - if values['membership_member_id_random']: - return redis_lookup_id_random(record_id_random=values['membership_member_id_random'], table_name='membership_member') + if values['membership_person_id_random']: + return redis_lookup_id_random(record_id_random=values['membership_person_id_random'], table_name='membership_person') return None @validator('product_id', always=True) diff --git a/app/models/membership_person_models.py b/app/models/membership_person_models.py new file mode 100644 index 0000000..b0b28ca --- /dev/null +++ b/app/models/membership_person_models.py @@ -0,0 +1,204 @@ +from __future__ import annotations +import datetime, hashlib, logging, os, pytz, redis, secrets + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random +from app.lib_general import log, logging + +from app.models.common_field_schema import base_fields, default_num_bytes +from app.models.membership_cfg_models import Membership_Cfg_Base +from app.models.membership_group_models import Membership_Group_Base +from app.models.membership_group_person_models import Membership_Group_Person_Base +from app.models.membership_person_profile_models import Membership_Person_Profile_Base +from app.models.membership_type_models import Membership_Type_Base +from app.models.membership_type_person_models import Membership_Type_Person_Base +# from app.models.person_models import Person_Base +from app.models.product_models import Product_Base +# from app.models.user_models import User_Base + + +class Membership_Person_Base(BaseModel): + log.setLevel(logging.WARNING) + log.debug(locals()) + + id_random: Optional[str] = Field( + **base_fields['membership_person_id_random'], + alias = 'membership_person_id_random', + default_factory = lambda:secrets.token_urlsafe(default_num_bytes), + ) + id: Optional[int] = Field( + alias = 'membership_person_id' + ) + + account_id_random: Optional[str] + account_id: Optional[int] + + membership_person_status_id: Optional[int] = Field( + alias = 'status_id' + ) + membership_person_status_name: Optional[str] = Field( + alias = 'status_name' + ) + + membership_group_id_random: Optional[str] = Field( + alias = 'group_id_random', + ) # NOTE: This is not optional + membership_group_id: Optional[int] = Field( + alias = 'group_id', + ) # NOTE: This is not optional + membership_group_name: Optional[str] = Field( + alias = 'group_name', + ) + + membership_type_id_random: Optional[str] = Field( + alias = 'type_id_random', + ) # NOTE: This is not optional + membership_type_id: Optional[int] = Field( + alias = 'type_id', + ) # NOTE: This is not optional + membership_type_name: Optional[str] = Field( + alias = 'type_name', + ) + + person_id_random: Optional[str] + person_id: Optional[int] + + product_id_random: Optional[str] + product_id: Optional[int] # The product they purchased to get this membership + + user_id_random: Optional[str] + user_id: Optional[int] + + level: Optional[int] = Field(0, ge=0, lt=150) + + application_start_on: Optional[datetime.datetime] = None + approved_on: Optional[datetime.datetime] = None + first_start_on: Optional[datetime.datetime] = None + start_buffer_on: Optional[datetime.datetime] = None + start_on: Optional[datetime.datetime] = None + end_on: Optional[datetime.datetime] = None + end_buffer_on: Optional[datetime.datetime] = None + + flag: Optional[bool] + flag_message: Optional[str] + + notes: Optional[str] + + created_on: Optional[datetime.datetime] = None + updated_on: Optional[datetime.datetime] = None + + # Including other related objects + membership_cfg: Optional[Membership_Cfg_Base] = Field( + alias = 'cfg', + ) + + membership_group: Optional[Membership_Group_Base] # The primary membership group option they currently have + membership_group_list: Optional[list] = Field( + alias = 'group_list', + ) # Membership_Group_Base() The group information for all the membership groups they are a part of + membership_group_person: Optional[Membership_Group_Person_Base] # The group person information for the primary membership group they currently have + membership_group_person_list: Optional[list] = Field( + alias = 'group_person_list', + ) # Membership_Group_Base() The group person information for all the membership groups they are a part of + + membership_person_profile: Optional[Membership_Person_Profile_Base] = Field( + alias = 'profile', + ) + # = Field( + # alias = 'extended_membership_person_profile', + # ) + + membership_type: Optional[Membership_Type_Base] # The primary membership type option they currently have + membership_type_list: Optional[list] = Field( + alias = 'type_list', + ) # Membership_Type_Base() The type information for all the membership types they are a part of + membership_type_person: Optional[Membership_Type_Person_Base] # The type person information for the primary membership type they currently have + membership_type_person_list: Optional[list] = Field( + alias = 'type_person_list', + ) # Membership_Type_Person_Base() The type person information for all the membership types they are a part of + person: Optional[dict] # should be Person_Base() but causes an import loop + product: Optional[Product_Base] # The product used to become a member? + user: Optional[dict] # should be User_Base() but causes an import loop + + extended_member_profile: Optional[dict] = {} + + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) + + #@validator('membership_person_id_random', always=True) + def membership_person_id_random_copy(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['id_random']: + return values['id_random'] + return None + + @validator('id', always=True) + def membership_person_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['id_random']: + return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_person') + return None + + @validator('account_id', always=True) + def account_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['account_id_random']: + return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') + return None + + @validator('membership_group_id', always=True) + def membership_group_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['membership_group_id_random']: + return redis_lookup_id_random(record_id_random=values['membership_group_id_random'], table_name='membership_group') + return None + + @validator('membership_type_id', always=True) + def membership_type_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['membership_type_id_random']: + return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type') + return None + + @validator('person_id', always=True) + def person_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['person_id_random']: + return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person') + return None + + @validator('product_id', always=True) + def product_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['product_id_random']: + return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product') + return None + + @validator('user_id', always=True) + def user_id_lookup(cls, v, values, **kwargs): + log.setLevel(logging.WARNING) + log.debug(locals()) + + if values['user_id_random']: + return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user') + return None + + class Config: + underscore_attrs_are_private = True + allow_population_by_field_name = True + fields = base_fields diff --git a/app/models/membership_member_profile_models.py b/app/models/membership_person_profile_models.py similarity index 81% rename from app/models/membership_member_profile_models.py rename to app/models/membership_person_profile_models.py index 12c23b0..1b50da4 100644 --- a/app/models/membership_member_profile_models.py +++ b/app/models/membership_person_profile_models.py @@ -9,29 +9,25 @@ from app.lib_general import log, logging from app.models.common_field_schema import base_fields, default_num_bytes from app.models.contact_models import Contact_Base -from app.models.membership_type_models import Membership_Type_Base from app.models.organization_models import Organization_Base -class Membership_Member_Profile_Base(BaseModel): +class Membership_Person_Profile_Base(BaseModel): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) id_random: Optional[str] = Field( - **base_fields['membership_member_profile_id_random'], - alias = 'membership_member_profile_id_random', + **base_fields['membership_person_profile_id_random'], + alias = 'membership_person_profile_id_random', default_factory = lambda:secrets.token_urlsafe(default_num_bytes), ) id: Optional[int] = Field( - alias = 'membership_member_profile_id' + alias = 'membership_person_profile_id' ) contact_id_random: Optional[str] contact_id: Optional[int] - # membership_type_id_random: Optional[str] - # membership_type_id: Optional[int] - organization_id_random: Optional[str] organization_id: Optional[int] @@ -56,8 +52,8 @@ class Membership_Member_Profile_Base(BaseModel): _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) - #@validator('membership_member_profile_id_random', always=True) - def membership_member_profile_id_random_copy(cls, v, values, **kwargs): + #@validator('membership_person_profile_id_random', always=True) + def membership_person_profile_id_random_copy(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) @@ -66,13 +62,13 @@ class Membership_Member_Profile_Base(BaseModel): return None @validator('id', always=True) - def membership_member_profile_id_lookup(cls, v, values, **kwargs): + def membership_person_profile_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) if values['id_random']: log.debug(values['id_random']) - return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member_profile') + return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_person_profile') return None @validator('contact_id', always=True) diff --git a/app/models/membership_type_models.py b/app/models/membership_type_models.py index 6827961..79e98ae 100644 --- a/app/models/membership_type_models.py +++ b/app/models/membership_type_models.py @@ -72,7 +72,7 @@ class Membership_Type_Base(BaseModel): # Including other related objects cfg: Optional[Membership_Cfg_Base] - membership_member_list: Optional[list] # Membership_Member_Base() List of membership members + membership_type_person_list: Optional[list] # Membership_Type_Person_Base() List of people for membership type product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) diff --git a/app/models/membership_member_models.py b/app/models/membership_type_person_models.py similarity index 64% rename from app/models/membership_member_models.py rename to app/models/membership_type_person_models.py index 1e3a07f..e3225be 100644 --- a/app/models/membership_member_models.py +++ b/app/models/membership_type_person_models.py @@ -9,36 +9,26 @@ from app.lib_general import log, logging from app.models.common_field_schema import base_fields, default_num_bytes from app.models.membership_cfg_models import Membership_Cfg_Base -from app.models.membership_member_profile_models import Membership_Member_Profile_Base from app.models.membership_type_models import Membership_Type_Base -# from app.models.person_models import Person_Base from app.models.product_models import Product_Base -# from app.models.user_models import User_Base -class Membership_Member_Base(BaseModel): +class Membership_Type_Person_Base(BaseModel): log.setLevel(logging.WARNING) log.debug(locals()) id_random: Optional[str] = Field( - **base_fields['membership_member_id_random'], - alias = 'membership_member_id_random', + **base_fields['membership_type_person_id_random'], + alias = 'membership_type_person_id_random', default_factory = lambda:secrets.token_urlsafe(default_num_bytes), ) id: Optional[int] = Field( - alias = 'membership_member_id' + alias = 'membership_type_person_id' ) account_id_random: Optional[str] account_id: Optional[int] - membership_member_status_id: Optional[int] = Field( - alias = 'status_id' - ) - membership_member_status_name: Optional[str] = Field( - alias = 'status_name' - ) - membership_type_id_random: Optional[str] = Field( alias = 'type_id_random', ) # NOTE: This is not optional @@ -49,14 +39,18 @@ class Membership_Member_Base(BaseModel): alias = 'type_name', ) - person_id_random: Optional[str] - person_id: Optional[int] + membership_person_id_random: Optional[str] + membership_person_id: Optional[int] product_id_random: Optional[str] product_id: Optional[int] # The product they purchased to get this membership - user_id_random: Optional[str] - user_id: Optional[int] + membership_type_status_id: Optional[int] = Field( + alias = 'status_id' + ) + membership_type_status_name: Optional[str] = Field( + alias = 'status_name' + ) level: Optional[int] = Field(0, ge=0, lt=150) @@ -77,32 +71,16 @@ class Membership_Member_Base(BaseModel): updated_on: Optional[datetime.datetime] = None # Including other related objects - membership_type: Optional[Membership_Type_Base] # The membership option they currently have membership_cfg: Optional[Membership_Cfg_Base] = Field( alias = 'cfg', ) - membership_group_list: Optional[list] = Field( - alias = 'group_list', - ) # Membership_Group_Base() The membership groups they are a part of - membership_member_profile: Optional[Membership_Member_Profile_Base] = Field( - alias = 'profile', - ) - # membership_member_profile: Optional[Membership_Member_Profile_Base] = Field( - # alias = 'profile', - # ) - # = Field( - # alias = 'extended_membership_member_profile', - # ) - person: Optional[dict] # should be Person_Base() but causes an import loop + membership_type: Optional[Membership_Type_Base] # The membership option they currently have product: Optional[Product_Base] # The product used to become a member? - user: Optional[dict] # should be User_Base() but causes an import loop - - extended_member_profile: Optional[dict] = {} _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) - #@validator('membership_member_id_random', always=True) - def membership_member_id_random_copy(cls, v, values, **kwargs): + #@validator('membership_type_person_id_random', always=True) + def membership_type_person_id_random_copy(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) @@ -111,12 +89,12 @@ class Membership_Member_Base(BaseModel): return None @validator('id', always=True) - def membership_member_id_lookup(cls, v, values, **kwargs): + def membership_type_person_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) log.debug(locals()) if values['id_random']: - return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member') + return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_type_person') return None @validator('account_id', always=True) @@ -137,15 +115,6 @@ class Membership_Member_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type') return None - @validator('person_id', always=True) - def person_id_lookup(cls, v, values, **kwargs): - log.setLevel(logging.WARNING) - log.debug(locals()) - - if values['person_id_random']: - return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person') - return None - @validator('product_id', always=True) def product_id_lookup(cls, v, values, **kwargs): log.setLevel(logging.WARNING) @@ -155,15 +124,6 @@ class Membership_Member_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product') return None - @validator('user_id', always=True) - def user_id_lookup(cls, v, values, **kwargs): - log.setLevel(logging.WARNING) - log.debug(locals()) - - if values['user_id_random']: - return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user') - return None - class Config: underscore_attrs_are_private = True allow_population_by_field_name = True diff --git a/app/models/person_models.py b/app/models/person_models.py index 6998756..df90cbf 100644 --- a/app/models/person_models.py +++ b/app/models/person_models.py @@ -10,7 +10,7 @@ from app.lib_general import log, logging from app.models.common_field_schema import base_fields, default_num_bytes # from app.models.account_models import Account_Base from app.models.contact_models import Contact_Base -from app.models.membership_member_models import Membership_Member_Base +from app.models.membership_person_models import Membership_Person_Base from app.models.organization_models import Organization_Base # from app.models.user_models import User_Base @@ -39,6 +39,9 @@ class Person_Base(BaseModel): user_id_random: Optional[str] user_id: Optional[int] + membership_person_id_random: Optional[str] # Linked from membership_person using the v_person view + membership_person_id: Optional[int] # Linked from membership_person using the v_person view + given_name: Optional[str] family_name: Optional[str] middle_name: Optional[str] @@ -63,8 +66,11 @@ class Person_Base(BaseModel): hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2 journal_list: Optional[list] # Journal_Base() # Priority l3 contact: Optional[Union[Contact_Base, None]] - membership_member: Optional[Membership_Member_Base] # Priority l2 member type of the person - membership_group_list: Optional[list] # Membership_Group_Base() list of groups the person is a part of + membership_person: Optional[Membership_Person_Base] # Priority l2 member person record of the person + membership_type_list: Optional[list] # Membership_Type_Base() list of member types the person has... for now this should be only one at most. + membership_type_person_list: Optional[list] # Membership_Type_Person_Base() list of member type person records... for now this should be only one at most. + membership_group_list: Optional[list] # Membership_Group_Base() list of member groups the person has + membership_group_person_list: Optional[list] # Membership_Group_Person_Base() list of member group person records order_list: Optional[list] # Order_Base() # Priority l2 order_cart_list: Optional[list] # Order_Base() # Priority l2 organization: Optional[Union[Organization_Base, None]] diff --git a/app/models/user_models.py b/app/models/user_models.py index 13a75ea..8064dcd 100644 --- a/app/models/user_models.py +++ b/app/models/user_models.py @@ -9,7 +9,7 @@ from app.lib_general import log, logging, secure_hash_string from app.models.common_field_schema import base_fields, default_num_bytes # from app.models.contact_models import Contact_Base -# from app.models.membership_member_models import Membership_Member_Base +# from app.models.membership_person_models import Membership_Person_Base from app.models.organization_models import Organization_Base from app.models.person_models import Person_Base # Causes circular import # from app.models.user_role_models import User_Role_Base @@ -194,8 +194,8 @@ class User_Out_Base(BaseModel): event_list: Optional[list] # Event_Base() # Priority complete hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l3 journal_list: Optional[list] # Journal_Base() # Priority l3 - # membership_member: Optional[Membership_Member_Base] # Priority l2 - # membership_member_list: Optional[list] # Membership_Base() ??? + # membership_person: Optional[Membership_Person_Base] # Priority l2 + # membership_person_list: Optional[list] # Membership_Base() ??? order_list: Optional[list] # Order_Base() # Priority l2 order_cart_list: Optional[list] # Order_Base() # Priority l2 organization: Optional[Union[Organization_Base, None]] # Organization_Base() # Priority l3 @@ -278,8 +278,6 @@ class User_Base(BaseModel): event_list: Optional[list] # Event_Base() # Priority l1 hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2 journal_list: Optional[list] # Journal_Base() # Priority l3 - # membership_member: Optional[Membership_Member_Base] # Priority l2 - # membership_member_list: Optional[list] # Membership_Base() ??? order_list: Optional[list] # Order_Base() # Priority l2 order_cart_list: Optional[list] # Order_Base() # Priority l2 organization: Optional[Union[Organization_Base, None]] # Organization_Base() # Priority l3 diff --git a/app/routers/account.py b/app/routers/account.py index f632d01..2798c55 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -13,7 +13,7 @@ from app.methods.account_methods import load_account_obj, load_account_obj_membe 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_person_methods import get_membership_person_rec_list, load_membership_person_obj # from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj # from app.methods.post_methods import get_post_rec_list, load_post_obj @@ -149,9 +149,9 @@ async def get_account_obj_new( 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_person: bool = False, + inc_membership_person_list: bool = False, + inc_membership_person_profile: bool = False, # inc_membership_type: bool = False, inc_membership_type_list: bool = False, # inc_order: bool = False, @@ -223,9 +223,9 @@ async def get_account_obj_new( inc_journal_entry_list = inc_journal_entry_list, 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_person = inc_membership_person, + inc_membership_person_list = inc_membership_person_list, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_type_list = inc_membership_type_list, # inc_order = inc_order, inc_order_list = inc_order_list, diff --git a/app/routers/api_crud.py b/app/routers/api_crud.py index 862a531..41047d4 100644 --- a/app/routers/api_crud.py +++ b/app/routers/api_crud.py @@ -34,9 +34,11 @@ from app.models.journal_entry_models import * from app.models.log_client_viewing_models import Log_Client_Viewing_Base from app.models.membership_cfg_models import * from app.models.membership_group_models import * -from app.models.membership_group_member_models import * -from app.models.membership_member_models import * +from app.models.membership_group_person_models import * +from app.models.membership_person_models import * +from app.models.membership_person_profile_models import * from app.models.membership_type_models import * +from app.models.membership_type_person_models import * from app.models.order_models import * from app.models.order_cart_models import * from app.models.organization_models import * @@ -89,10 +91,11 @@ obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'base_name': Jo obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base} obj_type_li['membership_cfg'] = {'table_name': 'v_membership_cfg', 'base_name': Membership_Cfg_Base} obj_type_li['membership_group'] = {'table_name': 'v_membership_group', 'base_name': Membership_Group_Base} -obj_type_li['membership_group_member'] = {'table_name': 'v_membership_group_member', 'base_name': Membership_Group_Member_Base} -obj_type_li['membership_member'] = {'table_name': 'v_membership_member', 'base_name': Membership_Member_Base} -obj_type_li['membership_member_profile'] = {'table_name': 'v_membership_member_profile', 'base_name': Membership_Member_Profile_Base} +obj_type_li['membership_group_person'] = {'table_name': 'v_membership_group_person', 'base_name': Membership_Group_Person_Base} +obj_type_li['membership_person'] = {'table_name': 'v_membership_person', 'base_name': Membership_Person_Base} +obj_type_li['membership_person_profile'] = {'table_name': 'v_membership_person_profile', 'base_name': Membership_Person_Profile_Base} obj_type_li['membership_type'] = {'table_name': 'v_membership_type', 'base_name': Membership_Type_Base} +obj_type_li['membership_type_person'] = {'table_name': 'v_membership_type_person', 'base_name': Membership_Type_Person_Base} #obj_type_li['message'] = {'table_name': 'message', 'base_name': Message_Base} #'v_message' obj_type_li['order'] = {'table_name': 'v_order', 'base_name': Order_Base} obj_type_li['order_cart'] = {'table_name': 'v_order_cart', 'base_name': Order_Cart_Base} @@ -133,8 +136,8 @@ obj_type_li['user_role'] = {'table_name': 'v_user_role', 'base_name': User_Role_ #obj_type_li['stripe_customer'] = {'table_name': 'stripe_customer', 'base_name': Stripe_Customer_Base} #obj_type_li['stripe_log'] = {'table_name': 'stripe_log', 'base_name': Stipe_Log_Base} -# obj_type_li['c_idda_membership_member_profile'] = {'table_name': 'c_idda_membership_member_profile', 'base_name': C_Idda_membership_member_profile_Base} -# obj_type_li['c_osit_demo_membership_member_profile'] = {'table_name': 'c_osit_demo_membership_member_profile', 'base_name': C_Osit_Demo_membership_member_profile_Base} +# obj_type_li['c_idda_membership_person_profile'] = {'table_name': 'c_idda_membership_person_profile', 'base_name': C_Idda_membership_person_profile_Base} +# obj_type_li['c_osit_demo_membership_person_profile'] = {'table_name': 'c_osit_demo_membership_person_profile', 'base_name': C_Osit_Demo_membership_person_profile_Base} router = APIRouter() diff --git a/app/routers/lookup.py b/app/routers/lookup.py index 62b7777..8005a21 100644 --- a/app/routers/lookup.py +++ b/app/routers/lookup.py @@ -30,7 +30,7 @@ async def get_lookup_li( log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - allowed_lookup_tables = ['country', 'country_subdivision', 'event_session_type', 'file_purpose', 'membership_member_status', 'order_status', 'post_topic', 'time_zone', 'user_status'] + allowed_lookup_tables = ['country', 'country_subdivision', 'event_session_type', 'file_purpose', 'membership_group_status', 'membership_person_status', 'membership_type_status', 'order_status', 'post_topic', 'time_zone', 'user_status'] if for_lookup_name in allowed_lookup_tables: pass else: diff --git a/app/routers/membership_group.py b/app/routers/membership_group.py index eac68f7..46eb64b 100644 --- a/app/routers/membership_group.py +++ b/app/routers/membership_group.py @@ -102,7 +102,7 @@ async def get_account_membership_group_obj_li( inc_address: bool = False, inc_contact: bool = False, inc_membership_cfg: bool = False, - inc_membership_group_member_list: bool = False, + inc_membership_group_person_list: bool = False, inc_organization: bool = False, inc_person: bool = False, inc_product_list: bool = False, @@ -134,7 +134,7 @@ async def get_account_membership_group_obj_li( 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_group_person_list = inc_membership_group_person_list, inc_organization = inc_organization, inc_person = inc_person, inc_product_list = inc_product_list, @@ -160,7 +160,7 @@ async def lookup_membership_group_obj( for_obj_id: Union[int,str], for_obj_type: str = Query(..., min_length=2, max_length=50), x_account_id: str = Header(...), - inc_membership_member_profile: bool = True, + inc_membership_person_profile: bool = True, inc_membership_cfg: bool = True, inc_extended_profile: bool = True, inc_person: bool = True, @@ -214,7 +214,7 @@ async def lookup_membership_group_obj( membership_group_id = membership_group_obj_result.get('membership_group_id', None) membership_group_obj = load_membership_group_obj( membership_group_id = membership_group_id, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_cfg = inc_membership_cfg, inc_extended_profile = inc_extended_profile, inc_person = inc_person, @@ -228,7 +228,7 @@ async def lookup_membership_group_obj( membership_group_obj_li.append( load_membership_group_obj( membership_group_id = membership_group_id, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_cfg = inc_membership_cfg, inc_extended_profile = inc_extended_profile, inc_person = inc_person, @@ -253,8 +253,8 @@ async def get_membership_group_obj( inc_contact: bool = False, # Per member inc_membership_cfg: bool = False, inc_membership_group_list: bool = False, # List of groups per member - inc_membership_group_member_list: bool = False, # List of members belonging to this group - inc_membership_member_profile: bool = False, # Per member + inc_membership_group_person_list: bool = False, # List of members belonging to this group + inc_membership_person_profile: bool = False, # Per member inc_organization: bool = False, # Per member inc_person: bool = False, # Per member inc_product: bool = False, # Per member @@ -282,8 +282,8 @@ async def get_membership_group_obj( 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_profile = inc_membership_member_profile, + inc_membership_group_person_list = inc_membership_group_person_list, + inc_membership_person_profile = inc_membership_person_profile, inc_organization = inc_organization, inc_person = inc_person, # inc_product = inc_product, diff --git a/app/routers/membership_member.py b/app/routers/membership_person.py similarity index 51% rename from app/routers/membership_member.py rename to app/routers/membership_person.py index c11d7db..337389e 100644 --- a/app/routers/membership_member.py +++ b/app/routers/membership_person.py @@ -9,18 +9,18 @@ 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 get_membership_member_rec_list, load_membership_member_obj +from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj -from app.models.membership_member_models import Membership_Member_Base +from app.models.membership_person_models import Membership_Person_Base from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() -@router.post('/membership/member', response_model=Resp_Body_Base) -async def post_membership_member_obj( - obj: Membership_Member_Base, +@router.post('/membership/person', response_model=Resp_Body_Base) +async def post_membership_person_obj( + obj: Membership_Person_Base, x_account_id: str = Header(...), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, @@ -29,7 +29,7 @@ async def post_membership_member_obj( log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'membership_member' + obj_type = 'membership_person' obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) result = post_obj_template( obj_type=obj_type, @@ -41,10 +41,10 @@ async def post_membership_member_obj( return result -@router.patch('/membership/member/{obj_id}', response_model=Resp_Body_Base) -async def patch_membership_member_obj( +@router.patch('/membership/person/{obj_id}', response_model=Resp_Body_Base) +async def patch_membership_person_obj( obj_id: str = Query(..., min_length=1, max_length=22), - obj: Membership_Member_Base = None, + obj: Membership_Person_Base = None, #x_account_id: Optional[str] = Header(..., ), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, @@ -53,7 +53,7 @@ async def patch_membership_member_obj( log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'membership_member' + obj_type = 'membership_person' obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type) obj_data_dict['id_random'] = obj_id @@ -68,8 +68,8 @@ async def patch_membership_member_obj( return result -@router.get('/membership/member/list', response_model=Resp_Body_Base) -async def get_membership_member_obj_li( +@router.get('/membership/person/list', response_model=Resp_Body_Base) +async def get_membership_person_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), x_account_id: str = Header(...), @@ -79,7 +79,7 @@ async def get_membership_member_obj_li( log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'membership_member' + obj_type = 'membership_person' result = get_obj_li_template( obj_type=obj_type, for_obj_type=for_obj_type, @@ -91,10 +91,10 @@ async def get_membership_member_obj_li( -# ### BEGIN ### API Membership Member ### get_account_obj_membership_member_list() ### +# ### BEGIN ### API Membership Person ### get_account_obj_membership_person_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( +@router.get('/account/{account_id}/membership/person/list', response_model=Resp_Body_Base) +async def get_account_obj_membership_person_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 @@ -104,10 +104,10 @@ async def get_account_obj_membership_member_list( 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_person: bool = False, + # inc_membership_person_list: bool = False, + inc_membership_person_profile: bool = False, + inc_membership_person_profile_cust: bool = False, inc_membership_type: bool = False, # inc_membership_type_list: bool = False, # inc_order: bool = False, @@ -130,16 +130,16 @@ async def get_account_obj_membership_member_list( # 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( + if membership_person_rec_list_result := get_membership_person_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), + membership_person_result_list = [] + for membership_person_rec in membership_person_rec_list_result: + if load_membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_rec.get('membership_person_id', None), limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, @@ -149,10 +149,10 @@ async def get_account_obj_membership_member_list( 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_group_person_list = inc_membership_group_person_list, + # inc_membership_person = inc_membership_person, + # inc_membership_person_list = inc_membership_person_list, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_type = inc_membership_type, # inc_order = inc_order, inc_organization = inc_organization, @@ -161,29 +161,98 @@ async def get_account_obj_membership_member_list( # inc_product_list = inc_product_list, inc_user = inc_user, ): - membership_member_result_list.append(load_membership_member_result) + membership_person_result_list.append(load_membership_person_result) else: - membership_member_result_list.append(None) - response_data = membership_member_result_list + membership_person_result_list.append(None) + response_data = membership_person_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() ### +# ### END ### API Membership Person ### get_account_obj_membership_person_list() ### +# ### BEGIN ### API Membership Person ### get_person_obj_membership_person() ### +# Working well as of 2021-07-09. Using as a template for other routes. +@router.get('/person/{person_id}/membership_person', response_model=Resp_Body_Base) +async def get_person_obj_membership_person( + 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_membership_cfg: bool = False, + # inc_membership_group: bool = False, # The primary membership group + inc_membership_group_list: bool = False, # The list of all membership groups a person is a part of + inc_membership_group_person_list: bool = False, + # inc_membership_person: bool = False, # Priority l2 + inc_membership_person_profile: bool = False, # Profile? + inc_membership_person_profile_cust: bool = False, # Extended profile? + inc_membership_type: bool = False, # The primary membership type + # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of + inc_membership_type_person: bool = False, + # inc_order: bool = False, + inc_organization: bool = False, + inc_product: bool = False, # The product the person actually purchased for a member_type or member_group + inc_product_list: bool = False, # The list of products that give access to a member_type or member_group + 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 person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass + else: return mk_resp(data=None, status_code=404) + + if membership_person_rec := sql_select(table_name='v_membership_person', field_name='person_id', field_value=person_id): pass + else: return False + + membership_person_id = membership_person_rec.get('membership_person_id', None) + log.debug(membership_person_id) + if membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_id, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = True, + enabled = enabled, + inc_address = inc_address, + inc_contact = inc_contact, + inc_membership_cfg = inc_membership_cfg, + # inc_membership_group = inc_membership_group, # The primary membership group, if there is one. + inc_membership_group_list = inc_membership_group_list, # All membership groups they are a part of. + inc_membership_group_person_list = inc_membership_group_person_list, + inc_membership_person_profile = inc_membership_person_profile, + inc_membership_person_profile_cust = inc_membership_person_profile_cust, + inc_membership_type = inc_membership_type, # The primary membership type, if there is one. + # inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of. + inc_membership_type_person = inc_membership_type_person, + # inc_membership_type_person_list = inc_membership_type_list, + # inc_person = inc_person, + inc_product = inc_product, + # inc_product_list = inc_product_list, + # inc_user = inc_user, + ): + response_data = membership_person_result + else: return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=response_data) +# ### END ### API Membership Person ### get_person_obj_membership_person() ### # Look up is only for account, person, or user records -@router.get('/membership/member/lookup', response_model=Resp_Body_Base) -async def lookup_membership_member_obj( +@router.get('/membership/person/lookup', response_model=Resp_Body_Base) +async def lookup_membership_person_obj( for_obj_id: Union[int,str], for_obj_type: str = Query(..., min_length=2, max_length=50), x_account_id: str = Header(...), inc_membership_cfg: bool = True, - inc_membership_member_profile: bool = True, - inc_membership_member_profile_cust: bool = True, + inc_membership_person_profile: bool = True, + inc_membership_person_profile_cust: bool = True, inc_person: bool = True, inc_user: bool = True, by_alias: bool = True, @@ -192,8 +261,8 @@ async def lookup_membership_member_obj( log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'membership_member' - base_name = Membership_Member_Base + obj_type = 'membership_person' + base_name = Membership_Person_Base 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=False, status_code=404) # Not Found @@ -203,78 +272,78 @@ async def lookup_membership_member_obj( as_list = False if for_obj_type == 'account' and for_obj_id: data['account_id'] = for_obj_id - sql_where_for_obj_type = """`membership_member`.account_id = :account_id""" + sql_where_for_obj_type = """`membership_person`.account_id = :account_id""" sql_limit = '' as_list = True elif for_obj_type == 'person' and for_obj_id: data['person_id'] = for_obj_id - sql_where_for_obj_type = """`membership_member`.person_id = :person_id""" + sql_where_for_obj_type = """`membership_person`.person_id = :person_id""" sql_limit = 'LIMIT 1' elif for_obj_type == 'user' and for_obj_id: data['user_id'] = for_obj_id - sql_where_for_obj_type = """`membership_member`.user_id = :user_id""" + sql_where_for_obj_type = """`membership_person`.user_id = :user_id""" sql_limit = 'LIMIT 1' - elif for_obj_type == 'membership_member' and for_obj_id: - data['membership_member_id'] = for_obj_id - sql_where_for_obj_type = """`membership_member`.id = :membership_member_id""" + elif for_obj_type == 'membership_person' and for_obj_id: + data['membership_person_id'] = for_obj_id + sql_where_for_obj_type = """`membership_person`.id = :membership_person_id""" sql_limit = 'LIMIT 1' else: log.debug(f'Object type={for_obj_type}; Object ID={for_obj_id}') return mk_resp(data=False, status_code=400) # Bad Request sql = f""" - SELECT id AS 'membership_member_id', id_random AS 'membership_member_id_random' - FROM `membership_member` AS `membership_member` + SELECT id AS 'membership_person_id', id_random AS 'membership_person_id_random' + FROM `membership_person` AS `membership_person` WHERE {sql_where_for_obj_type} {sql_limit} """ # This will return a list if selecting by account ID - membership_member_obj_result = sql_select(data=data, sql=sql, as_list=as_list) - if isinstance(membership_member_obj_result, dict): - membership_member_id = membership_member_obj_result.get('membership_member_id', None) - membership_member_obj = load_membership_member_obj( - membership_member_id = membership_member_id, + membership_person_obj_result = sql_select(data=data, sql=sql, as_list=as_list) + if isinstance(membership_person_obj_result, dict): + membership_person_id = membership_person_obj_result.get('membership_person_id', None) + membership_person_obj = load_membership_person_obj( + membership_person_id = membership_person_id, inc_membership_cfg = inc_membership_cfg, - inc_membership_member_profile = inc_membership_member_profile, - inc_membership_member_profile_cust = inc_membership_member_profile_cust, + inc_membership_person_profile = inc_membership_person_profile, + inc_membership_person_profile_cust = inc_membership_person_profile_cust, inc_person = inc_person, inc_user = inc_user, ).dict(by_alias=by_alias, exclude_unset=exclude_unset) - data = membership_member_obj - elif isinstance(membership_member_obj_result, list): - membership_member_obj_li = [] - for membership_member_obj in membership_member_obj_result: - membership_member_id = membership_member_obj.get('membership_member_id', None) - membership_member_obj_li.append( - load_membership_member_obj( - membership_member_id = membership_member_id, + data = membership_person_obj + elif isinstance(membership_person_obj_result, list): + membership_person_obj_li = [] + for membership_person_obj in membership_person_obj_result: + membership_person_id = membership_person_obj.get('membership_person_id', None) + membership_person_obj_li.append( + load_membership_person_obj( + membership_person_id = membership_person_id, inc_membership_cfg = inc_membership_cfg, - inc_membership_member_profile = inc_membership_member_profile, - inc_membership_member_profile_cust = inc_membership_member_profile_cust, + inc_membership_person_profile = inc_membership_person_profile, + inc_membership_person_profile_cust = inc_membership_person_profile_cust, inc_person = inc_person, inc_user = inc_user, ).dict(by_alias=by_alias, exclude_unset=exclude_unset) ) - data = membership_member_obj_li + data = membership_person_obj_li else: - log.debug(membership_member_obj_result) + log.debug(membership_person_obj_result) return mk_resp(data=None, status_code=404) # Not Found return mk_resp(data=data) -# ### BEGIN ### API Membership Group ### get_membership_member_obj() ### +# ### BEGIN ### API Membership Group ### get_membership_person_obj() ### # Working well as of 2021-06-24. Using as a template for other routes. -@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), +@router.get('/membership/person/{membership_person_id}', response_model=Resp_Body_Base) +async def get_membership_person_obj( + membership_person_id: str = Query(..., min_length=1, max_length=22), enabled: str = 'enabled', # For now this covers any included objects or object lists limit: int = 500, # For now this covers any included objects or object lists inc_address: bool = False, # Per member inc_contact: bool = False, # Per member inc_membership_cfg: bool = False, inc_membership_group_list: bool = False, # List of groups per member - inc_membership_member_profile: bool = False, + inc_membership_person_profile: bool = False, inc_membership_type: bool = False, # inc_order: bool = False, inc_organization: bool = False, @@ -289,11 +358,11 @@ async def get_membership_member_obj( 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 + if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass else: return mk_resp(data=None, status_code=404) - if membership_member_result := load_membership_member_obj( - membership_member_id = membership_member_id, + if membership_person_result := load_membership_person_obj( + membership_person_id = membership_person_id, limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, @@ -303,7 +372,7 @@ async def get_membership_member_obj( inc_contact = inc_contact, inc_membership_cfg = inc_membership_cfg, inc_membership_group_list = inc_membership_group_list, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_type = inc_membership_type, # inc_order = inc_order, inc_organization = inc_organization, @@ -316,19 +385,19 @@ async def get_membership_member_obj( else: return mk_resp(data=False, status_code=400) # Bad Request - return mk_resp(data=membership_member_result) -# ### END ### API Membership ### get_membership_member_obj() ### + return mk_resp(data=membership_person_result) +# ### END ### API Membership ### get_membership_person_obj() ### -@router.delete('/membership/member/{obj_id}', response_model=Resp_Body_Base) -async def delete_membership_member_obj( +@router.delete('/membership/person/{obj_id}', response_model=Resp_Body_Base) +async def delete_membership_person_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'membership_member' + obj_type = 'membership_person' result = delete_obj_template( obj_type=obj_type, obj_id=obj_id, diff --git a/app/routers/membership_type.py b/app/routers/membership_type.py index a14a3ea..720b62b 100644 --- a/app/routers/membership_type.py +++ b/app/routers/membership_type.py @@ -102,7 +102,7 @@ async def get_account_membership_type_obj_li( inc_address: bool = False, inc_contact: bool = False, inc_membership_cfg: bool = False, - inc_membership_member_list: bool = False, + inc_membership_person_list: bool = False, inc_organization: bool = False, inc_person: bool = False, inc_product_list: bool = False, @@ -134,7 +134,7 @@ async def get_account_membership_type_obj_li( inc_address = inc_address, inc_contact = inc_contact, inc_membership_cfg = inc_membership_cfg, - inc_membership_member_list = inc_membership_member_list, + inc_membership_person_list = inc_membership_person_list, inc_organization = inc_organization, inc_person = inc_person, inc_product_list = inc_product_list, @@ -160,7 +160,7 @@ async def lookup_membership_type_obj( for_obj_id: Union[int,str], for_obj_type: str = Query(..., min_length=2, max_length=50), x_account_id: str = Header(...), - inc_membership_member_profile: bool = True, + inc_membership_person_profile: bool = True, inc_membership_cfg: bool = True, inc_extended_profile: bool = True, inc_person: bool = True, @@ -168,7 +168,7 @@ async def lookup_membership_type_obj( by_alias: bool = True, exclude_unset: bool = True, ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) obj_type = 'membership_type' @@ -176,7 +176,7 @@ async def lookup_membership_type_obj( 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=False, status_code=404) # Not Found - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL data = {} as_list = False @@ -214,7 +214,7 @@ async def lookup_membership_type_obj( membership_type_id = membership_type_obj_result.get('membership_type_id', None) membership_type_obj = load_membership_type_obj( membership_type_id = membership_type_id, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_cfg = inc_membership_cfg, inc_extended_profile = inc_extended_profile, inc_person = inc_person, @@ -228,7 +228,7 @@ async def lookup_membership_type_obj( membership_type_obj_li.append( load_membership_type_obj( membership_type_id = membership_type_id, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_profile = inc_membership_person_profile, inc_membership_cfg = inc_membership_cfg, inc_extended_profile = inc_extended_profile, inc_person = inc_person, @@ -253,8 +253,8 @@ async def get_membership_type_obj( inc_contact: bool = False, # Per member inc_membership_cfg: bool = False, inc_membership_group_list: bool = False, # Per member - inc_membership_member_list: bool = False, - inc_membership_member_profile: bool = False, # Per member + inc_membership_person_list: bool = False, + inc_membership_person_profile: bool = False, # Per member inc_organization: bool = False, # Per member inc_person: bool = False, # Per member inc_product: bool = False, # Per member @@ -264,7 +264,7 @@ async def get_membership_type_obj( by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # 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 @@ -282,8 +282,8 @@ async def get_membership_type_obj( inc_contact = inc_contact, inc_membership_cfg = inc_membership_cfg, inc_membership_group_list = inc_membership_group_list, - inc_membership_member_list = inc_membership_member_list, - inc_membership_member_profile = inc_membership_member_profile, + inc_membership_person_list = inc_membership_person_list, + inc_membership_person_profile = inc_membership_person_profile, inc_organization = inc_organization, inc_person = inc_person, inc_product = inc_product, diff --git a/app/routers/person.py b/app/routers/person.py index d661c69..0115cae 100644 --- a/app/routers/person.py +++ b/app/routers/person.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 get_membership_member_rec_list, load_membership_member_obj +from app.methods.membership_person_methods import get_membership_person_rec_list, 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, load_person_obj, update_person_obj @@ -20,7 +20,7 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() -@router.post('', response_model=Resp_Body_Base) +@router.post('/person', response_model=Resp_Body_Base) async def post_person_obj( obj: Person_Base, x_account_id: str = Header(...), @@ -43,7 +43,7 @@ async def post_person_obj( return result -@router.patch('/{obj_id}', response_model=Resp_Body_Base) +@router.patch('/person/{obj_id}', response_model=Resp_Body_Base) async def patch_person_obj( obj: Person_Base, obj_id: str = Query(..., min_length=1, max_length=22), @@ -72,7 +72,7 @@ async def patch_person_obj( # ### BEGIN ### API Person ### post_person_json() ### # Updated 2021-06-25 -@router.post('/json', response_model=Resp_Body_Base) +@router.post('/person/json', response_model=Resp_Body_Base) async def post_person_json( person_obj: Person_Base, # person_id: str = Query(..., min_length=1, max_length=22), @@ -113,7 +113,7 @@ async def post_person_json( # ### BEGIN ### API Person ### patch_person_json() ### # Updated 2021-06-25 -@router.patch('/{person_id}/json', response_model=Resp_Body_Base) +@router.patch('/person/{person_id}/json', response_model=Resp_Body_Base) async def patch_person_json( person_obj: Person_Base, person_id: str = Query(..., min_length=1, max_length=22), @@ -152,7 +152,7 @@ async def patch_person_json( -@router.get('/list', response_model=Resp_Body_Base) +@router.get('/person/list', response_model=Resp_Body_Base) async def get_person_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), @@ -176,7 +176,7 @@ async def get_person_obj_li( # ### BEGIN ### API Person ### get_person_obj() ### # Working well as of 2021-06-25. Using as a template for other routes. -@router.get('/{person_id}', response_model=Resp_Body_Base) +@router.get('/person/{person_id}', response_model=Resp_Body_Base) async def get_person_obj( person_id: str = Query(..., min_length=1, max_length=22), limit: int = 500, # For now this covers any included objects or object lists @@ -188,8 +188,16 @@ async def get_person_obj( # inc_hosted_file_list: bool = False, # Priority l3 inc_journal_list: bool = False, # Priority l2 # inc_journal_entry_list: bool = False, # Priority l3 - inc_membership_member: bool = False, # Priority l2 - # inc_membership_list: bool = False, # ??? + # inc_membership_group: bool = False, # The primary membership group + # inc_membership_group_person: bool = False, + inc_membership_group_list: bool = False, # The list of all membership groups a person is a part of + inc_membership_group_person_list: bool = False, + inc_membership_person: bool = False, # Priority l2 + inc_membership_person_profile: bool = False, # Priority l2 + inc_membership_type: bool = False, # The primary membership type + inc_membership_type_person: bool = False, + # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of + # inc_membership_type_person_list: bool = False, inc_order_line_list: bool = False, # Priority l1 inc_order_list: bool = False, # Priority l1 inc_order_cart_list: bool = False, # Priority l1 @@ -206,8 +214,7 @@ async def get_person_obj( 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) + else: return mk_resp(data=None, status_code=404) if person_dict := load_person_obj( person_id = person_id, @@ -221,8 +228,12 @@ async def get_person_obj( # inc_hosted_file_list = inc_hosted_file_list, inc_journal_list = inc_journal_list, # inc_journal_entry_list = inc_journal_entry_list, - inc_membership_member = inc_membership_member, - # inc_membership_list = inc_membership_list, # ??? + inc_membership_group_list = inc_membership_group_list, + inc_membership_group_person_list = inc_membership_group_person_list, + inc_membership_person = inc_membership_person, + inc_membership_person_profile = inc_membership_person_profile, + inc_membership_type = inc_membership_type, + inc_membership_type_person = inc_membership_type_person, inc_order_line_list = inc_order_line_list, inc_order_list = inc_order_list, inc_order_cart_list = inc_order_cart_list, @@ -245,81 +256,7 @@ async def 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_id}/membership_member', response_model=Resp_Body_Base) -async def get_person_obj_membership_member( - 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_membership_cfg: bool = False, - inc_membership_group_list: bool = False, # Per member - inc_membership_member_list: bool = False, - inc_membership_member_profile: bool = False, # Per member - inc_membership_member_profile_cust: bool = False, # Extended profile? - inc_membership_type: bool = False, # The member_type the member is - # inc_order: bool = False, - inc_organization: bool = False, - inc_product: bool = False, # The product the person actually purchased for a member_type or member_group - inc_product_list: bool = False, # The list of products that give access to a member_type or member_group - 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 person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass - else: - return mk_resp(data=None, status_code=404) - - # Updated 2021-06-28 - if membership_member_rec_list_result := get_membership_member_rec_list( - for_obj_type = 'person', - for_obj_id = person_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, - 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_member_profile = inc_membership_member_profile, - inc_membership_member_profile_cust = inc_membership_member_profile_cust, - 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 Person ### get_person_obj_order_list() ### - - -# ### 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_id}/order_list', response_model=Resp_Body_Base) +@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 @@ -378,7 +315,7 @@ async def get_person_obj_order_list( # ### END ### API Person ### get_person_obj_order_list() ### -@router.delete('/{obj_id}', response_model=Resp_Body_Base) +@router.delete('/person/{obj_id}', response_model=Resp_Body_Base) async def delete_person_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), @@ -391,4 +328,4 @@ async def delete_person_obj( obj_type=obj_type, obj_id=obj_id, ) - return result \ No newline at end of file + return result diff --git a/app/routers/user.py b/app/routers/user.py index 78f8ca3..6c3ae74 100644 --- a/app/routers/user.py +++ b/app/routers/user.py @@ -576,7 +576,7 @@ async def get_user_obj( # inc_hosted_file_list: bool = False, # Priority l3 inc_journal_list: bool = False, # Priority l2 # inc_journal_entry_list: bool = False, # Priority l3 - inc_membership_member: bool = False, # Priority l2 + inc_membership_person: bool = False, # Priority l2 # inc_membership_list: bool = False, # ??? inc_order_line_list: bool = False, # Priority l1 inc_order_list: bool = False, # Priority l1 @@ -611,7 +611,7 @@ async def get_user_obj( # inc_hosted_file_list = inc_hosted_file_list, inc_journal_list = inc_journal_list, # inc_journal_entry_list = inc_journal_entry_list, - inc_membership_member = inc_membership_member, + inc_membership_person = inc_membership_person, # inc_membership_list = inc_membership_list, # ??? inc_order_line_list = inc_order_line_list, inc_order_list = inc_order_list,