Working on membership module routes, methods, and models

This commit is contained in:
Scott Idem
2021-06-21 17:53:04 -04:00
parent ce44e93b4d
commit 728682a07f
22 changed files with 1184 additions and 267 deletions

View File

@@ -18,7 +18,7 @@ from app.lib_general import *
from app.log import log from app.log import log
# Import the routers here first: # 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, 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, 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 from app.db_sql import db
@@ -219,13 +219,20 @@ app.include_router(
prefix='/lu', prefix='/lu',
tags=['Lookup'], tags=['Lookup'],
) )
# app.include_router(
# membership_group.router,
# prefix='/membership/group',
# tags=['Membership Group'],
# )
# app.include_router(
# membership_member.router,
# prefix='/membership/member',
# tags=['Membership Member'],
# )
app.include_router( app.include_router(
membership.router, membership_type.router,
prefix='/membership', prefix='/membership/type',
tags=['Membership'], tags=['Membership Type'],
#dependencies=[Depends(get_token_header)],
#dependencies=[Depends(get_account_header)],
#responses={404: {'description': 'Not found'}},
) )
app.include_router( app.include_router(
order.router, order.router,

View File

@@ -14,7 +14,9 @@ from app.methods.contact_methods import get_contact_rec_list, load_contact_obj
from app.methods.event_methods import get_event_rec_list, load_event_obj from app.methods.event_methods import get_event_rec_list, load_event_obj
from app.methods.hosted_file_methods import get_hosted_file_rec_list, load_hosted_file_obj from app.methods.hosted_file_methods import get_hosted_file_rec_list, load_hosted_file_obj
from app.methods.journal_methods import get_journal_rec_list, load_journal_obj from app.methods.journal_methods import get_journal_rec_list, load_journal_obj
from app.methods.membership_methods import get_membership_rec_list, load_membership_obj from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj
from app.methods.order_methods import get_order_rec_list, load_order_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 # from app.methods.order_cart_methods import get_order_cart_rec_list, load_order_cart_obj
from app.methods.organization_methods import get_organization_rec_list, load_organization_obj from app.methods.organization_methods import get_organization_rec_list, load_organization_obj
@@ -81,11 +83,13 @@ def load_account_obj(
inc_hosted_file_link_list: bool = False, inc_hosted_file_link_list: bool = False,
inc_journal_list: bool = False, # Priority l3 inc_journal_list: bool = False, # Priority l3
inc_journal_entry_list: bool = False, # Priority l3 inc_journal_entry_list: bool = False, # Priority l3
# inc_membership: bool = False,
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_list: bool = False, inc_membership_group_list: bool = False,
inc_membership_member: bool = False, inc_membership_member: bool = False,
inc_membership_member_list: bool = False, # Priority l1 inc_membership_member_list: bool = False, # Priority l1
inc_membership_member_profile: bool = False,
# inc_membership_type: bool = False,
inc_membership_type_list: bool = False,
inc_order: bool = False, inc_order: bool = False,
inc_order_cfg: bool = False, inc_order_cfg: bool = False,
inc_order_list: bool = False, # Priority l1 inc_order_list: bool = False, # Priority l1
@@ -293,29 +297,84 @@ def load_account_obj(
account_obj.journal_list = journal_dict_list account_obj.journal_list = journal_dict_list
else: account_obj.journal_list = [] else: account_obj.journal_list = []
# Updated 2021-06-18 # Updated 2021-06-21
if inc_membership_list: if inc_membership_group_list:
if membership_rec_list_result := get_membership_rec_list( if membership_group_rec_list_result := get_membership_group_rec_list(
for_obj_type = 'account', for_obj_type = 'account',
for_obj_id = account_id, for_obj_id = account_id,
limit = limit, limit = limit,
enabled = enabled, enabled = enabled,
): ):
membership_result_list = [] membership_group_result_list = []
for membership_rec in membership_rec_list_result: for membership_group_rec in membership_group_rec_list_result:
membership_result_list.append( membership_group_result_list.append(
load_membership_obj( load_membership_group_obj(
membership_id = membership_rec.get('membership_id', None), membership_group_id = membership_group_rec.get('membership_group_id', None),
limit = limit, limit = limit,
by_alias = by_alias, by_alias = by_alias,
exclude_unset = exclude_unset, exclude_unset = exclude_unset,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
inc_membership_member_list = inc_membership_member_list, inc_membership_member_list = inc_membership_member_list,
# inc_membership_group_member_list = inc_membership_group_member_list,
inc_product_list = inc_product_list, inc_product_list = inc_product_list,
) )
) )
account_obj.membership_list = membership_result_list account_obj.membership_group_list = membership_group_result_list
else: account_obj.membership_list = [] 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(
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),
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_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 = []
# Updated 2021-06-18
if inc_membership_type_list:
if membership_type_rec_list_result := get_membership_type_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
limit = limit,
enabled = enabled,
):
membership_type_result_list = []
for membership_type_rec in membership_type_rec_list_result:
membership_type_result_list.append(
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,
inc_membership_member_list = inc_membership_member_list,
# inc_membership_type_member_list = inc_membership_type_member_list,
inc_product_list = inc_product_list,
)
)
account_obj.membership_type_list = membership_type_result_list
else: account_obj.membership_type_list = []
# Updated 2021-06-17 # Updated 2021-06-17
if inc_order_list: if inc_order_list:

View File

@@ -0,0 +1,166 @@
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.models.membership_group_member_models import Membership_Group_Member_Base
# ### 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 ### 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,
inc_membership_member: bool = False,
) -> Membership_Group_Member_Base|bool:
log.setLevel(logging.WARNING) # 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:
membership_member_id = membership_group_member_rec.get('membership_member_id', None)
log.debug(membership_member_id)
if membership_member_result := load_membership_member_obj(
membership_member_id = membership_member_id,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
):
membership_group_member_obj.membership_member = membership_member_result
else: membership_group_member_obj.membership_group_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 ### 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() ###
# ### 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};
"""
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() ###

View File

@@ -37,14 +37,23 @@ def create_membership_group_obj(membership_group_obj_new:Membership_Group_Base)
# ### BEGIN ### API Membership Group Methods ### load_membership_group_obj() ### # ### BEGIN ### API Membership Group Methods ### load_membership_group_obj() ###
def load_membership_group_obj( def load_membership_group_obj(
membership_group_id: int|str, membership_group_id: int|str,
# limit: int = 1000, limit: int = 1000,
by_alias: bool = True, by_alias: bool = True,
exclude_unset: bool = True, exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
inc_membership: bool = False, enabled: str = 'enabled', # enabled, disabled, all
inc_parent_membership_group: bool = False, inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False, # under membership_member
inc_membership_type_list: bool = False, # ???
# inc_parent_membership_group: bool = False,
inc_person: bool = False,
inc_product_list: bool = False,
inc_user: bool = False,
) -> Membership_Group_Base|bool: ) -> 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()) log.debug(locals())
if membership_group_id := redis_lookup_id_random(record_id_random=membership_group_id, table_name='membership_group'): pass if membership_group_id := redis_lookup_id_random(record_id_random=membership_group_id, table_name='membership_group'): pass
@@ -63,18 +72,49 @@ def load_membership_group_obj(
log.error(e.json()) log.error(e.json())
# Updated 2021-06-18 # Updated 2021-06-18
if inc_parent_membership_group: if inc_membership_cfg:
membership_group_id = membership_group_rec.get('membership_group_id', None) membership_cfg_result = load_membership_cfg_obj(
log.debug(membership_group_id) account_id = membership_group_rec.get('account_id', None),
if membership_group_result := load_membership_group_obj( by_alias = by_alias,
membership_group_id = membership_group_id, exclude_unset = exclude_unset,
by_alias = by_alias, model_as_dict = model_as_dict,
exclude_unset = exclude_unset, )
model_as_dict = model_as_dict, membership_group_rec['cfg'] = membership_cfg_result
# Updated 2021-06-18
# if inc_parent_membership_group:
# parent_membership_group_id = membership_group_rec.get('parent_membership_group_id', None)
# log.debug(parent_membership_group_id)
# if parent_membership_group_result := load_membership_group_obj(
# membership_group_id = parent_membership_group_id,
# by_alias = by_alias,
# exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
# ):
# membership_group_obj.parent_membership_group = parent_membership_group_result
# else: membership_group_obj.parent_membership_group = None
# log.debug(parent_membership_group_result)
# Updated 2021-06-18
if inc_product_list:
if product_rec_list_result := get_product_rec_list(
for_obj_type = 'membership_group',
for_obj_id = membership_group_id,
limit = limit,
enabled = enabled,
): ):
membership_group_obj.membership_group = membership_group_result product_result_list = []
else: membership_group_obj.membership_group = None for product_rec in product_rec_list_result:
log.debug(membership_group_result) product_result_list.append(
load_product_obj(
product_id = product_rec.get('product_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
)
)
membership_group_obj.product_list = product_result_list
else: membership_group_obj.product_list = []
if model_as_dict: if model_as_dict:
return membership_group_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member return membership_group_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
@@ -101,10 +141,10 @@ def update_membership_group_obj(
log.debug(membership_group_obj_up.dict(by_alias=False, exclude_unset=True)) log.debug(membership_group_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(membership_group_obj_up.dict(by_alias=False, exclude_unset=False)) # log.debug(membership_group_obj_up.dict(by_alias=False, exclude_unset=False))
journal_dict_up = membership_group_obj_up.dict(by_alias=False, exclude_unset=True) membership_group_dict_up = membership_group_obj_up.dict(by_alias=False, exclude_unset=True)
log.debug(journal_dict_up) log.debug(membership_group_dict_up)
if membership_group_obj_up_result := sql_update(data=journal_dict_up, table_name='membership_group', rm_id_random=True): if membership_group_obj_up_result := sql_update(data=membership_group_dict_up, table_name='membership_group', rm_id_random=True):
log.debug(membership_group_obj_up_result) log.debug(membership_group_obj_up_result)
return True return True
else: else:

View File

@@ -8,7 +8,7 @@ from app.lib_general import log, logging
from app.db_sql import redis_lookup_id_random, sql_insert_or_update, sql_select from app.db_sql import redis_lookup_id_random, sql_insert_or_update, sql_select
from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
from app.methods.membership_profile_methods import get_membership_profile_rec_list, load_membership_profile_obj from app.methods.membership_member_profile_methods import get_membership_member_profile_rec_list, load_membership_member_profile_obj
from app.methods.person_methods import load_person_obj from app.methods.person_methods import load_person_obj
from app.methods.user_methods import load_user_obj from app.methods.user_methods import load_user_obj
@@ -174,8 +174,9 @@ def load_membership_member_obj(
inc_contact: bool = False, inc_contact: bool = False,
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, inc_membership_group_list: bool = False,
inc_membership_profile: bool = False, inc_membership_member_profile: bool = False,
# inc_membership_profile_cust: bool = False, inc_membership_type: bool = False,
# inc_membership_member_profile_cust: bool = False,
inc_organization: bool = False, inc_organization: bool = False,
inc_person: bool = False, inc_person: bool = False,
inc_user: bool = False, inc_user: bool = False,
@@ -218,12 +219,12 @@ def load_membership_member_obj(
membership_member_obj.membership_group_list = membership_group_result_list membership_member_obj.membership_group_list = membership_group_result_list
else: membership_member_obj.membership_group_list = [] else: membership_member_obj.membership_group_list = []
# Updated 2021-06-18 # Updated 2021-06-21
if inc_membership_profile: if inc_membership_member_profile:
membership_profile_id = membership_member_rec.get('membership_profile_id', None) membership_member_profile_id = membership_member_rec.get('membership_member_profile_id', None)
log.debug(membership_profile_id) log.debug(membership_member_profile_id)
if membership_profile_result := load_membership_profile_obj( if membership_member_profile_result := load_membership_member_profile_obj(
membership_profile_id = membership_profile_id, membership_member_profile_id = membership_member_profile_id,
by_alias = by_alias, by_alias = by_alias,
exclude_unset = exclude_unset, exclude_unset = exclude_unset,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
@@ -232,9 +233,27 @@ def load_membership_member_obj(
# inc_membership = inc_membership, # inc_membership = inc_membership,
# inc_organization = inc_organization, # inc_organization = inc_organization,
): ):
membership_member_obj.membership_profile = membership_profile_result membership_member_obj.membership_member_profile = membership_member_profile_result
else: membership_member_obj.membership_profile = None else: membership_member_obj.membership_member_profile = None
log.debug(membership_profile_result) log.debug(membership_member_profile_result)
# Updated 2021-06-18
if inc_membership_type:
membership_type_id = membership_member_rec.get('membership_type_id', None)
log.debug(membership_type_id)
if membership_type_result := load_membership_type_obj(
membership_type_id = membership_type_id,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
# inc_membership = inc_membership,
# inc_organization = inc_organization,
):
membership_member_obj.membership_type = membership_type_result
else: membership_member_obj.membership_type = None
log.debug(membership_type_result)
# Updated 2021-06-18 # Updated 2021-06-18
if inc_person: if inc_person:

View File

@@ -7,45 +7,45 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
from app.db_sql import redis_lookup_id_random, sql_select from app.db_sql import redis_lookup_id_random, sql_select
from app.lib_general import log, logging from app.lib_general import log, logging
from app.models.membership_profile_models import Membership_Profile_Base from app.models.membership_member_profile_models import Membership_Member_Profile_Base
# ### BEGIN ### API Membership Profile Methods ### load_membership_profile_obj() ### # ### BEGIN ### API Membership Member Profile Methods ### load_membership_member_profile_obj() ###
def load_membership_profile_obj( def load_membership_member_profile_obj(
membership_profile_id: int|str, membership_member_profile_id: int|str,
by_alias: bool = True, by_alias: bool = True,
exclude_unset: bool = True, exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
inc_contact: bool = False, inc_contact: bool = False,
inc_organization: bool = False, inc_organization: bool = False,
) -> Membership_Profile_Base|dict|bool: ) -> Membership_Member_Profile_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()) log.debug(locals())
if membership_profile_id := redis_lookup_id_random(record_id_random=membership_profile_id, table_name='membership_profile'): pass if membership_member_profile_id := redis_lookup_id_random(record_id_random=membership_member_profile_id, table_name='membership_member_profile'): pass
else: return False else: return False
if membership_profile_rec := sql_select( if membership_member_profile_rec := sql_select(
table_name='v_membership_profile', table_name='v_membership_member_profile',
record_id=membership_profile_id, record_id=membership_member_profile_id,
): pass ): pass
else: return False else: return False
log.debug(membership_profile_rec) log.debug(membership_member_profile_rec)
try: try:
membership_profile_obj = Membership_Profile_Base(**membership_profile_rec) membership_member_profile_obj = Membership_Member_Profile_Base(**membership_member_profile_rec)
log.debug(membership_profile_obj) log.debug(membership_member_profile_obj)
except ValidationError as e: except ValidationError as e:
log.error(e.json()) log.error(e.json())
if model_as_dict: if model_as_dict:
return membership_profile_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member return membership_member_profile_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return membership_profile_obj return membership_member_profile_obj
# ### END ### API Membership Profile Methods ### load_membership_profile_obj() ### # ### END ### API Membership Member Profile Methods ### load_membership_member_profile_obj() ###
# ### BEGIN ### API Membership Profile Methods ### get_membership_profile_rec_list() ### # ### BEGIN ### API Membership Member Profile Methods ### get_membership_member_profile_rec_list() ###
def get_membership_profile_rec_list( def get_membership_member_profile_rec_list(
for_obj_type: str, for_obj_type: str,
for_obj_id: str, for_obj_id: str,
limit: int = 1000, limit: int = 1000,
@@ -78,8 +78,8 @@ def get_membership_profile_rec_list(
sql_limit = '' sql_limit = ''
sql = f""" sql = f"""
SELECT `tbl`.id AS 'membership_profile_id', `tbl`.id_random AS 'membership_profile_id_random' SELECT `tbl`.id AS 'membership_member_profile_id', `tbl`.id_random AS 'membership_member_profile_id_random'
FROM `membership_profile` AS `tbl` FROM `membership_member_profile` AS `tbl`
WHERE WHERE
{sql_obj_type_id} {sql_obj_type_id}
{sql_enabled} {sql_enabled}
@@ -87,12 +87,12 @@ def get_membership_profile_rec_list(
{sql_limit}; {sql_limit};
""" """
if membership_profile_rec_li_result := sql_select(data=data, sql=sql, as_list=True): if membership_member_profile_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_profile_rec_li = membership_profile_rec_li_result membership_member_profile_rec_li = membership_member_profile_rec_li_result
else: else:
membership_profile_rec_li = [] membership_member_profile_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_profile_rec_li_result) log.debug(membership_member_profile_rec_li_result)
return membership_profile_rec_li return membership_member_profile_rec_li
# ### END ### API Membership Profile Methods ### get_membership_profile_rec_list() ### # ### END ### API Membership Member Profile Methods ### get_membership_member_profile_rec_list() ###

View File

@@ -11,21 +11,21 @@ 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_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.methods.product_methods import get_product_rec_list, load_product_obj from app.methods.product_methods import get_product_rec_list, load_product_obj
from app.models.membership_models import Membership_Base from app.models.membership_type_models import Membership_Type_Base
# ### BEGIN ### API Membership Methods ### save_membership_obj() ### # ### BEGIN ### API Membership Type Methods ### save_membership_type_obj() ###
def save_membership_obj(membership_obj_new:Membership_Base): def save_membership_type_obj(membership_type_obj_new:Membership_Type_Base):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
return membership_id return membership_type_id
# ### END ### API Membership Methods ### save_membership_obj() ### # ### END ### API Membership Type Methods ### save_membership_type_obj() ###
# ### BEGIN ### API Membership Methods ### load_membership_obj() ### # ### BEGIN ### API Membership Type Methods ### load_membership_type_obj() ###
def load_membership_obj( def load_membership_type_obj(
membership_id:int|str, membership_type_id:int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True, by_alias: bool = True,
exclude_unset: bool = True, exclude_unset: bool = True,
@@ -34,48 +34,47 @@ def load_membership_obj(
inc_address: bool = False, inc_address: bool = False,
inc_contact: bool = False, inc_contact: bool = False,
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, inc_membership_group_list: bool = False, # under membership_member
inc_membership_member_list: bool = False, inc_membership_member_list: bool = False,
inc_membership_profile: bool = False, inc_membership_member_profile: bool = False, # under membership_member
inc_organization: bool = False, inc_organization: bool = False,
inc_person: bool = False, inc_person: bool = False,
inc_product: bool = False, inc_product: bool = False, # is this needed?
inc_product_list: bool = False, inc_product_list: bool = False,
inc_user: bool = False, inc_user: bool = False,
) -> Membership_Base: ) -> Membership_Type_Base:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if membership_id := redis_lookup_id_random(record_id_random=membership_id, table_name='membership'): pass if membership_type_id := redis_lookup_id_random(record_id_random=membership_type_id, table_name='membership_type'): pass
else: return False else: return False
if membership_rec := sql_select(table_name='v_membership', record_id=membership_id): pass if membership_type_rec := sql_select(table_name='v_membership_type', record_id=membership_type_id): pass
else: return False else: return False
log.debug(membership_rec) log.debug(membership_type_rec)
try: try:
membership_obj = Membership_Base(**membership_rec) membership_type_obj = Membership_Type_Base(**membership_type_rec)
log.debug(membership_obj) log.debug(membership_type_obj)
except ValidationError as e: except ValidationError as e:
log.error(e.json()) log.error(e.json())
# Updated 2021-06-18 # Updated 2021-06-18
if inc_membership_cfg: if inc_membership_cfg:
membership_cfg_result = load_membership_cfg_obj( membership_cfg_result = load_membership_cfg_obj(
account_id = membership_rec.get('account_id', None), account_id = membership_type_rec.get('account_id', None),
by_alias = by_alias, by_alias = by_alias,
exclude_unset = exclude_unset, exclude_unset = exclude_unset,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
enabled = enabled,
) )
membership_rec['cfg'] = membership_cfg_result membership_type_rec['cfg'] = membership_cfg_result
# Updated 2021-06-18 # Updated 2021-06-18
if inc_membership_member_list: if inc_membership_member_list:
if membership_member_rec_list_result := get_membership_member_rec_list( if membership_member_rec_list_result := get_membership_member_rec_list(
for_obj_type = 'membership', for_obj_type = 'membership_type',
for_obj_id = membership_id, for_obj_id = membership_type_id,
limit = limit, limit = limit,
enabled = enabled, enabled = enabled,
): ):
@@ -90,21 +89,21 @@ def load_membership_obj(
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
enabled = enabled, enabled = enabled,
inc_membership_group_list = inc_membership_group_list, inc_membership_group_list = inc_membership_group_list,
inc_membership_profile = inc_membership_profile, inc_membership_member_profile = inc_membership_member_profile,
inc_organization = inc_organization, inc_organization = inc_organization,
inc_person = inc_person, inc_person = inc_person,
inc_product = inc_product, # inc_product = inc_product,
inc_user = inc_user, inc_user = inc_user,
) )
) )
membership_obj.membership_member_list = membership_member_result_list membership_type_obj.membership_member_list = membership_member_result_list
else: membership_obj.membership_member_list = [] else: membership_type_obj.membership_member_list = []
# Updated 2021-06-18 # Updated 2021-06-18
if inc_product_list: if inc_product_list:
if product_rec_list_result := get_product_rec_list( if product_rec_list_result := get_product_rec_list(
for_obj_type = 'membership', for_obj_type = 'membership_type',
for_obj_id = membership_id, for_obj_id = membership_type_id,
limit = limit, limit = limit,
enabled = enabled, enabled = enabled,
): ):
@@ -118,17 +117,17 @@ def load_membership_obj(
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
) )
) )
membership_obj.product_list = product_result_list membership_type_obj.product_list = product_result_list
else: membership_obj.product_list = [] else: membership_type_obj.product_list = []
if model_as_dict: if model_as_dict:
return membership_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member return membership_type_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return membership_obj return membership_type_obj
# ### END ### API Membership Methods ### load_membership_obj() ### # ### END ### API Membership Type Methods ### load_membership_type_obj() ###
# ### BEGIN ### API Membership Methods ### get_membership_rec_list() ### # ### BEGIN ### API Membership Type Methods ### get_membership_type_rec_list() ###
def get_membership_rec_list( def get_membership_type_rec_list(
for_obj_type: str, for_obj_type: str,
for_obj_id: str, for_obj_id: str,
limit: int = 1000, limit: int = 1000,
@@ -161,8 +160,8 @@ def get_membership_rec_list(
sql_limit = '' sql_limit = ''
sql = f""" sql = f"""
SELECT `tbl`.id AS 'membership_id', `tbl`.id_random AS 'membership_id_random' SELECT `tbl`.id AS 'membership_type_id', `tbl`.id_random AS 'membership_type_id_random'
FROM `membership` AS `tbl` FROM `membership_type` AS `tbl`
WHERE WHERE
{sql_obj_type_id} {sql_obj_type_id}
{sql_enabled} {sql_enabled}
@@ -170,12 +169,12 @@ def get_membership_rec_list(
{sql_limit}; {sql_limit};
""" """
if membership_rec_li_result := sql_select(data=data, sql=sql, as_list=True): if membership_type_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_rec_li = membership_rec_li_result membership_type_rec_li = membership_type_rec_li_result
else: else:
membership_rec_li = [] 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_rec_li_result) log.debug(membership_type_rec_li_result)
return membership_rec_li return membership_type_rec_li
# ### END ### API Membership Methods ### get_membership_rec_list() ### # ### END ### API Membership Type Methods ### get_membership_type_rec_list() ###

View File

@@ -9,7 +9,7 @@ from app.lib_general import *
from app.models.common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.fundraising_cfg_models import Fundraising_Cfg_Base from app.models.fundraising_cfg_models import Fundraising_Cfg_Base
from app.models.membership_models import Membership_Cfg_Base from app.models.membership_cfg_models import Membership_Cfg_Base
class Account_Cfg_Base(BaseModel): class Account_Cfg_Base(BaseModel):

View File

@@ -13,7 +13,7 @@ from app.models.account_cfg_models import Account_Cfg_Base
# from app.models.contact_models import Contact_Base # from app.models.contact_models import Contact_Base
# from app.models.event_models import Event_Base # from app.models.event_models import Event_Base
from app.models.fundraising_cfg_models import Fundraising_Cfg_Base from app.models.fundraising_cfg_models import Fundraising_Cfg_Base
from app.models.membership_models import Membership_Cfg_Base from app.models.membership_cfg_models import Membership_Cfg_Base
# from app.models.person_models import Person_Base # from app.models.person_models import Person_Base
# from app.models.user_models import User_Base # from app.models.user_models import User_Base
@@ -58,6 +58,9 @@ class Account_Base(BaseModel):
hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2 hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2
journal_list: Optional[list] # Journal_Base() # Priority l3 journal_list: Optional[list] # Journal_Base() # Priority l3
membership_cfg: Optional[Membership_Cfg_Base] # Priority l2 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_type_list: Optional[list] # Membership_Type_Base() # Priority l2
order_list: Optional[list] # Order_Base() # Priority l2 order_list: Optional[list] # Order_Base() # Priority l2
organization_list: Optional[list] # Organization_Base() # Priority l3 organization_list: Optional[list] # Organization_Base() # Priority l3
page_list: Optional[list] # Page_Base() # Priority l3 page_list: Optional[list] # Page_Base() # Priority l3

View File

@@ -48,11 +48,13 @@ base_fields['fundraising_cfg_id_random'] = xxx_id_random_field_schema
base_fields['hosted_file_id_random'] = xxx_id_random_field_schema base_fields['hosted_file_id_random'] = xxx_id_random_field_schema
base_fields['journal_id_random'] = xxx_id_random_field_schema base_fields['journal_id_random'] = xxx_id_random_field_schema
base_fields['journal_entry_id_random'] = xxx_id_random_field_schema base_fields['journal_entry_id_random'] = xxx_id_random_field_schema
base_fields['membership_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_cfg_id_random'] = xxx_id_random_field_schema
base_fields['membership_group_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_id_random'] = xxx_id_random_field_schema
base_fields['membership_profile_id_random'] = xxx_id_random_field_schema base_fields['membership_member_profile_id_random'] = xxx_id_random_field_schema
base_fields['membership_type_id_random'] = xxx_id_random_field_schema
base_fields['order_cart_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_cart_line_id_random'] = xxx_id_random_field_schema
base_fields['order_id_random'] = xxx_id_random_field_schema base_fields['order_id_random'] = xxx_id_random_field_schema

View File

@@ -39,8 +39,8 @@ class Membership_Cfg_Base(BaseModel):
confirm_name: Optional[str] confirm_name: Optional[str]
# Including JSON data # Including JSON data
# extended_membership_profile: Optional[str] # 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_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_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
Membership_Cfg_Base.update_forward_refs() Membership_Cfg_Base.update_forward_refs()

View File

@@ -0,0 +1,87 @@
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_group_models import Membership_Group_Base
from app.models.membership_member_models import Membership_Member_Base
class Membership_Group_Member_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',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
#alias='membership_group_member_id'
)
membership_group_id_random: Optional[str]
membership_group_id: Optional[int]
membership_member_id_random: Optional[str]
membership_member_id: Optional[int]
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_group: Optional[Membership_Group_Base]
membership_member: Optional[Membership_Member_Base]
_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):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True)
def membership_group_member_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 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_member_id', always=True)
def membership_member_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')
return None
class Config:
underscore_attrs_are_private = True
fields = base_fields
# Membership_Base.update_forward_refs()

View File

@@ -8,7 +8,8 @@ from app.db_sql import redis_lookup_id_random
from app.lib_general import log, logging from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.membership_models import Membership_Base from app.models.membership_cfg_models import Membership_Cfg_Base
# from app.models.membership_type_models import Membership_Type_Base
class Membership_Group_Base(BaseModel): class Membership_Group_Base(BaseModel):
@@ -23,8 +24,10 @@ class Membership_Group_Base(BaseModel):
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_group_id' #alias='membership_group_id'
) )
membership_id_random: Optional[str] account_id_random: Optional[str]
membership_id: Optional[int] account_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_random: Optional[str]
parent_membership_group_id: Optional[int] parent_membership_group_id: Optional[int]
@@ -32,13 +35,18 @@ class Membership_Group_Base(BaseModel):
overview: Optional[str] overview: Optional[str]
description: Optional[str] description: Optional[str]
expire_in_days: Optional[int]
notes: Optional[str] notes: Optional[str]
created_on: Optional[datetime.datetime] = None created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
# Including other related objects # Including other related objects
membership: Optional[Membership_Base] # The membership option they currently have cfg: Optional[Membership_Cfg_Base]
parent_membership_group: Optional[Membership_Group_Base] # membership_type: Optional[Membership_Type_Base] # The membership option/type they currently have
membership_group_member_list: Optional[list] # Membership_Group_Member_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
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
@@ -61,13 +69,22 @@ class Membership_Group_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group') return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group')
return None return None
@validator('membership_id', always=True) @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_type_id', always=True)
def membership_lookup(cls, v, values, **kwargs): def membership_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
if values['membership_id_random']: if values['membership_type_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_id_random'], table_name='membership') return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
return None return None
@validator('parent_membership_group_id', always=True) @validator('parent_membership_group_id', always=True)

View File

@@ -8,9 +8,9 @@ from app.db_sql import redis_lookup_id_random
from app.lib_general import log, logging from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.membership_models import Membership_Base
from app.models.membership_cfg_models import Membership_Cfg_Base from app.models.membership_cfg_models import Membership_Cfg_Base
from app.models.membership_profile_models import Membership_Profile_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.person_models import Person_Base
from app.models.user_models import User_Base from app.models.user_models import User_Base
@@ -30,8 +30,8 @@ class Membership_Member_Base(BaseModel):
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]
membership_id_random: Optional[str] membership_type_id_random: Optional[str]
membership_id: Optional[int] # NOTE: This is not optional membership_type_id: Optional[int] # NOTE: This is not optional
person_id_random: Optional[str] person_id_random: Optional[str]
person_id: Optional[int] person_id: Optional[int]
product_id_random: Optional[str] product_id_random: Optional[str]
@@ -64,11 +64,12 @@ class Membership_Member_Base(BaseModel):
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
# Including other related objects # Including other related objects
membership: Optional[Membership_Base] # The membership option they currently have membership_type: Optional[Membership_Type_Base] # The membership option they currently have
membership_cfg: Optional[Membership_Cfg_Base] cfg: Optional[Membership_Cfg_Base]
membership_group_list: Optional[list] # Membership_Group_Base() The membership groups they are a part of membership_group_list: Optional[list] # Membership_Group_Base() The membership groups they are a part of
membership_profile: Optional[Membership_Profile_Base] membership_member_profile: Optional[Membership_Member_Profile_Base]
person: Optional[Person_Base] person: Optional[Person_Base]
# product: Optional[Product_Base] # The product used to become a member?
user: Optional[User_Base] user: Optional[User_Base]
extended_member_profile: Optional[dict] = {} extended_member_profile: Optional[dict] = {}
@@ -102,13 +103,13 @@ class Membership_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
return None return None
@validator('membership_id', always=True) @validator('membership_type_id', always=True)
def membership_id_lookup(cls, v, values, **kwargs): def membership_type_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
if values['membership_id_random']: if values['membership_type_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_id_random'], table_name='membership') return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
return None return None
@validator('person_id', always=True) @validator('person_id', always=True)
@@ -120,14 +121,14 @@ class Membership_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person') return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None return None
@validator('product_id', always=True) # @validator('product_id', always=True)
def product_id_lookup(cls, v, values, **kwargs): # def product_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) # log.setLevel(logging.WARNING)
log.debug(locals()) # log.debug(locals())
if values['product_id_random']: # if values['product_id_random']:
return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product') # return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
return None # return None
@validator('user_id', always=True) @validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs): def user_id_lookup(cls, v, values, **kwargs):

View File

@@ -9,26 +9,26 @@ from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.contact_models import Contact_Base from app.models.contact_models import Contact_Base
from app.models.membership_models import Membership_Base from app.models.membership_type_models import Membership_Type_Base
from app.models.organization_models import Organization_Base from app.models.organization_models import Organization_Base
class Membership_Profile_Base(BaseModel): class Membership_Member_Profile_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
id_random: Optional[str] = Field( id_random: Optional[str] = Field(
**base_fields['membership_profile_id_random'], **base_fields['membership_member_profile_id_random'],
alias='membership_profile_id_random', alias='membership_member_profile_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_profile_id' #alias='membership_member_profile_id'
) )
contact_id_random: Optional[str] contact_id_random: Optional[str]
contact_id: Optional[int] contact_id: Optional[int]
membership_id_random: Optional[str] # membership_type_id_random: Optional[str]
membership_id: Optional[int] # membership_type_id: Optional[int]
organization_id_random: Optional[str] organization_id_random: Optional[str]
organization_id: Optional[int] organization_id: Optional[int]
@@ -49,12 +49,12 @@ class Membership_Profile_Base(BaseModel):
# Including other related objects # Including other related objects
contact: Optional[Contact_Base] contact: Optional[Contact_Base]
organization: Optional[Organization_Base] = Organization_Base() organization: Optional[Organization_Base]
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_profile_id_random', always=True) #@validator('membership_member_profile_id_random', always=True)
def membership_profile_id_random_copy(cls, v, values, **kwargs): def membership_member_profile_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
@@ -63,23 +63,23 @@ class Membership_Profile_Base(BaseModel):
return None return None
@validator('id', always=True) @validator('id', always=True)
def membership_profile_id_lookup(cls, v, values, **kwargs): def membership_member_profile_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
if values['id_random']: if values['id_random']:
log.debug(values['id_random']) log.debug(values['id_random'])
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_profile') return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member_profile')
return None return None
@validator('membership_id', always=True) # @validator('membership_type_id', always=True)
def membership_lookup(cls, v, values, **kwargs): # def membership_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) # log.setLevel(logging.WARNING)
log.debug(locals()) # log.debug(locals())
if values['membership_id_random']: # if values['membership_type_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_id_random'], table_name='membership') # return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
return None # return None
@validator('contact_id', always=True) @validator('contact_id', always=True)
def contact_id_lookup(cls, v, values, **kwargs): def contact_id_lookup(cls, v, values, **kwargs):

View File

@@ -11,17 +11,17 @@ 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_cfg_models import Membership_Cfg_Base
class Membership_Base(BaseModel): class Membership_Type_Base(BaseModel):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
id_random: Optional[str] = Field( id_random: Optional[str] = Field(
**base_fields['membership_id_random'], **base_fields['membership_type_id_random'],
alias='membership_id_random', alias='membership_type_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='membership_id' #alias='membership_type_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
@@ -69,14 +69,14 @@ class Membership_Base(BaseModel):
# additional_terms_conditions: Optional[dict] = {} # Is this useful? # additional_terms_conditions: Optional[dict] = {} # Is this useful?
# Including other related objects # Including other related objects
cfg: Optional[Membership_Cfg_Base] = Membership_Cfg_Base() cfg: Optional[Membership_Cfg_Base]
membership_member_list: Optional[list] # Membership_Member_Base() List of membership members membership_member_list: Optional[list] # Membership_Member_Base() List of membership members
product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option 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) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_id_random', always=True) #@validator('membership_type_id_random', always=True)
def membership_id_random_copy(cls, v, values, **kwargs): def membership_type_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
@@ -85,12 +85,12 @@ class Membership_Base(BaseModel):
return None return None
@validator('id', always=True) @validator('id', always=True)
def membership_id_lookup(cls, v, values, **kwargs): def membership_type_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
log.debug(locals()) log.debug(locals())
if values['id_random']: if values['id_random']:
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership') return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_type')
return None return None
# @validator('account_id', always=True) # @validator('account_id', always=True)
@@ -102,4 +102,4 @@ class Membership_Base(BaseModel):
# return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account') # return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
# return None # return None
# Membership_Base.update_forward_refs() # Membership_Type_Base.update_forward_refs()

View File

@@ -141,10 +141,14 @@ async def get_account_obj_new(
inc_hosted_file_link_list: bool = False, inc_hosted_file_link_list: bool = False,
inc_journal_list: bool = False, inc_journal_list: bool = False,
inc_journal_entry_list: bool = False, inc_journal_entry_list: bool = False,
# inc_membership: bool = False,
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_list: bool = False, # inc_membership_group: bool = False,
inc_membership_group_list: bool = False,
inc_membership_member: bool = False,
inc_membership_member_list: bool = False, inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False,
# inc_membership_type: bool = False,
inc_membership_type_list: bool = False,
# inc_order: bool = False, # inc_order: bool = False,
inc_order_list: bool = False, inc_order_list: bool = False,
# inc_order_cart: bool = False, # inc_order_cart: bool = False,
@@ -212,10 +216,12 @@ async def get_account_obj_new(
inc_hosted_file_link_list = inc_hosted_file_link_list, inc_hosted_file_link_list = inc_hosted_file_link_list,
inc_journal_list = inc_journal_list, inc_journal_list = inc_journal_list,
inc_journal_entry_list = inc_journal_entry_list, inc_journal_entry_list = inc_journal_entry_list,
# inc_membership = inc_membership,
inc_membership_cfg = inc_membership_cfg, inc_membership_cfg = inc_membership_cfg,
inc_membership_list = inc_membership_list, 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_list = inc_membership_member_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_type_list = inc_membership_type_list,
# inc_order = inc_order, # inc_order = inc_order,
inc_order_list = inc_order_list, inc_order_list = inc_order_list,
# inc_order_cart = inc_order_cart, # inc_order_cart = inc_order_cart,

View File

@@ -31,7 +31,11 @@ from app.models.event_track_models import *
from app.models.hosted_file_models import * from app.models.hosted_file_models import *
from app.models.journal_models import * from app.models.journal_models import *
from app.models.journal_entry_models import * from app.models.journal_entry_models import *
from app.models.membership_models import * 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_type_models import *
from app.models.order_models import * from app.models.order_models import *
from app.models.order_cart_models import * from app.models.order_cart_models import *
from app.models.organization_models import * from app.models.organization_models import *
@@ -82,8 +86,12 @@ obj_type_li['journal'] = {'table_name': 'v_journal', 'base_name': Journal_Base}
obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'base_name': Journal_Entry_Base} obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'base_name': Journal_Entry_Base}
#obj_type_li['log'] = {'table_name': 'log', 'base_name': Log_Base} #'v_log' #obj_type_li['log'] = {'table_name': 'log', 'base_name': Log_Base} #'v_log'
#obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base} #obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base}
obj_type_li['membership'] = {'table_name': 'v_membership', 'base_name': Membership_Base}
obj_type_li['membership_cfg'] = {'table_name': 'v_membership_cfg', 'base_name': Membership_Cfg_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_type'] = {'table_name': 'v_membership_type', 'base_name': Membership_Type_Base}
#obj_type_li['message'] = {'table_name': 'message', 'base_name': Message_Base} #'v_message' #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'] = {'table_name': 'v_order', 'base_name': Order_Base}
obj_type_li['order_cart'] = {'table_name': 'v_order_cart', 'base_name': Order_Cart_Base} obj_type_li['order_cart'] = {'table_name': 'v_order_cart', 'base_name': Order_Cart_Base}
@@ -124,8 +132,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_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['stripe_log'] = {'table_name': 'stripe_log', 'base_name': Stipe_Log_Base}
# obj_type_li['c_idda_membership_profile'] = {'table_name': 'c_idda_membership_profile', 'base_name': C_Idda_Membership_Profile_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_profile'] = {'table_name': 'c_osit_demo_membership_profile', 'base_name': C_Osit_Demo_Membership_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}
router = APIRouter() router = APIRouter()

View File

@@ -0,0 +1,251 @@
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_group_methods import load_membership_group_obj
from app.models.membership_group_models import Membership_Group_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@router.post('', response_model=Resp_Body_Base)
async def post_membership_group_obj(
obj: Membership_Group_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_group'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type=obj_type,
data=obj_data_dict,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
@router.patch('/{obj_id}', response_model=Resp_Body_Base)
async def patch_membership_group_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
obj: Membership_Group_Base = None,
#x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_group'
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
result = patch_obj_template(
obj_type=obj_type,
data=obj_data_dict,
obj_id=obj_id,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
@router.get('/list', response_model=Resp_Body_Base)
async def get_membership_group_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_group'
result = get_obj_li_template(
obj_type=obj_type,
for_obj_type=for_obj_type,
for_obj_id=for_obj_id,
by_alias=True,
exclude_unset=True,
)
return result
# Look up is only for account, person, or user records
@router.get('/lookup', response_model=Resp_Body_Base)
async def lookup_membership_group_obj(
for_obj_id: Union[int,str],
for_obj_type: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...),
inc_membership_member_profile: bool = True,
inc_membership_cfg: bool = True,
inc_extended_profile: bool = True,
inc_person: bool = True,
inc_user: bool = True,
by_alias: bool = True,
exclude_unset: bool = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_group'
base_name = Membership_Group_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
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
data = {}
as_list = False
if for_obj_type == 'account' and for_obj_id:
data['account_id'] = for_obj_id
sql_where_for_obj_type = """`membership_group`.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_group`.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_group`.user_id = :user_id"""
sql_limit = 'LIMIT 1'
elif for_obj_type == 'membership_group' and for_obj_id:
data['membership_group_id'] = for_obj_id
sql_where_for_obj_type = """`membership_group`.id = :membership_group_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_group_id', id_random AS 'membership_group_id_random'
FROM `membership_group` AS `membership_group`
WHERE {sql_where_for_obj_type}
{sql_limit}
"""
# This will return a list if selecting by account ID
membership_group_obj_result = sql_select(data=data, sql=sql, as_list=as_list)
if isinstance(membership_group_obj_result, dict):
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_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset)
data = membership_group_obj
elif isinstance(membership_group_obj_result, list):
membership_group_obj_li = []
for membership_group_obj in membership_group_obj_result:
membership_group_id = membership_group_obj.get('membership_group_id', None)
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_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset)
)
data = membership_group_obj_li
else:
log.debug(membership_group_obj_result)
return mk_resp(data=None, status_code=404) # Not Found
return mk_resp(data=data)
# ### BEGIN ### API Membership Group ### get_membership_group_obj() ###
# Working well as of 2021-06-21. Using as a template for other routes.
@router.get('/{membership_group_id}', response_model=Resp_Body_Base)
async def get_membership_group_obj(
membership_group_id: str = Query(..., min_length=1, max_length=22),
enabled: str = 'enabled', # For now this covers any included objects or object lists
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_group_member_list: bool = False, # List of members belonging to this group
inc_membership_member_profile: bool = False, # Per member
inc_organization: bool = False, # Per member
inc_person: bool = False, # Per member
inc_product: bool = False, # Per member
inc_product_list: bool = False,
inc_user: bool = False, # Per member
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 membership_group_id := redis_lookup_id_random(record_id_random=membership_group_id, table_name='membership_group'): pass
else:
return mk_resp(data=None, status_code=404)
if membership_group_result := load_membership_group_result(
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
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_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_group_result)
# ### END ### API Membership ### get_membership_group_obj() ###
@router.delete('/{obj_id}', response_model=Resp_Body_Base)
async def delete_membership_group_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_group'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result

View File

@@ -0,0 +1,251 @@
import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_member_methods import load_membership_member_obj
from app.models.membership_member_models import Membership_Member_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@router.post('', response_model=Resp_Body_Base)
async def post_membership_member_obj(
obj: Membership_Member_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type=obj_type,
data=obj_data_dict,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
@router.patch('/{obj_id}', response_model=Resp_Body_Base)
async def patch_membership_member_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
obj: Membership_Member_Base = None,
#x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
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
result = patch_obj_template(
obj_type=obj_type,
data=obj_data_dict,
obj_id=obj_id,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
@router.get('/list', response_model=Resp_Body_Base)
async def get_membership_member_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
result = get_obj_li_template(
obj_type=obj_type,
for_obj_type=for_obj_type,
for_obj_id=for_obj_id,
by_alias=True,
exclude_unset=True,
)
return result
# Look up is only for account, person, or user records
@router.get('/lookup', response_model=Resp_Body_Base)
async def lookup_membership_member_obj(
for_obj_id: Union[int,str],
for_obj_type: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...),
inc_membership_member_profile: bool = True,
inc_membership_cfg: bool = True,
inc_extended_profile: bool = True,
inc_person: bool = True,
inc_user: bool = True,
by_alias: bool = True,
exclude_unset: bool = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
base_name = Membership_Member_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
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
data = {}
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_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_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_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"""
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`
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,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
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,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset)
)
data = membership_member_obj_li
else:
log.debug(membership_member_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() ###
# Working well as of 2021-06-21. Using as a template for other routes.
@router.get('/{membership_member_id}', response_model=Resp_Body_Base)
async def get_membership_member_obj(
membership_member_id: str = Query(..., min_length=1, max_length=22),
enabled: str = 'enabled', # For now this covers any included objects or object lists
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_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_member_profile: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
# inc_product: bool = False,
# inc_product_list: bool = False,
inc_user: bool = False, # Per member
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 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)
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() ###
@router.delete('/{obj_id}', response_model=Resp_Body_Base)
async def delete_membership_member_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result

View File

@@ -9,9 +9,9 @@ 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.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_methods import load_membership_obj from app.methods.membership_type_methods import load_membership_type_obj
from app.models.membership_models import Membership_Base from app.models.membership_type_models import Membership_Type_Base
from app.models.response_models import Resp_Body_Base, mk_resp from app.models.response_models import Resp_Body_Base, mk_resp
@@ -19,8 +19,8 @@ router = APIRouter()
@router.post('', response_model=Resp_Body_Base) @router.post('', response_model=Resp_Body_Base)
async def post_membership_obj( async def post_membership_type_obj(
obj: Membership_Base, obj: Membership_Type_Base,
x_account_id: str = Header(...), x_account_id: str = Header(...),
return_obj: Optional[bool] = True, return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
@@ -29,7 +29,7 @@ async def post_membership_obj(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
obj_type = 'membership' obj_type = 'membership_type'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template( result = post_obj_template(
obj_type=obj_type, obj_type=obj_type,
@@ -42,9 +42,9 @@ async def post_membership_obj(
@router.patch('/{obj_id}', response_model=Resp_Body_Base) @router.patch('/{obj_id}', response_model=Resp_Body_Base)
async def patch_membership_obj( async def patch_membership_type_obj(
obj_id: str = Query(..., min_length=1, max_length=22), obj_id: str = Query(..., min_length=1, max_length=22),
obj: Membership_Base = None, obj: Membership_Type_Base = None,
#x_account_id: Optional[str] = Header(..., ), #x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True, return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
@@ -53,7 +53,7 @@ async def patch_membership_obj(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
obj_type = 'membership' obj_type = 'membership_type'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) 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'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type)
obj_data_dict['id_random'] = obj_id obj_data_dict['id_random'] = obj_id
@@ -69,7 +69,7 @@ async def patch_membership_obj(
@router.get('/list', response_model=Resp_Body_Base) @router.get('/list', response_model=Resp_Body_Base)
async def get_membership_obj_li( async def get_membership_type_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), 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), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...), x_account_id: str = Header(...),
@@ -79,7 +79,7 @@ async def get_membership_obj_li(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
obj_type = 'membership' obj_type = 'membership_type'
result = get_obj_li_template( result = get_obj_li_template(
obj_type=obj_type, obj_type=obj_type,
for_obj_type=for_obj_type, for_obj_type=for_obj_type,
@@ -92,11 +92,11 @@ async def get_membership_obj_li(
# Look up is only for account, person, or user records # Look up is only for account, person, or user records
@router.get('/lookup', response_model=Resp_Body_Base) @router.get('/lookup', response_model=Resp_Body_Base)
async def lookup_membership_obj( async def lookup_membership_type_obj(
for_obj_id: Union[int,str], for_obj_id: Union[int,str],
for_obj_type: str = Query(..., min_length=2, max_length=50), for_obj_type: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...), x_account_id: str = Header(...),
inc_membership_profile: bool = True, inc_membership_member_profile: bool = True,
inc_membership_cfg: bool = True, inc_membership_cfg: bool = True,
inc_extended_profile: bool = True, inc_extended_profile: bool = True,
inc_person: bool = True, inc_person: bool = True,
@@ -107,8 +107,8 @@ async def lookup_membership_obj(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
obj_type = 'membership' obj_type = 'membership_type'
base_name = Membership_Base base_name = Membership_Type_Base
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 mk_resp(data=False, status_code=404) # Not Found else: return mk_resp(data=False, status_code=404) # Not Found
@@ -118,72 +118,72 @@ async def lookup_membership_obj(
as_list = False as_list = False
if for_obj_type == 'account' and for_obj_id: if for_obj_type == 'account' and for_obj_id:
data['account_id'] = for_obj_id data['account_id'] = for_obj_id
sql_where_for_obj_type = """`membership`.account_id = :account_id""" sql_where_for_obj_type = """`membership_type`.account_id = :account_id"""
sql_limit = '' sql_limit = ''
as_list = True as_list = True
elif for_obj_type == 'person' and for_obj_id: elif for_obj_type == 'person' and for_obj_id:
data['person_id'] = for_obj_id data['person_id'] = for_obj_id
sql_where_for_obj_type = """`membership`.person_id = :person_id""" sql_where_for_obj_type = """`membership_type`.person_id = :person_id"""
sql_limit = 'LIMIT 1' sql_limit = 'LIMIT 1'
elif for_obj_type == 'user' and for_obj_id: elif for_obj_type == 'user' and for_obj_id:
data['user_id'] = for_obj_id data['user_id'] = for_obj_id
sql_where_for_obj_type = """`membership`.user_id = :user_id""" sql_where_for_obj_type = """`membership_type`.user_id = :user_id"""
sql_limit = 'LIMIT 1' sql_limit = 'LIMIT 1'
elif for_obj_type == 'membership' and for_obj_id: elif for_obj_type == 'membership_type' and for_obj_id:
data['membership_id'] = for_obj_id data['membership_type_id'] = for_obj_id
sql_where_for_obj_type = """`membership`.id = :membership_id""" sql_where_for_obj_type = """`membership_type`.id = :membership_type_id"""
sql_limit = 'LIMIT 1' sql_limit = 'LIMIT 1'
else: else:
log.debug(f'Object type={for_obj_type}; Object ID={for_obj_id}') log.debug(f'Object type={for_obj_type}; Object ID={for_obj_id}')
return mk_resp(data=False, status_code=400) # Bad Request return mk_resp(data=False, status_code=400) # Bad Request
sql = f""" sql = f"""
SELECT id AS 'membership_id', id_random AS 'membership_id_random' SELECT id AS 'membership_type_id', id_random AS 'membership_type_id_random'
FROM `membership` AS `membership` FROM `membership_type` AS `membership_type`
WHERE {sql_where_for_obj_type} WHERE {sql_where_for_obj_type}
{sql_limit} {sql_limit}
""" """
# This will return a list if selecting by account ID # This will return a list if selecting by account ID
membership_obj_result = sql_select(data=data, sql=sql, as_list=as_list) membership_type_obj_result = sql_select(data=data, sql=sql, as_list=as_list)
if isinstance(membership_obj_result, dict): if isinstance(membership_type_obj_result, dict):
membership_id = membership_obj_result.get('membership_id', None) membership_type_id = membership_type_obj_result.get('membership_type_id', None)
membership_obj = load_membership_obj( membership_type_obj = load_membership_type_obj(
membership_id=membership_id, membership_type_id = membership_type_id,
inc_membership_profile=inc_membership_profile, inc_membership_member_profile = inc_membership_member_profile,
inc_membership_cfg=inc_membership_cfg, inc_membership_cfg = inc_membership_cfg,
inc_extended_profile=inc_extended_profile, inc_extended_profile = inc_extended_profile,
inc_person=inc_person, inc_person = inc_person,
inc_user=inc_user, inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset) ).dict(by_alias=by_alias, exclude_unset=exclude_unset)
data = membership_obj data = membership_type_obj
elif isinstance(membership_obj_result, list): elif isinstance(membership_type_obj_result, list):
membership_obj_li = [] membership_type_obj_li = []
for membership_obj in membership_obj_result: for membership_type_obj in membership_type_obj_result:
membership_id = membership_obj.get('membership_id', None) membership_type_id = membership_type_obj.get('membership_type_id', None)
membership_obj_li.append( membership_type_obj_li.append(
load_membership_obj( load_membership_type_obj(
membership_id=membership_id, membership_type_id = membership_type_id,
inc_membership_profile=inc_membership_profile, inc_membership_member_profile = inc_membership_member_profile,
inc_membership_cfg=inc_membership_cfg, inc_membership_cfg = inc_membership_cfg,
inc_extended_profile=inc_extended_profile, inc_extended_profile = inc_extended_profile,
inc_person=inc_person, inc_person = inc_person,
inc_user=inc_user, inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset) ).dict(by_alias=by_alias, exclude_unset=exclude_unset)
) )
data = membership_obj_li data = membership_type_obj_li
else: else:
log.debug(membership_obj_result) log.debug(membership_type_obj_result)
return mk_resp(data=None, status_code=404) # Not Found return mk_resp(data=None, status_code=404) # Not Found
return mk_resp(data=data) return mk_resp(data=data)
# ### BEGIN ### API Membership ### get_membership_obj() ### # ### BEGIN ### API Membership Type ### get_membership_type_obj() ###
# Working well as of 2021-06-04. Using as a template for other routes. # Working well as of 2021-06-21. Using as a template for other routes.
@router.get('/{membership_id}', response_model=Resp_Body_Base) @router.get('/{membership_type_id}', response_model=Resp_Body_Base)
async def get_membership_obj( async def get_membership_type_obj(
membership_id: str = Query(..., min_length=1, max_length=22), membership_type_id: str = Query(..., min_length=1, max_length=22),
enabled: str = 'enabled', # For now this covers any included objects or object lists 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 limit: int = 500, # For now this covers any included objects or object lists
inc_address: bool = False, # Per member inc_address: bool = False, # Per member
@@ -191,7 +191,7 @@ async def get_membership_obj(
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # Per member inc_membership_group_list: bool = False, # Per member
inc_membership_member_list: bool = False, inc_membership_member_list: bool = False,
inc_membership_profile: bool = False, # Per member inc_membership_member_profile: bool = False, # Per member
inc_organization: bool = False, # Per member inc_organization: bool = False, # Per member
inc_person: bool = False, # Per member inc_person: bool = False, # Per member
inc_product: bool = False, # Per member inc_product: bool = False, # Per member
@@ -204,38 +204,39 @@ async def get_membership_obj(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if membership_id := redis_lookup_id_random(record_id_random=membership_id, table_name='membership'): pass if membership_type_id := redis_lookup_id_random(record_id_random=membership_type_id, table_name='membership_type'): pass
else: else:
return mk_resp(data=None, status_code=404) return mk_resp(data=None, status_code=404)
if membership_obj := load_membership_obj( if membership_type_result := load_membership_type_obj(
membership_id = membership_id, membership_type_id = membership_type_id,
enabled = enabled, limit = limit,
# model_as_dict = model_as_dict, by_alias = by_alias,
limit = limit, exclude_unset = exclude_unset,
inc_address = inc_address, # model_as_dict = model_as_dict, # NOTE: returning model as a dict
inc_contact = inc_contact, enabled = enabled,
inc_membership_cfg = inc_membership_cfg, inc_address = inc_address,
inc_membership_group_list = inc_membership_group_list, inc_contact = inc_contact,
inc_membership_member_list = inc_membership_member_list, inc_membership_cfg = inc_membership_cfg,
inc_membership_profile = inc_membership_profile, inc_membership_group_list = inc_membership_group_list,
inc_organization = inc_organization, inc_membership_member_list = inc_membership_member_list,
inc_person = inc_person, inc_membership_member_profile = inc_membership_member_profile,
inc_product = inc_product, inc_organization = inc_organization,
inc_product_list = inc_product_list, inc_person = inc_person,
inc_user = inc_user, inc_product = inc_product,
): inc_product_list = inc_product_list,
# membership_dict = membership_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) inc_user = inc_user,
):
pass pass
else: else:
return mk_resp(data=False, status_code=400) # Bad Request return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=membership_obj) return mk_resp(data=membership_type_result)
# ### END ### API Membership ### get_membership_obj() ### # ### END ### API Membership ### get_membership_type_obj() ###
@router.get('/{obj_id}', response_model=Resp_Body_Base) @router.get('/{obj_id}', response_model=Resp_Body_Base)
async def get_membership_obj_old( async def get_membership_type_obj_old(
obj_id: str = Query(..., min_length=1, max_length=22), obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
@@ -244,7 +245,7 @@ async def get_membership_obj_old(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
obj_type = 'membership' obj_type = 'membership_type'
result = get_obj_template( result = get_obj_template(
obj_type=obj_type, obj_type=obj_type,
obj_id=obj_id, obj_id=obj_id,
@@ -255,14 +256,14 @@ async def get_membership_obj_old(
@router.delete('/{obj_id}', response_model=Resp_Body_Base) @router.delete('/{obj_id}', response_model=Resp_Body_Base)
async def delete_membership_obj( async def delete_membership_type_obj(
obj_id: str = Query(..., min_length=1, max_length=22), obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...), x_account_id: str = Header(...),
): ):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
obj_type = 'membership' obj_type = 'membership_type'
result = delete_obj_template( result = delete_obj_template(
obj_type=obj_type, obj_type=obj_type,
obj_id=obj_id, obj_id=obj_id,

View File

@@ -104,7 +104,7 @@ async def get_product_obj_li(
sql_for_obj_type = f"""`product`.for_type = :for_obj_type AND `product`.for_id = :for_obj_id""" sql_for_obj_type = f"""`product`.for_type = :for_obj_type AND `product`.for_id = :for_obj_id"""
else: sql_for_obj_type = '' else: sql_for_obj_type = ''
if prod_type in ['event', 'event_option', 'membership', 'fundraising']: if prod_type in ['event', 'event_option', 'event_registration', 'fundraising', 'membership_group', 'membership_type']:
data['type_name'] = prod_type data['type_name'] = prod_type
sql_product_type = f"""AND product.type_name = :type_name""" sql_product_type = f"""AND product.type_name = :type_name"""