diff --git a/app/main.py b/app/main.py index 9e1fbff..c70956a 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from app.lib_general import log, logging from app.log import log # Import the routers here first: -from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_file, event_person, event_person_detail, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, lookup, membership_type, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals +from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_file, event_person, event_person_detail, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, lookup, membership_type, membership_member, 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 @@ -164,11 +164,11 @@ app.include_router( # prefix='/membership/group', # tags=['Membership Group'], # ) -# app.include_router( -# membership_member.router, -# prefix='/membership/member', -# tags=['Membership Member'], -# ) +app.include_router( + membership_member.router, + prefix='/membership/member', + tags=['Membership Member'], +) app.include_router( membership_type.router, prefix='/membership/type', diff --git a/app/methods/account_methods.py b/app/methods/account_methods.py index 863cd2d..40a89f9 100644 --- a/app/methods/account_methods.py +++ b/app/methods/account_methods.py @@ -622,20 +622,20 @@ def load_account_obj_membership_type( log.error(e.json()) if inc_account_cfg: - if account_cfg_dict := load_account_cfg_obj( - account_id = account_id, - model_as_dict = model_as_dict, - inc_membership_cfg = inc_membership_cfg, - ): - account_obj.account_cfg = account_cfg_dict + if account_cfg_result := load_account_cfg_obj( + account_id = account_id, + model_as_dict = model_as_dict, + inc_membership_cfg = inc_membership_cfg, + ): + account_obj.account_cfg = account_cfg_result else: account_obj.account_cfg = None if inc_membership_cfg: - if membership_cfg_dict := load_membership_cfg_obj( - account_id = account_id, - model_as_dict = model_as_dict, - ): - account_obj.membership_cfg = membership_cfg_dict + if membership_cfg_result := load_membership_cfg_obj( + account_id = account_id, + model_as_dict = model_as_dict, + ): + account_obj.membership_cfg = membership_cfg_result else: account_obj.membership_cfg = None # Updated 2021-06-18 @@ -676,7 +676,6 @@ def load_account_obj_membership_type( - # ### BEGIN ### API Account Methods ### load_account_obj_membership_group() ### # Working well as of 2021-06-11. Using as a template for other load objects. def load_account_obj_membership_group( diff --git a/app/methods/membership_group_methods.py b/app/methods/membership_group_methods.py index f56674e..25fd6e0 100644 --- a/app/methods/membership_group_methods.py +++ b/app/methods/membership_group_methods.py @@ -25,14 +25,14 @@ 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, + 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_type_list: bool = False, # ??? + # inc_membership_type_list: bool = False, # ??? inc_organization: bool = False, - # inc_parent_membership_group: bool = False, + inc_parent_membership_group: bool = False, inc_person: bool = False, - inc_product_list: bool = False, + 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 @@ -53,14 +53,14 @@ def load_membership_group_obj( except ValidationError as e: log.error(e.json()) - # Updated 2021-06-23 + # Updated 2021-06-24 if inc_membership_cfg: if membership_cfg_obj_result := load_membership_cfg_obj( - account_id = membership_group_rec.get('account_id', None), - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - ): + account_id = membership_group_rec.get('account_id', None), + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + ): membership_group_obj.cfg = membership_cfg_obj_result else: membership_group_obj.cfg = None diff --git a/app/methods/membership_member_methods.py b/app/methods/membership_member_methods.py index 5774a96..5018189 100644 --- a/app/methods/membership_member_methods.py +++ b/app/methods/membership_member_methods.py @@ -7,9 +7,11 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v 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.person_methods import load_person_obj from app.methods.user_methods import load_user_obj @@ -27,13 +29,14 @@ def load_membership_member_obj( inc_address: bool = False, inc_contact: bool = False, inc_membership_cfg: bool = False, - inc_membership_group_list: 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_type: bool = False, - # inc_membership_member_profile_cust: bool = False, + inc_membership_member_profile_cust: bool = False, # Extended profile? + inc_membership_type: bool = False, # The member_type the member is 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: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -51,8 +54,19 @@ def load_membership_member_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_member_rec.get('account_id', None), + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + ): + membership_member_obj.cfg = membership_cfg_obj_result + else: membership_member_obj.cfg = None + # Updated 2021-06-18 - if inc_membership_group_list: + 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, @@ -73,22 +87,11 @@ def load_membership_member_obj( # inc_organization = inc_organization, # inc_person = inc_person, # inc_product = inc_product, + 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_group_result_list.append( - # load_membership_group_obj( - # membership_group_id = membership_group_rec.get('membership_group_id', None), - # # limit = limit, - # by_alias = by_alias, - # exclude_unset = exclude_unset, - # model_as_dict = model_as_dict, - # # enabled = enabled, - # ) - # ) membership_member_obj.membership_group_list = membership_group_result_list else: membership_member_obj.membership_group_list = [] @@ -104,6 +107,7 @@ def load_membership_member_obj( inc_address = inc_address, inc_contact = inc_contact, # inc_membership = inc_membership, + # inc_membership_cfg = inc_membership_cfg, inc_organization = inc_organization, ): membership_member_obj.membership_member_profile = membership_member_profile_result @@ -112,17 +116,22 @@ def load_membership_member_obj( # Updated 2021-06-18 if inc_membership_type: + from app.methods.membership_type_methods import load_membership_type_obj membership_type_id = membership_member_rec.get('membership_type_id', None) log.debug(membership_type_id) if membership_type_result := load_membership_type_obj( membership_type_id = membership_type_id, + limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, model_as_dict = model_as_dict, - inc_address = inc_address, - inc_contact = inc_contact, + enabled = enabled, + # inc_address = inc_address, + # inc_contact = inc_contact, # inc_membership = inc_membership, + # inc_membership_cfg = inc_membership_cfg, # 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 diff --git a/app/methods/membership_type_methods.py b/app/methods/membership_type_methods.py index 24061eb..2136550 100644 --- a/app/methods/membership_type_methods.py +++ b/app/methods/membership_type_methods.py @@ -64,13 +64,13 @@ def load_membership_type_obj( # Updated 2021-06-23 if inc_membership_cfg: - if membership_cfg_obj_result := load_membership_cfg_obj( - account_id = membership_type_rec.get('account_id', None), - by_alias = by_alias, - exclude_unset = exclude_unset, - model_as_dict = model_as_dict, - ): - membership_type_obj.cfg = membership_cfg_obj_result + if membership_cfg_result := load_membership_cfg_obj( + account_id = membership_type_rec.get('account_id', None), + by_alias = by_alias, + exclude_unset = exclude_unset, + model_as_dict = model_as_dict, + ): + membership_type_obj.cfg = membership_cfg_result else: membership_type_obj.cfg = None # Updated 2021-06-23 @@ -146,7 +146,7 @@ def get_membership_type_rec_list( data[f'{for_obj_type}_id'] = for_obj_id allowed_forign_key_li = ['account'] # 'lu_membership_type_id'? 'level'? - if for_obj_type == 'account': + if for_obj_type in allowed_forign_key_li: log.info(f'Query using forign key: {for_obj_type} {for_obj_id}') sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id' diff --git a/app/models/membership_group_models.py b/app/models/membership_group_models.py index ea7c030..b7ddea7 100644 --- a/app/models/membership_group_models.py +++ b/app/models/membership_group_models.py @@ -26,11 +26,16 @@ class Membership_Group_Base(BaseModel): ) account_id_random: Optional[str] account_id: Optional[int] - membership_type_id_random: Optional[str] - membership_type_id: Optional[int] + + # membership_type_id_random: Optional[str] + # membership_type_id: Optional[int] + parent_membership_group_id_random: Optional[str] parent_membership_group_id: Optional[int] + product_id_random: Optional[str] + product_id: Optional[int] # The product they purchased to get this membership + name: Optional[str] overview: Optional[str] description: Optional[str] @@ -78,14 +83,14 @@ class Membership_Group_Base(BaseModel): return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') return None - @validator('membership_type_id', always=True) - def membership_lookup(cls, v, values, **kwargs): - log.setLevel(logging.WARNING) - log.debug(locals()) + # @validator('membership_type_id', always=True) + # def membership_type_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 + # 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('parent_membership_group_id', always=True) def parent_membership_group_id_lookup(cls, v, values, **kwargs): diff --git a/app/models/membership_member_models.py b/app/models/membership_member_models.py index 7c999c8..f3496e9 100644 --- a/app/models/membership_member_models.py +++ b/app/models/membership_member_models.py @@ -12,6 +12,7 @@ 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 @@ -73,7 +74,7 @@ class Membership_Member_Base(BaseModel): membership_group_list: Optional[list] # Membership_Group_Base() The membership groups they are a part of membership_member_profile: Optional[Membership_Member_Profile_Base] person: Optional[Person_Base] - # product: Optional[Product_Base] # The product used to become a member? + product: Optional[Product_Base] # The product used to become a member? user: Optional[User_Base] extended_member_profile: Optional[dict] = {} diff --git a/app/routers/account.py b/app/routers/account.py index 9aeee35..74f0ed0 100644 --- a/app/routers/account.py +++ b/app/routers/account.py @@ -282,18 +282,19 @@ async def get_account_obj_membership_member_list( account_id: str = Query(..., min_length=1, max_length=22), limit: int = 500, # For now this covers any included objects or object lists enabled: str = 'enabled', # For now this covers any included objects or object lists - inc_account_cfg: bool = False, + # inc_account_cfg: bool = False, inc_address: bool = False, # Under contact inc_contact: bool = False, inc_membership_cfg: bool = False, # inc_membership_group: bool = False, inc_membership_group_list: bool = False, - inc_membership_member: bool = False, + # inc_membership_member: bool = False, # inc_membership_member_list: bool = False, inc_membership_member_profile: bool = False, + inc_membership_member_profile_cust: bool = False, inc_membership_type: bool = False, # inc_membership_type_list: bool = False, - inc_order: bool = False, + # inc_order: bool = False, inc_organization: bool = False, inc_person: bool = False, inc_product: bool = False, @@ -307,8 +308,7 @@ async def get_account_obj_membership_member_list( log.debug(locals()) if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass - else: - return mk_resp(data=None, status_code=404) + else: return mk_resp(data=None, status_code=404) response_data = None # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -325,20 +325,20 @@ async def get_account_obj_membership_member_list( 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, + enabled = enabled, inc_address = inc_address, inc_contact = inc_contact, inc_membership_cfg = inc_membership_cfg, inc_membership_group_list = inc_membership_group_list, # inc_membership_group_member_list = inc_membership_group_member_list, - inc_membership_member = inc_membership_member, + # inc_membership_member = inc_membership_member, # inc_membership_member_list = inc_membership_member_list, inc_membership_member_profile = inc_membership_member_profile, inc_membership_type = inc_membership_type, - inc_order = inc_order, + # inc_order = inc_order, inc_organization = inc_organization, inc_person = inc_person, inc_product = inc_product, diff --git a/app/routers/api.py b/app/routers/api.py index b3626bd..2dedad8 100644 --- a/app/routers/api.py +++ b/app/routers/api.py @@ -17,7 +17,6 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() - @router.get('/temp_token', response_model=Resp_Body_Base) async def get_api_temp_token( x_aether_api_key: Optional[str] = Header(None), diff --git a/app/routers/membership_group.py b/app/routers/membership_group.py index 1c9daf5..e731ebc 100644 --- a/app/routers/membership_group.py +++ b/app/routers/membership_group.py @@ -208,22 +208,22 @@ async def get_membership_group_obj( else: return mk_resp(data=None, status_code=404) - if membership_group_result := load_membership_group_result( + if membership_group_result := load_membership_group_obj( membership_group_id = membership_group_id, limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, - model_as_dict = model_as_dict, # NOTE: returning model as a dict + # model_as_dict = model_as_dict, # NOTE: returning model as a dict enabled = enabled, inc_address = inc_address, inc_contact = inc_contact, inc_membership_cfg = inc_membership_cfg, - inc_membership_group_list = inc_membership_group_list, + # inc_membership_group_list = inc_membership_group_list, inc_membership_group_member_list = inc_membership_group_member_list, inc_membership_member_profile = inc_membership_member_profile, inc_organization = inc_organization, inc_person = inc_person, - inc_product = inc_product, + # inc_product = inc_product, inc_product_list = inc_product_list, inc_user = inc_user, ): diff --git a/app/routers/membership_member.py b/app/routers/membership_member.py index 7f76ebb..116c223 100644 --- a/app/routers/membership_member.py +++ b/app/routers/membership_member.py @@ -96,9 +96,9 @@ async def lookup_membership_member_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_cfg: bool = True, - inc_extended_profile: bool = True, + inc_membership_member_profile: bool = True, + inc_membership_member_profile_cust: bool = True, inc_person: bool = True, inc_user: bool = True, by_alias: bool = True, @@ -150,9 +150,9 @@ async def lookup_membership_member_obj( 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, - inc_membership_member_profile = inc_membership_member_profile, inc_membership_cfg = inc_membership_cfg, - inc_extended_profile = inc_extended_profile, + inc_membership_member_profile = inc_membership_member_profile, + inc_membership_member_profile_cust = inc_membership_member_profile_cust, inc_person = inc_person, inc_user = inc_user, ).dict(by_alias=by_alias, exclude_unset=exclude_unset) @@ -164,9 +164,9 @@ async def lookup_membership_member_obj( membership_member_obj_li.append( load_membership_member_obj( membership_member_id = membership_member_id, - inc_membership_member_profile = inc_membership_member_profile, inc_membership_cfg = inc_membership_cfg, - inc_extended_profile = inc_extended_profile, + inc_membership_member_profile = inc_membership_member_profile, + inc_membership_member_profile_cust = inc_membership_member_profile_cust, inc_person = inc_person, inc_user = inc_user, ).dict(by_alias=by_alias, exclude_unset=exclude_unset) @@ -189,13 +189,14 @@ async def get_membership_member_obj( inc_address: bool = False, # Per member inc_contact: bool = False, # Per member inc_membership_cfg: bool = False, - inc_membership_member_list: bool = False, # List of groups per member - inc_membership_type_list: bool = False, # List of membership types belonging to this member + inc_membership_group_list: bool = False, # List of groups per member + # inc_membership_type_list: bool = False, # List of membership types belonging to this member inc_membership_member_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_product: bool = False, # Per member or group member belongs to + inc_product_list: bool = False, inc_user: bool = False, # Per member x_account_id: str = Header(...), by_alias: Optional[bool] = True, @@ -205,22 +206,25 @@ async def get_membership_member_obj( log.debug(locals()) if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass - else: - return mk_resp(data=None, status_code=404) + else: return mk_resp(data=None, status_code=404) - if membership_member_result := load_membership_member_result( + if membership_member_result := load_membership_member_obj( membership_member_id = membership_member_id, limit = limit, by_alias = by_alias, exclude_unset = exclude_unset, - model_as_dict = model_as_dict, # NOTE: returning model as a dict + # model_as_dict = model_as_dict, enabled = enabled, inc_address = inc_address, inc_contact = inc_contact, inc_membership_cfg = inc_membership_cfg, - inc_membership_member_list = inc_membership_member_list, - inc_membership_member_member_list = inc_membership_member_member_list, + inc_membership_group_list = inc_membership_group_list, + # inc_membership_group_member_list = inc_membership_group_member_list, + # inc_membership_member = inc_membership_member, + # inc_membership_member_list = inc_membership_member_list, inc_membership_member_profile = inc_membership_member_profile, + inc_membership_type = inc_membership_type, + # inc_order = inc_order, inc_organization = inc_organization, inc_person = inc_person, inc_product = inc_product, @@ -231,6 +235,29 @@ async def get_membership_member_obj( else: return mk_resp(data=False, status_code=400) # Bad Request + # if membership_member_result := load_membership_member_result( + # membership_member_id = membership_member_id, + # limit = limit, + # by_alias = by_alias, + # exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, # NOTE: returning model as a dict + # enabled = enabled, + # inc_address = inc_address, + # inc_contact = inc_contact, + # inc_membership_cfg = inc_membership_cfg, + # inc_membership_member_list = inc_membership_member_list, + # inc_membership_member_member_list = inc_membership_member_member_list, + # inc_membership_member_profile = inc_membership_member_profile, + # inc_organization = inc_organization, + # inc_person = inc_person, + # inc_product = inc_product, + # inc_product_list = inc_product_list, + # inc_user = inc_user, + # ): + # pass + # 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() ###