Working on membership still...

This commit is contained in:
Scott Idem
2021-06-24 14:17:29 -04:00
parent 6f21a567a7
commit ea254c584f
11 changed files with 133 additions and 93 deletions

View File

@@ -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',

View File

@@ -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(

View File

@@ -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

View File

@@ -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

View File

@@ -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'

View File

@@ -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):

View File

@@ -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] = {}

View File

@@ -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,

View File

@@ -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),

View File

@@ -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,
):

View File

@@ -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() ###