A lot of changes related to person and membership

This commit is contained in:
Scott Idem
2021-07-09 17:34:02 -04:00
parent 2b8d00551c
commit 49805f48c9
49 changed files with 1389 additions and 758 deletions

View File

@@ -880,9 +880,17 @@ def lookup_id_random_pop(obj_data:dict):
obj_data['journal_entry_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('journal_entry_file_id_random', None), table_name='journal_entry_file')
obj_data.pop('journal_entry_file_id_random')
if 'membership_entry_file_id_random' in obj_data:
obj_data['membership_entry_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_entry_file_id_random', None), table_name='membership_entry_file')
obj_data.pop('membership_entry_file_id_random')
if 'membership_group_id_random' in obj_data:
obj_data['membership_group_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_group_id_random', None), table_name='membership_group')
obj_data.pop('membership_group_id_random')
if 'membership_person_id_random' in obj_data:
obj_data['membership_person_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_person_id_random', None), table_name='membership_person')
obj_data.pop('membership_person_id_random')
if 'membership_type_id_random' in obj_data:
obj_data['membership_type_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_type_id_random', None), table_name='membership_type')
obj_data.pop('membership_type_id_random')
if 'order_id_random' in obj_data:
obj_data['order_id'] = redis_lookup_id_random(record_id_random=obj_data.get('order_id_random', None), table_name='order')

View File

@@ -18,7 +18,7 @@ from app.lib_general import log, logging
from app.log import log
# Import the routers here first:
from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_file, event_person, event_person_detail, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_group, membership_member, membership_type, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals
from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_file, event_person, event_person_detail, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_group, membership_person, membership_type, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals
from app.db_sql import db
@@ -170,9 +170,9 @@ app.include_router(
tags=['Membership Group'],
)
app.include_router(
membership_member.router,
membership_person.router,
# prefix='/membership/member',
tags=['Membership Member'],
tags=['Membership Person'],
)
app.include_router(
membership_type.router,
@@ -201,7 +201,7 @@ app.include_router(
)
app.include_router(
person.router,
prefix='/person',
# prefix='/person',
tags=['Person'],
)
app.include_router(

View File

@@ -16,7 +16,7 @@ from app.methods.hosted_file_methods import get_hosted_file_rec_list, load_hoste
from app.methods.journal_methods import get_journal_rec_list, load_journal_obj
from app.methods.membership_cfg_methods import load_membership_cfg_obj
from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj
from app.methods.order_methods import get_order_rec_list, load_order_obj
# from app.methods.order_cart_methods import get_order_cart_rec_list, load_order_cart_obj
@@ -86,10 +86,10 @@ def load_account_obj(
inc_journal_entry_list: bool = False, # Priority l3
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # List of groups for the account
inc_membership_group_member_list: bool = False, # List of members of a group
inc_membership_member: bool = False,
inc_membership_member_list: bool = False, # Priority l1
inc_membership_member_profile: bool = False,
inc_membership_group_person_list: bool = False, # List of members of a group
inc_membership_person: bool = False,
inc_membership_person_list: bool = False, # Priority l1
inc_membership_person_profile: bool = False,
# inc_membership_type: bool = False,
inc_membership_type_list: bool = False,
inc_order: bool = False,
@@ -316,8 +316,8 @@ def load_account_obj(
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_membership_member_list = inc_membership_member_list,
# inc_membership_group_member_list = inc_membership_group_member_list,
inc_membership_person_list = inc_membership_person_list,
# inc_membership_group_person_list = inc_membership_group_person_list,
inc_product_list = inc_product_list,
)
)
@@ -325,33 +325,33 @@ def load_account_obj(
else: account_obj.membership_group_list = []
# Updated 2021-06-21
if inc_membership_member_list:
if membership_member_rec_list_result := get_membership_member_rec_list(
if inc_membership_person_list:
if membership_person_rec_list_result := get_membership_person_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
limit = limit,
enabled = enabled,
):
membership_member_result_list = []
for membership_member_rec in membership_member_rec_list_result:
membership_member_result_list.append(
load_membership_member_obj(
membership_member_id = membership_member_rec.get('membership_member_id', None),
membership_person_result_list = []
for membership_person_rec in membership_person_rec_list_result:
membership_person_result_list.append(
load_membership_person_obj(
membership_person_id = membership_person_rec.get('membership_person_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member_profile = inc_membership_member_profile,
# inc_membership_member_list = inc_membership_member_list,
# inc_membership_member_list = inc_membership_member_list,
inc_membership_person_profile = inc_membership_person_profile,
# inc_membership_person_list = inc_membership_person_list,
# inc_membership_person_list = inc_membership_person_list,
# inc_product_list = inc_product_list,
inc_person = inc_person,
inc_user = inc_user,
)
)
account_obj.membership_member_list = membership_member_result_list
else: account_obj.membership_member_list = []
account_obj.membership_person_list = membership_person_result_list
else: account_obj.membership_person_list = []
# Updated 2021-06-18
if inc_membership_type_list:
@@ -371,7 +371,7 @@ def load_account_obj(
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_membership_member_list = inc_membership_member_list,
inc_membership_person_list = inc_membership_person_list,
# inc_membership_type_member_list = inc_membership_type_member_list,
inc_product_list = inc_product_list,
)
@@ -551,7 +551,7 @@ def load_account_obj(
inc_contact = inc_contact,
inc_event_list = inc_event_list,
inc_journal_list = inc_journal_list,
inc_membership_member = inc_membership_member,
inc_membership_person = inc_membership_person,
inc_order_list = inc_order_list,
inc_order_cart_list = inc_order_cart_list,
inc_organization = inc_organization,
@@ -586,10 +586,10 @@ def load_account_obj_membership_type(
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # List of groups for the account
inc_membership_group_member_list: bool = False, # List of members of a group
inc_membership_member: bool = False,
inc_membership_member_list: bool = False, # Priority l1
inc_membership_member_profile: bool = False,
inc_membership_group_person_list: bool = False, # List of members of a group
inc_membership_person: bool = False,
inc_membership_person_list: bool = False, # Priority l1
inc_membership_person_profile: bool = False,
inc_membership_type: bool = False,
inc_membership_type_list: bool = False,
inc_order: bool = False,
@@ -603,7 +603,7 @@ def load_account_obj_membership_type(
inc_user: bool = False,
inc_user_list: bool = False, # Priority l2
) -> Account_Base|dict|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
@@ -658,8 +658,8 @@ def load_account_obj_membership_type(
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_group_list = inc_membership_group_list, # per member
inc_membership_member_list = inc_membership_member_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_list = inc_membership_person_list,
inc_membership_person_profile = inc_membership_person_profile,
inc_product_list = inc_product_list,
inc_person = inc_person,
inc_user = inc_user,
@@ -690,10 +690,10 @@ def load_account_obj_membership_group(
inc_contact: bool = False,
inc_membership_cfg: bool = False,
# inc_membership_group_list: bool = False, # List of groups for the account
inc_membership_group_member_list: bool = False, # List of members of a group
inc_membership_member: bool = False,
# inc_membership_member_list: bool = False, # Priority l1
inc_membership_member_profile: bool = False,
inc_membership_group_person_list: bool = False, # List of members of a group
inc_membership_person: bool = False,
# inc_membership_person_list: bool = False, # Priority l1
inc_membership_person_profile: bool = False,
inc_membership_type: bool = False,
# inc_membership_type_list: bool = False,
# inc_order: bool = False,
@@ -760,8 +760,8 @@ def load_account_obj_membership_group(
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
# inc_membership_member_list = inc_membership_member_list,
inc_membership_group_member_list = inc_membership_group_member_list,
# inc_membership_person_list = inc_membership_person_list,
inc_membership_group_person_list = inc_membership_group_person_list,
inc_product_list = inc_product_list,
inc_person = inc_person,
inc_user = inc_user,
@@ -771,18 +771,18 @@ def load_account_obj_membership_group(
else: account_obj.membership_group_list = []
# Updated 2021-06-21
if inc_membership_member_list:
if membership_member_rec_list_result := get_membership_member_rec_list(
if inc_membership_person_list:
if membership_person_rec_list_result := get_membership_person_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
limit = limit,
enabled = enabled,
):
membership_member_result_list = []
for membership_member_rec in membership_member_rec_list_result:
membership_member_result_list.append(
load_membership_member_obj(
membership_member_id = membership_member_rec.get('membership_member_id', None),
membership_person_result_list = []
for membership_person_rec in membership_person_rec_list_result:
membership_person_result_list.append(
load_membership_person_obj(
membership_person_id = membership_person_rec.get('membership_person_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
@@ -790,14 +790,14 @@ def load_account_obj_membership_group(
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type = inc_membership_type,
inc_person = inc_person,
inc_user = inc_user,
)
)
account_obj.membership_member_list = membership_member_result_list
else: account_obj.membership_member_list = []
account_obj.membership_person_list = membership_person_result_list
else: account_obj.membership_person_list = []
# Updated 2021-06-18
if inc_membership_type_list:
@@ -819,7 +819,7 @@ def load_account_obj_membership_group(
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_member_list = inc_membership_member_list,
inc_membership_person_list = inc_membership_person_list,
# inc_membership_type_member_list = inc_membership_type_member_list,
inc_product_list = inc_product_list,
inc_person = inc_person,

View File

@@ -53,7 +53,7 @@ def get_address_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -55,7 +55,7 @@ def get_archive_content_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -78,7 +78,7 @@ def get_archive_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -15,7 +15,7 @@ from app.models.contact_models import Contact_Base
# ### BEGIN ### API Contact Methods ### load_contact_obj() ###
def load_contact_obj(
contact_id:int|str,
contact_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
@@ -23,7 +23,7 @@ def load_contact_obj(
enabled: str = 'enabled', # enabled, disabled, all
inc_address:bool=False
) -> Contact_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if contact_id := redis_lookup_id_random(record_id_random=contact_id, table_name='contact'): pass
@@ -67,10 +67,10 @@ def get_contact_rec_list(
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
@@ -108,7 +108,7 @@ def get_contact_rec_list(
contact_rec_li = contact_rec_li_result
else:
contact_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(contact_rec_li_result)
return contact_rec_li

View File

@@ -258,7 +258,7 @@ def get_event_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -261,7 +261,7 @@ def get_hosted_file_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -113,7 +113,7 @@ def get_journal_entry_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -143,7 +143,7 @@ def get_journal_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -31,9 +31,9 @@ def load_membership_cfg_obj(
): pass
else: return False
# log.debug(membership_cfg_rec)
log.debug(type(membership_cfg_rec['extended_membership_member_profile']))
log.debug(membership_cfg_rec['extended_membership_member_profile'])
membership_cfg_rec['extended_membership_member_profile'] = str(membership_cfg_rec['extended_membership_member_profile'], )
log.debug(type(membership_cfg_rec['extended_membership_person_profile']))
log.debug(membership_cfg_rec['extended_membership_person_profile'])
membership_cfg_rec['extended_membership_person_profile'] = str(membership_cfg_rec['extended_membership_person_profile'], )
try:
membership_cfg_obj = Membership_Cfg_Base(**membership_cfg_rec)

View File

@@ -1,189 +0,0 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
# from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.models.membership_group_member_models import Membership_Group_Member_Base
# ### BEGIN ### API Membership Group Member Methods ### load_membership_group_member_obj() ###
def load_membership_group_member_obj(
membership_group_member_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_group: bool = False,
inc_membership_member: bool = False,
inc_membership_member_profile: bool = False,
inc_membership_type: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
inc_user: bool = False,
) -> Membership_Group_Member_Base|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_group_member_id := redis_lookup_id_random(record_id_random=membership_group_member_id, table_name='membership_group_member'): pass
else: return False
log.debug(membership_group_member_id)
if membership_group_member_rec := sql_select(table_name='v_membership_group_member', record_id=membership_group_member_id):
log.debug(membership_group_member_rec)
else: return False
log.debug(membership_group_member_rec)
try:
membership_group_member_obj = Membership_Group_Member_Base(**membership_group_member_rec)
log.debug(membership_group_member_obj)
except ValidationError as e:
log.error(e.json())
# Updated 2021-06-21
if inc_membership_member:
from app.methods.membership_member_methods import load_membership_member_obj
membership_member_id = membership_group_member_rec.get('membership_member_id', None)
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_id)
if membership_member_result := load_membership_member_obj(
membership_member_id = membership_member_id,
limit = limit,
enabled = enabled,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_type = inc_membership_type,
inc_organization = inc_organization,
inc_person = inc_person,
inc_user = inc_user,
):
membership_group_member_obj.membership_member = membership_member_result
else: membership_group_member_obj.membership_member = None
log.debug(membership_member_result)
if model_as_dict:
return membership_group_member_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return membership_group_member_obj
# ### END ### API Membership Group Member Methods ### load_membership_group_member_obj() ###
# ### BEGIN ### API Membership Group Member Methods ### get_membership_group_member_rec_list() ###
def get_membership_group_member_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'membership_group_member_id', `tbl`.id_random AS 'membership_group_member_id_random'
FROM `membership_group_member` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql)
if membership_group_member_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_group_member_rec_li = membership_group_member_rec_li_result
else:
membership_group_member_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_group_member_rec_li_result)
return membership_group_member_rec_li
# ### END ### API Membership Group Member Methods ### get_membership_group_member_rec_list() ###
# ### BEGIN ### API Membership Group Member Methods ### create_membership_group_member_obj() ###
def create_membership_group_member_obj(membership_group_member_obj_new:Membership_Group_Member_Base) -> bool|int:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
membership_group_member_obj_data = membership_group_member_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'})
if membership_group_member_obj_in_result := sql_insert(
data=membership_group_member_obj_data,
table_name='membership_group_member',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(membership_group_member_obj_in_result)
membership_group_member_id = membership_group_member_obj_in_result
log.debug(f'New membership_group_member_id: {membership_group_member_id}')
return membership_group_member_id
# ### END ### API Membership Group Member Methods ### create_membership_group_member_obj() ###
# ### BEGIN ### API Membership Group Member Methods ### update_membership_group_member_obj() ###
def update_membership_group_member_obj(
membership_group_member_id: int|str, # This allows for updating of the id_random value.
membership_group_member_obj_up: Membership_Group_Member_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_group_member_id := redis_lookup_id_random(record_id_random=membership_group_member_id, table_name='membership_group_member'): pass
else: return False
membership_group_member_obj_up.id = membership_group_member_id
log.debug(membership_group_member_obj_up)
log.debug(membership_group_member_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(membership_group_member_obj_up.dict(by_alias=False, exclude_unset=False))
membership_group_member_dict_up = membership_group_member_obj_up.dict(by_alias=False, exclude_unset=True)
log.debug(membership_group_member_dict_up)
if membership_group_member_obj_up_result := sql_update(data=membership_group_member_dict_up, table_name='membership_group_member', rm_id_random=True):
log.debug(membership_group_member_obj_up_result)
return True
else:
log.debug(membership_group_member_obj_up_result)
return False
# ### END ### API Membership Group Member Methods ### update_membership_group_member_obj() ###

View File

@@ -8,7 +8,7 @@ from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_updat
from app.lib_general import log, logging
from app.methods.membership_cfg_methods import load_membership_cfg_obj
from app.methods.membership_group_member_methods import get_membership_group_member_rec_list, load_membership_group_member_obj
from app.methods.membership_group_person_methods import get_membership_group_person_rec_list, load_membership_group_person_obj
from app.methods.product_methods import get_product_rec_list, load_product_obj
from app.models.membership_group_models import Membership_Group_Base
@@ -26,9 +26,9 @@ def load_membership_group_obj(
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group_member_list: bool = False, # List of members that are a part of this group
inc_membership_member: bool = False,
inc_membership_member_profile: bool = False, # under membership_member
inc_membership_group_person_list: bool = False, # List of members that are a part of this group
inc_membership_person: bool = False,
inc_membership_person_profile: bool = False, # under membership_person
# inc_membership_type_list: bool = False, # ???
inc_organization: bool = False,
inc_parent_membership_group: bool = False,
@@ -37,7 +37,7 @@ def load_membership_group_obj(
inc_product_list: bool = False, # List of products that give access to this group
inc_user: bool = False,
) -> Membership_Group_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_group_id := redis_lookup_id_random(record_id_random=membership_group_id, table_name='membership_group'): pass
@@ -67,35 +67,35 @@ def load_membership_group_obj(
else: membership_group_obj.cfg = None
# Updated 2021-06-23
if inc_membership_group_member_list:
if inc_membership_group_person_list:
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
if membership_group_member_rec_list_result := get_membership_group_member_rec_list(
if membership_group_person_rec_list_result := get_membership_group_person_rec_list(
for_obj_type = 'membership_group',
for_obj_id = membership_group_id,
limit = limit,
enabled = enabled,
):
membership_group_member_result_list = []
for membership_group_member_rec in membership_group_member_rec_list_result:
if load_membership_group_member_result := load_membership_group_member_obj(
membership_group_member_id = membership_group_member_rec.get('membership_group_member_id', None),
membership_group_person_result_list = []
for membership_group_person_rec in membership_group_person_rec_list_result:
if load_membership_group_person_result := load_membership_group_person_obj(
membership_group_person_id = membership_group_person_rec.get('membership_group_person_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
inc_membership_member = inc_membership_member,
inc_membership_person = inc_membership_person,
# inc_membership_group_list = inc_membership_group_list,
# inc_membership_member_profile = inc_membership_member_profile,
# inc_membership_person_profile = inc_membership_person_profile,
# inc_organization = inc_organization,
inc_person = inc_person,
# inc_product = inc_product,
inc_user = inc_user,
):
membership_group_member_result_list.append(load_membership_group_member_result)
else: membership_group_member_result_list.append(None)
membership_group_obj.membership_group_member_list = membership_group_member_result_list
else: membership_group_obj.membership_group_member_list = []
membership_group_person_result_list.append(load_membership_group_person_result)
else: membership_group_person_result_list.append(None)
membership_group_obj.membership_group_person_list = membership_group_person_result_list
else: membership_group_obj.membership_group_person_list = []
# Updated 2021-06-18
# if inc_parent_membership_group:
@@ -142,6 +142,7 @@ def load_membership_group_obj(
# ### BEGIN ### API Membership Group Methods ### get_membership_group_rec_list() ###
def get_membership_group_rec_list(
account_id: str = None,
membership_person_id: str = None,
# product_id: str = None,
# type_level: int = None,
limit: int = 1000,
@@ -155,47 +156,70 @@ def get_membership_group_rec_list(
data = {}
data['account_id'] = account_id
data['membership_person_id'] = membership_person_id
# data['product_id'] = product_id
# data['level'] = type_level
if account_id:
sql_account_id = f'`membership_group`.account_id = :account_id'
else: sql_account_id = ''
# if product_id:
# sql_product_id = f'`membership_group`.product_id = :product_id'
# else: sql_product_id = ''
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `membership_group`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `membership_group`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
else: sql_enabled = ''
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `membership_group`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `membership_group`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
else: sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
# if type_level:
# sql_type_level = f"""AND membership_group.level = :level"""
# else: sql_type_level = ''
sql = f"""
SELECT `membership_group`.id AS 'membership_group_id', `membership_group`.id_random AS 'membership_group_id_random'
FROM `v_membership_group` AS `membership_group`
WHERE
{sql_account_id}
{sql_enabled}
ORDER BY `membership_group`.sort ASC, `membership_group`.created_on DESC, `membership_group`.updated_on DESC
{sql_limit};
"""
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
elif membership_person_id:
sql_membership_person_id = f'`membership_group_person`.membership_person_id = :membership_person_id'
sql = f"""
SELECT `membership_group`.id AS 'membership_group_id', `membership_group`.id_random AS 'membership_group_id_random'
FROM `v_membership_group` AS `membership_group`
WHERE
{sql_account_id}
{sql_enabled}
ORDER BY `membership_group`.sort ASC, `membership_group`.created_on DESC, `membership_group`.updated_on DESC
{sql_limit};
"""
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `membership_group_person`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `membership_group_person`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
else: sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `membership_group_person`.membership_group_id AS 'membership_group_id', `membership_group_person`.membership_group_id_random AS 'membership_group_id_random'
FROM `v_membership_group_person` AS `membership_group_person`
WHERE
{sql_membership_person_id}
{sql_enabled}
ORDER BY `membership_group_person`.sort ASC, `membership_group_person`.created_on DESC, `membership_group_person`.updated_on DESC
{sql_limit};
"""
else: return False
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql)
@@ -204,7 +228,7 @@ def get_membership_group_rec_list(
membership_group_rec_li = membership_group_rec_li_result
else:
membership_group_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_group_rec_li_result)
return membership_group_rec_li

View File

@@ -0,0 +1,191 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
# from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
from app.models.membership_group_person_models import Membership_Group_Person_Base
# ### BEGIN ### API Membership Group Person Methods ### load_membership_group_person_obj() ###
def load_membership_group_person_obj(
membership_group_person_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_group: bool = False,
inc_membership_person: bool = False,
inc_membership_person_profile: bool = False,
inc_membership_type: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
inc_product: bool = False,
# inc_product_list: bool = False,
inc_user: bool = False,
) -> Membership_Group_Person_Base|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_group_person_id := redis_lookup_id_random(record_id_random=membership_group_person_id, table_name='membership_group_person'): pass
else: return False
log.debug(membership_group_person_id)
if membership_group_person_rec := sql_select(table_name='v_membership_group_person', record_id=membership_group_person_id):
log.debug(membership_group_person_rec)
else: return False
log.debug(membership_group_person_rec)
try:
membership_group_person_obj = Membership_Group_Person_Base(**membership_group_person_rec)
log.debug(membership_group_person_obj)
except ValidationError as e:
log.error(e.json())
# Updated 2021-06-21
if inc_membership_person:
from app.methods.membership_person_methods import load_membership_person_obj
membership_person_id = membership_group_person_rec.get('membership_person_id', None)
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_person_id)
if membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_id,
limit = limit,
enabled = enabled,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type = inc_membership_type,
inc_organization = inc_organization,
inc_person = inc_person,
inc_user = inc_user,
):
membership_group_person_obj.membership_person = membership_person_result
else: membership_group_person_obj.membership_person = None
log.debug(membership_person_result)
if model_as_dict:
return membership_group_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return membership_group_person_obj
# ### END ### API Membership Group Person Methods ### load_membership_group_person_obj() ###
# ### BEGIN ### API Membership Group Person Methods ### get_membership_group_person_rec_list() ###
def get_membership_group_person_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'membership_group_person_id', `tbl`.id_random AS 'membership_group_person_id_random'
FROM `membership_group_person` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql)
if membership_group_person_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_group_person_rec_li = membership_group_person_rec_li_result
else:
membership_group_person_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_group_person_rec_li_result)
return membership_group_person_rec_li
# ### END ### API Membership Group Person Methods ### get_membership_group_person_rec_list() ###
# ### BEGIN ### API Membership Group Person Methods ### create_membership_group_person_obj() ###
def create_membership_group_person_obj(membership_group_person_obj_new:Membership_Group_Person_Base) -> bool|int:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
membership_group_person_obj_data = membership_group_person_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'})
if membership_group_person_obj_in_result := sql_insert(
data=membership_group_person_obj_data,
table_name='membership_group_person',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(membership_group_person_obj_in_result)
membership_group_person_id = membership_group_person_obj_in_result
log.debug(f'New membership_group_person_id: {membership_group_person_id}')
return membership_group_person_id
# ### END ### API Membership Group Person Methods ### create_membership_group_person_obj() ###
# ### BEGIN ### API Membership Group Person Methods ### update_membership_group_person_obj() ###
def update_membership_group_person_obj(
membership_group_person_id: int|str, # This allows for updating of the id_random value.
membership_group_person_obj_up: Membership_Group_Person_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_group_person_id := redis_lookup_id_random(record_id_random=membership_group_person_id, table_name='membership_group_person'): pass
else: return False
membership_group_person_obj_up.id = membership_group_person_id
log.debug(membership_group_person_obj_up)
log.debug(membership_group_person_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(membership_group_person_obj_up.dict(by_alias=False, exclude_unset=False))
membership_group_person_dict_up = membership_group_person_obj_up.dict(by_alias=False, exclude_unset=True)
log.debug(membership_group_person_dict_up)
if membership_group_person_obj_up_result := sql_update(data=membership_group_person_dict_up, table_name='membership_group_person', rm_id_random=True):
log.debug(membership_group_person_obj_up_result)
return True
else:
log.debug(membership_group_person_obj_up_result)
return False
# ### END ### API Membership Group Person Methods ### update_membership_group_person_obj() ###

View File

@@ -8,20 +8,19 @@ from app.lib_general import log, logging
from app.db_sql import redis_lookup_id_random, sql_insert_or_update, sql_select
from app.methods.membership_cfg_methods import load_membership_cfg_obj
from app.methods.membership_group_member_methods import get_membership_group_member_rec_list, load_membership_group_member_obj
from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
from app.methods.membership_member_profile_methods import get_membership_member_profile_rec_list, load_membership_member_profile_obj
# from app.methods.membership_type_methods import load_membership_type_obj
from app.methods.membership_group_person_methods import get_membership_group_person_rec_list, load_membership_group_person_obj
from app.methods.membership_person_profile_methods import get_membership_person_profile_rec_list, load_membership_person_profile_obj
from app.methods.person_methods import load_person_obj
from app.methods.product_methods import load_product_obj
from app.methods.user_methods import load_user_obj
from app.models.membership_member_models import Membership_Member_Base
from app.models.membership_person_models import Membership_Person_Base
# ### BEGIN ### API Membership Member Methods ### load_membership_member_obj() ###
def load_membership_member_obj(
membership_member_id:int|str,
# ### BEGIN ### API Membership Person Methods ### load_membership_person_obj() ###
def load_membership_person_obj(
membership_person_id:int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
@@ -30,52 +29,61 @@ def load_membership_member_obj(
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # The list of groups the member is a part of
inc_membership_member_profile: bool = False,
inc_membership_member_profile_cust: bool = False, # Extended profile?
inc_membership_type: bool = False, # The member_type the member is
inc_membership_group: bool = False, # Their primary membership group
inc_membership_group_list: bool = False, # The list of membership groups the person is a part of
inc_membership_group_person: bool = False, # The person information for their primary membership group
inc_membership_group_person_list: bool = False, # The person information for all of their membership groups
inc_membership_person_profile: bool = False,
inc_membership_person_profile_cust: bool = False, # Extended profile?
inc_membership_type: bool = False, # Their primary membership type
inc_membership_type_list: bool = False, # The list of membership types the person is a part of
inc_membership_type_person: bool = False, # The person information for their primary membership type
inc_membership_type_person_list: bool = False, # The person information for all of their membership types
# inc_order: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
inc_product: bool = False, # The product the person actually purchased for a member_type or member_group
inc_product_list: bool = False, # The list of products that give access to a member_type or member_group
inc_user: bool = False,
) -> Membership_Member_Base:
) -> Membership_Person_Base:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass
if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass
else: return False
if membership_member_rec := sql_select(table_name='v_membership_member', record_id=membership_member_id): pass
if membership_person_rec := sql_select(table_name='v_membership_person', record_id=membership_person_id): pass
else: return False
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_rec)
log.debug(membership_person_rec)
try:
membership_member_obj = Membership_Member_Base(**membership_member_rec)
log.debug(membership_member_obj)
membership_person_obj = Membership_Person_Base(**membership_person_rec)
log.debug(membership_person_obj)
except ValidationError as e:
log.error(e.json())
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_obj)
log.debug(membership_person_obj)
# Updated 2021-06-24
if inc_membership_cfg:
if membership_cfg_obj_result := load_membership_cfg_obj(
account_id = membership_member_rec.get('account_id', None),
account_id = membership_person_rec.get('account_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
):
membership_member_obj.membership_cfg = membership_cfg_obj_result
else: membership_member_obj.membership_cfg = None
membership_person_obj.membership_cfg = membership_cfg_obj_result
else: membership_person_obj.membership_cfg = None
# Updated 2021-06-18
if inc_membership_group: pass # The primary membership group the person is a part of. Not used at this time.
# Updated 2021-07-09
if inc_membership_group_list: # The list of groups the member is a part of
if membership_group_rec_list_result := get_membership_group_rec_list(
for_obj_type = 'membership_member',
for_obj_id = membership_member_id,
# for_obj_type = 'membership_person',
# for_obj_id = membership_person_id,
membership_person_id = membership_person_id,
limit = limit,
enabled = enabled,
):
@@ -89,24 +97,55 @@ def load_membership_member_obj(
model_as_dict = model_as_dict,
enabled = enabled,
# inc_membership_group_list = inc_membership_group_list,
# inc_membership_member_profile = inc_membership_member_profile,
# inc_membership_person_profile = inc_membership_person_profile,
# inc_organization = inc_organization,
# inc_person = inc_person,
# inc_product = inc_product,
inc_product_list = inc_product_list,
# inc_product_list = inc_product_list,
# inc_user = inc_user,
):
membership_group_result_list.append(load_membership_group_result)
else: membership_group_result_list.append(None)
membership_member_obj.membership_group_list = membership_group_result_list
else: membership_member_obj.membership_group_list = []
membership_person_obj.membership_group_list = membership_group_result_list
else: membership_person_obj.membership_group_list = []
# Updated 2021-07-09
if inc_membership_group_person_list: # The person information for the list of groups the member is a part of
if membership_group_person_rec_list_result := get_membership_group_person_rec_list(
for_obj_type = 'membership_person',
for_obj_id = membership_person_id,
# membership_person_id = membership_person_id,
limit = limit,
enabled = enabled,
):
membership_group_person_result_list = []
for membership_group_person_rec in membership_group_person_rec_list_result:
if load_membership_group_person_result := load_membership_group_person_obj(
membership_group_person_id = membership_group_person_rec.get('membership_group_person_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
# inc_membership_group_person_list = inc_membership_group_person_list,
# inc_membership_person_profile = inc_membership_person_profile,
# inc_organization = inc_organization,
# inc_person = inc_person,
inc_product = inc_product,
# inc_product_list = inc_product_list,
# inc_user = inc_user,
):
membership_group_person_result_list.append(load_membership_group_person_result)
else: membership_group_person_result_list.append(None)
membership_person_obj.membership_group_person_list = membership_group_person_result_list
else: membership_person_obj.membership_group_person_list = []
# Updated 2021-06-21
if inc_membership_member_profile:
membership_member_profile_id = membership_member_rec.get('membership_member_profile_id', None)
log.debug(membership_member_profile_id)
if membership_member_profile_result := load_membership_member_profile_obj(
membership_member_profile_id = membership_member_profile_id,
if inc_membership_person_profile:
membership_person_profile_id = membership_person_rec.get('membership_person_profile_id', None)
log.debug(membership_person_profile_id)
if membership_person_profile_result := load_membership_person_profile_obj(
membership_person_profile_id = membership_person_profile_id,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
@@ -116,14 +155,14 @@ def load_membership_member_obj(
# inc_membership_cfg = inc_membership_cfg,
inc_organization = inc_organization,
):
membership_member_obj.membership_member_profile = membership_member_profile_result
else: membership_member_obj.membership_member_profile = None
log.debug(membership_member_profile_result)
membership_person_obj.membership_person_profile = membership_person_profile_result
else: membership_person_obj.membership_person_profile = None
log.debug(membership_person_profile_result)
# Updated 2021-06-18
if inc_membership_type:
# Updated 2021-07-09
if inc_membership_type: # The primary membership type for the person
from app.methods.membership_type_methods import load_membership_type_obj
membership_type_id = membership_member_rec.get('membership_type_id', None)
membership_type_id = membership_person_rec.get('membership_type_id', None)
log.debug(membership_type_id)
if membership_type_result := load_membership_type_obj(
membership_type_id = membership_type_id,
@@ -139,13 +178,37 @@ def load_membership_member_obj(
# inc_organization = inc_organization,
inc_product_list = inc_product_list,
):
membership_member_obj.membership_type = membership_type_result
else: membership_member_obj.membership_type = None
membership_person_obj.membership_type = membership_type_result
else: membership_person_obj.membership_type = None
log.debug(membership_type_result)
if inc_membership_type_list: pass # All of the membership types the person is a part of
# Updated 2021-07-09
if inc_membership_type_person: # The primary membership type person information for the person
from app.methods.membership_type_person_methods import load_membership_type_person_obj
membership_type_person_id = membership_person_rec.get('membership_type_person_id', None)
log.debug(membership_type_person_id)
if membership_type_person_result := load_membership_type_person_obj(
membership_type_person_id = membership_type_person_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
inc_membership_cfg = inc_membership_cfg,
inc_membership_type = inc_membership_type,
inc_product = inc_product,
):
membership_person_obj.membership_type_person = membership_type_person_result
else: membership_person_obj.membership_type_person = None
log.debug(membership_type_person_result)
if inc_membership_type_person_list: pass # All of the membership type person records for a person
# Updated 2021-06-18
if inc_person:
person_id = membership_member_rec.get('person_id', None)
person_id = membership_person_rec.get('person_id', None)
log.debug(person_id)
if person_result := load_person_obj(
person_id = person_id,
@@ -157,13 +220,13 @@ def load_membership_member_obj(
# inc_organization = inc_organization,
# inc_user = inc_user,
):
membership_member_obj.person = person_result
else: membership_member_obj.person = None
membership_person_obj.person = person_result
else: membership_person_obj.person = None
log.debug(person_result)
# Updated 2021-06-24
if inc_product:
product_id = membership_member_rec.get('product_id', None)
product_id = membership_person_rec.get('product_id', None)
log.debug(product_id)
if product_result := load_product_obj(
product_id = product_id,
@@ -171,13 +234,13 @@ def load_membership_member_obj(
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
):
membership_member_obj.product = product_result
else: membership_member_obj.product = None
membership_person_obj.product = product_result
else: membership_person_obj.product = None
log.debug(product_result)
# Updated 2021-06-18
if inc_user:
user_id = membership_member_rec.get('user_id', None)
user_id = membership_person_rec.get('user_id', None)
if user_result := load_user_obj(
user_id = user_id,
by_alias = by_alias,
@@ -188,28 +251,28 @@ def load_membership_member_obj(
# inc_organization = inc_organization,
# inc_person = inc_person,
):
membership_member_obj.user = user_result
else: membership_member_obj.user = None
membership_person_obj.user = user_result
else: membership_person_obj.user = None
log.debug(user_result)
if model_as_dict:
return membership_member_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
return membership_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return membership_member_obj
# ### END ### API Membership Member Methods ### load_membership_member_obj() ###
return membership_person_obj
# ### END ### API Membership Person Methods ### load_membership_person_obj() ###
# ### BEGIN ### API Membership Member Methods ### get_membership_member_rec_list() ###
def get_membership_member_rec_list(
# ### BEGIN ### API Membership Person Methods ### get_membership_person_rec_list() ###
def get_membership_person_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
@@ -236,8 +299,8 @@ def get_membership_member_rec_list(
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'membership_member_id', `tbl`.id_random AS 'membership_member_id_random'
FROM `membership_member` AS `tbl`
SELECT `tbl`.id AS 'membership_person_id', `tbl`.id_random AS 'membership_person_id_random'
FROM `membership_person` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
@@ -246,15 +309,15 @@ def get_membership_member_rec_list(
"""
elif for_obj_type == 'unknown':
log.info(f'Query using joined table: {for_obj_type} {for_obj_id}')
# sql_obj_type_id = f'`membership_member`.{for_obj_type}_id = :{for_obj_type}_id'
# sql_obj_type_id = f'`membership_person`.{for_obj_type}_id = :{for_obj_type}_id'
# if enabled in ['enabled', 'disabled', 'all']:
# if enabled == 'enabled':
# data['enable'] = True
# sql_enabled = f'AND `membership_member`.enable = :enable'
# sql_enabled = f'AND `membership_person`.enable = :enable'
# elif enabled == 'disabled':
# data['enable'] = False
# sql_enabled = f'AND `membership_member`.enable = :enable'
# sql_enabled = f'AND `membership_person`.enable = :enable'
# elif enabled == 'all':
# sql_enabled = ''
@@ -265,17 +328,17 @@ def get_membership_member_rec_list(
# sql_limit = ''
# sql = f"""
# SELECT `membership_member`.id AS 'membership_type_id', `membership_member`.id_random AS 'membership_type_id_random'
# FROM `membership_member`
# INNER JOIN membership_type ON membership_member.membership_type_id = membership_type.id
# SELECT `membership_person`.id AS 'membership_type_id', `membership_person`.id_random AS 'membership_type_id_random'
# FROM `membership_person`
# INNER JOIN membership_type ON membership_person.membership_type_id = membership_type.id
# WHERE
# {sql_obj_type_id}
# {sql_enabled}
# ORDER BY `membership_member`.created_on DESC, `membership_member`.updated_on DESC
# ORDER BY `membership_person`.created_on DESC, `membership_person`.updated_on DESC
# {sql_limit};
# """
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql)
# sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
@@ -297,8 +360,8 @@ def get_membership_member_rec_list(
# sql_limit = ''
# sql = f"""
# SELECT `tbl`.id AS 'membership_member_id', `tbl`.id_random AS 'membership_member_id_random'
# FROM `membership_member` AS `tbl`
# SELECT `tbl`.id AS 'membership_person_id', `tbl`.id_random AS 'membership_person_id_random'
# FROM `membership_person` AS `tbl`
# WHERE
# {sql_obj_type_id}
# {sql_enabled}
@@ -306,19 +369,19 @@ def get_membership_member_rec_list(
# {sql_limit};
# """
if membership_member_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_member_rec_li = membership_member_rec_li_result
if membership_person_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_person_rec_li = membership_person_rec_li_result
else:
membership_member_rec_li = []
membership_person_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_rec_li_result)
log.debug(membership_person_rec_li_result)
return membership_member_rec_li
# ### END ### API Membership Member Methods ### get_membership_member_rec_list() ###
return membership_person_rec_li
# ### END ### API Membership Person Methods ### get_membership_person_rec_list() ###
# ### BEGIN ### API Membership Member Methods ### save_membership_member_obj() ###
def save_membership_member_obj(order_obj_new:Membership_Member_Base=None):
# ### BEGIN ### API Membership Person Methods ### save_membership_person_obj() ###
def save_membership_person_obj(order_obj_new:Membership_Person_Base=None):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
@@ -461,4 +524,4 @@ def save_membership_member_obj(order_obj_new:Membership_Member_Base=None):
else: return False
log.debug(order_line_obj_resp)
return order_id
# ### END ### API Membership Member Methods ### save_membership_member_obj() ###
# ### END ### API Membership Person Methods ### save_membership_person_obj() ###

View File

@@ -7,46 +7,46 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
from app.db_sql import redis_lookup_id_random, sql_select
from app.lib_general import log, logging
from app.models.membership_member_profile_models import Membership_Member_Profile_Base
from app.models.membership_person_profile_models import Membership_Person_Profile_Base
# ### BEGIN ### API Membership Member Profile Methods ### load_membership_member_profile_obj() ###
def load_membership_member_profile_obj(
membership_member_profile_id: int|str,
# ### BEGIN ### API Membership Person Profile Methods ### load_membership_person_profile_obj() ###
def load_membership_person_profile_obj(
membership_person_profile_id: int|str,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
inc_address: bool = False,
inc_contact: bool = False,
inc_organization: bool = False,
) -> Membership_Member_Profile_Base|dict|bool:
) -> Membership_Person_Profile_Base|dict|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_member_profile_id := redis_lookup_id_random(record_id_random=membership_member_profile_id, table_name='membership_member_profile'): pass
if membership_person_profile_id := redis_lookup_id_random(record_id_random=membership_person_profile_id, table_name='membership_person_profile'): pass
else: return False
if membership_member_profile_rec := sql_select(
table_name='v_membership_member_profile',
record_id=membership_member_profile_id,
if membership_person_profile_rec := sql_select(
table_name='v_membership_person_profile',
record_id=membership_person_profile_id,
): pass
else: return False
log.debug(membership_member_profile_rec)
log.debug(membership_person_profile_rec)
try:
membership_member_profile_obj = Membership_Member_Profile_Base(**membership_member_profile_rec)
log.debug(membership_member_profile_obj)
membership_person_profile_obj = Membership_Person_Profile_Base(**membership_person_profile_rec)
log.debug(membership_person_profile_obj)
except ValidationError as e:
log.error(e.json())
if model_as_dict:
return membership_member_profile_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
return membership_person_profile_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return membership_member_profile_obj
# ### END ### API Membership Member Profile Methods ### load_membership_member_profile_obj() ###
return membership_person_profile_obj
# ### END ### API Membership Person Profile Methods ### load_membership_person_profile_obj() ###
# ### BEGIN ### API Membership Member Profile Methods ### get_membership_member_profile_rec_list() ###
def get_membership_member_profile_rec_list(
# ### BEGIN ### API Membership Person Profile Methods ### get_membership_person_profile_rec_list() ###
def get_membership_person_profile_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
@@ -55,7 +55,7 @@ def get_membership_member_profile_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
@@ -79,8 +79,8 @@ def get_membership_member_profile_rec_list(
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'membership_member_profile_id', `tbl`.id_random AS 'membership_member_profile_id_random'
FROM `membership_member_profile` AS `tbl`
SELECT `tbl`.id AS 'membership_person_profile_id', `tbl`.id_random AS 'membership_person_profile_id_random'
FROM `membership_person_profile` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
@@ -88,12 +88,12 @@ def get_membership_member_profile_rec_list(
{sql_limit};
"""
if membership_member_profile_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_member_profile_rec_li = membership_member_profile_rec_li_result
if membership_person_profile_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_person_profile_rec_li = membership_person_profile_rec_li_result
else:
membership_member_profile_rec_li = []
membership_person_profile_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_member_profile_rec_li_result)
log.debug(membership_person_profile_rec_li_result)
return membership_member_profile_rec_li
# ### END ### API Membership Member Profile Methods ### get_membership_member_profile_rec_list() ###
return membership_person_profile_rec_li
# ### END ### API Membership Person Profile Methods ### get_membership_person_profile_rec_list() ###

View File

@@ -8,7 +8,7 @@ from app.lib_general import log, logging
from app.db_sql import redis_lookup_id_random, sql_select
from app.methods.membership_cfg_methods import load_membership_cfg_obj
from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
from app.methods.product_methods import get_product_rec_list, load_product_obj
from app.models.membership_type_models import Membership_Type_Base
@@ -25,17 +25,17 @@ def load_membership_type_obj(
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # under membership_member
inc_membership_group_member_list: bool = False,
inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False, # under membership_member
inc_membership_group_list: bool = False, # under membership_person
inc_membership_group_person_list: bool = False,
inc_membership_person_list: bool = False,
inc_membership_person_profile: bool = False, # under membership_person
inc_organization: bool = False,
inc_person: bool = False,
inc_product: bool = False, # Per membership member
inc_product_list: bool = False, # One or more er membership type
inc_user: bool = False,
) -> Membership_Type_Base:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_type_id := redis_lookup_id_random(record_id_random=membership_type_id, table_name='membership_type'): pass
@@ -65,33 +65,33 @@ def load_membership_type_obj(
else: membership_type_obj.cfg = None
# Updated 2021-06-23
if inc_membership_member_list:
if membership_member_rec_list_result := get_membership_member_rec_list(
if inc_membership_person_list:
if membership_person_rec_list_result := get_membership_person_rec_list(
for_obj_type = 'membership_type',
for_obj_id = membership_type_id,
limit = limit,
enabled = enabled,
):
membership_member_result_list = []
for membership_member_rec in membership_member_rec_list_result:
if load_membership_member_result := load_membership_member_obj(
membership_member_id = membership_member_rec.get('membership_member_id', None),
membership_person_result_list = []
for membership_person_rec in membership_person_rec_list_result:
if load_membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_rec.get('membership_person_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
# inc_organization = inc_organization,
inc_person = inc_person,
# inc_product = inc_product,
inc_user = inc_user,
):
membership_member_result_list.append(load_membership_member_result)
else: membership_member_result_list.append(None)
membership_type_obj.membership_member_list = membership_member_result_list
else: membership_type_obj.membership_member_list = []
membership_person_result_list.append(load_membership_person_result)
else: membership_person_result_list.append(None)
membership_type_obj.membership_person_list = membership_person_result_list
else: membership_type_obj.membership_person_list = []
# Updated 2021-06-23
if inc_product_list:
@@ -188,7 +188,7 @@ def get_membership_type_rec_list(
membership_type_rec_li = membership_type_rec_li_result
else:
membership_type_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_type_rec_li_result)
return membership_type_rec_li
@@ -214,7 +214,7 @@ def save_membership_type_obj(membership_type_obj_new:Membership_Type_Base):
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.debug(locals())
# if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
# if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
# else: return False
# data = {}
# data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -0,0 +1,238 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
# from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
from app.methods.membership_cfg_methods import load_membership_cfg_obj
from app.methods.product_methods import get_product_rec_list, load_product_obj
from app.models.membership_type_person_models import Membership_Type_Person_Base
# ### BEGIN ### API Membership Type Person Methods ### load_membership_type_person_obj() ###
# Updated 2021-07-09
def load_membership_type_person_obj(
membership_type_person_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_person: bool = False,
inc_membership_person_profile: bool = False,
inc_membership_type: bool = False,
inc_organization: bool = False,
inc_product: bool = False,
inc_product_list: bool = False,
inc_person: bool = False,
inc_user: bool = False,
) -> Membership_Type_Person_Base|bool:
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_type_person_id := redis_lookup_id_random(record_id_random=membership_type_person_id, table_name='membership_type_person'): pass
else: return False
log.debug(membership_type_person_id)
if membership_type_person_rec := sql_select(table_name='v_membership_type_person', record_id=membership_type_person_id):
log.debug(membership_type_person_rec)
else: return False
log.debug(membership_type_person_rec)
try:
membership_type_person_obj = Membership_Type_Person_Base(**membership_type_person_rec)
log.debug(membership_type_person_obj)
except ValidationError as e:
log.error(e.json())
# Updated 2021-06-24
if inc_membership_cfg:
if membership_cfg_obj_result := load_membership_cfg_obj(
account_id = membership_type_person_rec.get('account_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
):
membership_type_person_obj.membership_cfg = membership_cfg_obj_result
else: membership_type_person_obj.membership_cfg = None
# Updated 2021-06-21
if inc_membership_person:
from app.methods.membership_person_methods import load_membership_person_obj
membership_person_id = membership_type_person_rec.get('membership_person_id', None)
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_person_id)
if membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_id,
limit = limit,
enabled = enabled,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type = inc_membership_type,
inc_organization = inc_organization,
inc_person = inc_person,
inc_user = inc_user,
):
membership_type_person_obj.membership_person = membership_person_result
else: membership_type_person_obj.membership_person = None
log.debug(membership_person_result)
# Updated 2021-07-09
if inc_membership_type: # The primary membership type for the person
from app.methods.membership_type_methods import load_membership_type_obj
membership_type_id = membership_type_person_rec.get('membership_type_id', None)
log.debug(membership_type_id)
if membership_type_result := load_membership_type_obj(
membership_type_id = membership_type_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
# inc_membership_cfg = inc_membership_cfg,
inc_product_list = inc_product_list,
):
membership_type_person_obj.membership_type = membership_type_result
else: membership_type_person_obj.membership_type = None
log.debug(membership_type_result)
# Updated 2021-07-09
if inc_product:
product_id = membership_type_person_rec.get('product_id', None)
log.debug(product_id)
if product_result := load_product_obj(
product_id = product_id,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
):
membership_type_person_obj.product = product_result
else: membership_type_person_obj.product = None
log.debug(product_result)
if model_as_dict:
return membership_type_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return membership_type_person_obj
# ### END ### API Membership Type Person Methods ### load_membership_type_person_obj() ###
# ### BEGIN ### API Membership Type Person Methods ### get_membership_type_person_rec_list() ###
def get_membership_type_person_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'membership_type_person_id', `tbl`.id_random AS 'membership_type_person_id_random'
FROM `membership_type_person` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql)
if membership_type_person_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
membership_type_person_rec_li = membership_type_person_rec_li_result
else:
membership_type_person_rec_li = []
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_type_person_rec_li_result)
return membership_type_person_rec_li
# ### END ### API Membership Type Person Methods ### get_membership_type_person_rec_list() ###
# ### BEGIN ### API Membership Type Person Methods ### create_membership_type_person_obj() ###
def create_membership_type_person_obj(membership_type_person_obj_new:Membership_Type_Person_Base) -> bool|int:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
membership_type_person_obj_data = membership_type_person_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'})
if membership_type_person_obj_in_result := sql_insert(
data=membership_type_person_obj_data,
table_name='membership_type_person',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(membership_type_person_obj_in_result)
membership_type_person_id = membership_type_person_obj_in_result
log.debug(f'New membership_type_person_id: {membership_type_person_id}')
return membership_type_person_id
# ### END ### API Membership Type Person Methods ### create_membership_type_person_obj() ###
# ### BEGIN ### API Membership Type Person Methods ### update_membership_type_person_obj() ###
def update_membership_type_person_obj(
membership_type_person_id: int|str, # This allows for updating of the id_random value.
membership_type_person_obj_up: Membership_Type_Person_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_type_person_id := redis_lookup_id_random(record_id_random=membership_type_person_id, table_name='membership_type_person'): pass
else: return False
membership_type_person_obj_up.id = membership_type_person_id
log.debug(membership_type_person_obj_up)
log.debug(membership_type_person_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(membership_type_person_obj_up.dict(by_alias=False, exclude_unset=False))
membership_type_person_dict_up = membership_type_person_obj_up.dict(by_alias=False, exclude_unset=True)
log.debug(membership_type_person_dict_up)
if membership_type_person_obj_up_result := sql_update(data=membership_type_person_dict_up, table_name='membership_type_person', rm_id_random=True):
log.debug(membership_type_person_obj_up_result)
return True
else:
log.debug(membership_type_person_obj_up_result)
return False
# ### END ### API Membership Type Person Methods ### update_membership_type_person_obj() ###

View File

@@ -140,7 +140,7 @@ def get_order_line_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -284,7 +284,7 @@ def get_order_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -76,7 +76,7 @@ def get_organization_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -30,7 +30,19 @@ def load_person_obj(
inc_event_list: bool = False,
inc_journal_list: bool = False,
inc_journal_entry_list: bool = False,
inc_membership_member: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group: bool = False,
inc_membership_person_group: bool = False,
inc_membership_group_list: bool = False,
inc_membership_group_person_list: bool = False,
inc_membership_person: bool = False, # NOTE: Same as inc_membership_person_list
inc_membership_person_list: bool = False, # NOTE: Same as inc_membership_person
inc_membership_person_profile: bool = False,
inc_membership_person_profile_cust: bool = False,
inc_membership_type: bool = False,
inc_membership_type_person: bool = False,
inc_membership_type_list: bool = False,
inc_membership_type_person_list: bool = False,
inc_order_cfg: bool = False,
inc_order_line_list: bool = False,
inc_order_list: bool = False,
@@ -38,9 +50,10 @@ def load_person_obj(
inc_organization: bool = False,
inc_post_list: bool = False,
inc_post_comment_list: bool = False,
inc_product: bool = False,
inc_user: bool = False,
) -> Person_Base|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
@@ -55,7 +68,7 @@ def load_person_obj(
except ValidationError as e:
log.error(e.json())
# Updated 2021-06-18
# Updated 2021-07-09
if inc_contact:
contact_id = person_rec.get('contact_id', None)
log.debug(contact_id)
@@ -71,6 +84,93 @@ def load_person_obj(
person_obj.contact = contact_result
else: person_obj.contact = None
# Updated 2021-07-09
# if inc_membership_group_list:
# from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
# if membership_group_rec_list_result := get_membership_group_rec_list(
# for_obj_type = 'person',
# for_obj_id = person_id,
# limit = limit,
# enabled = enabled,
# ):
# membership_group_result_list = []
# for membership_group_rec in membership_group_rec_list_result:
# if membership_group_result := load_membership_group_obj(
# membership_group_id = membership_group_rec.get('membership_group_id', None),
# limit = limit,
# by_alias = by_alias,
# exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
# enabled = enabled,
# inc_membership_group_profile = inc_membership_group_profile,
# inc_membership_group_profile_cust = inc_membership_group_profile_cust,
# inc_membership_type = inc_membership_type,
# inc_product = inc_product,
# ):
# membership_group_result_list.append(membership_group_result)
# else:
# membership_group_result_list.append(None)
# person_obj.membership_group_list = membership_group_result_list
# else: person_obj.membership_group_list = []
# Updated 2021-07-09
if inc_membership_person:
from app.methods.membership_person_methods import load_membership_person_obj
membership_person_id = person_rec.get('membership_person_id', None)
log.debug(membership_person_id)
if membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group = inc_membership_group, # The primary membership group, if there is one.
inc_membership_group_list = inc_membership_group_list, # All membership groups they are a part of.
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_person_profile_cust = inc_membership_person_profile_cust,
inc_membership_type = inc_membership_type, # The primary membership type, if there is one.
inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of.
# inc_person = inc_person,
inc_product = inc_product,
# inc_product_list = inc_product_list,
# inc_user = inc_user,
):
person_obj.membership_person = membership_person_result
else: person_obj.membership_person = None
# Updated 2021-07-09
# if inc_membership_type or inc_membership_type_list: # Technically should this be inc_membership_type_list???
# from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj
# if membership_type_rec_list_result := get_membership_type_rec_list(
# for_obj_type = 'person',
# for_obj_id = person_id,
# limit = limit,
# enabled = enabled,
# ):
# membership_type_result_list = []
# for membership_type_rec in membership_type_rec_list_result:
# if membership_type_result := load_membership_type_obj(
# membership_type_id = membership_type_rec.get('membership_type_id', None),
# limit = limit,
# by_alias = by_alias,
# exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
# enabled = enabled,
# inc_membership_type_profile = inc_membership_type_profile,
# inc_membership_type_profile_cust = inc_membership_type_profile_cust,
# inc_membership_type = inc_membership_type,
# inc_product = inc_product,
# ):
# membership_type_result_list.append(membership_type_result)
# else:
# membership_type_result_list.append(None)
# type_obj.membership_type_list = membership_type_result_list
# else: type_obj.membership_type_list = []
# Updated 2021-06-18
if inc_order_list:
if order_rec_list_result := get_order_rec_list(
@@ -147,7 +247,7 @@ def get_person_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -176,7 +176,7 @@ def get_post_comment_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -204,7 +204,7 @@ def get_post_rec_list(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -112,7 +112,7 @@ def get_site_domain_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -134,7 +134,7 @@ def get_site_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -87,7 +87,7 @@ def load_user_obj(
# inc_hosted_file_list: bool = False,
inc_journal_list: bool = False,
inc_journal_entry_list: bool = False,
inc_membership_member: bool = False,
inc_membership_person: bool = False,
inc_order_cfg: bool = False,
inc_order_line_list: bool = False,
inc_order_list: bool = False,
@@ -377,7 +377,7 @@ def get_user_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -55,7 +55,7 @@ def get_user_role_rec_list(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id

View File

@@ -59,7 +59,7 @@ class Account_Base(BaseModel):
journal_list: Optional[list] # Journal_Base() # Priority l3
membership_cfg: Optional[Membership_Cfg_Base] # Priority l2
membership_group_list: Optional[list] # Membership_Group_Base() # Priority l2
membership_member_list: Optional[list] # Membership_Member_Base() # Priority l2
membership_person_list: Optional[list] # Membership_Person_Base() # Priority l2
membership_type_list: Optional[list] # Membership_Type_Base() # Priority l2
order_list: Optional[list] # Order_Base() # Priority l2
organization_list: Optional[list] # Organization_Base() # Priority l3

View File

@@ -52,10 +52,11 @@ base_fields['log_client_viewing_id_random'] = xxx_id_random_field_schema
# base_fields['membership_id_random'] = xxx_id_random_field_schema # renamed to membership_type
base_fields['membership_cfg_id_random'] = xxx_id_random_field_schema
base_fields['membership_group_id_random'] = xxx_id_random_field_schema
base_fields['membership_group_member_id_random'] = xxx_id_random_field_schema
base_fields['membership_member_id_random'] = xxx_id_random_field_schema
base_fields['membership_member_profile_id_random'] = xxx_id_random_field_schema
base_fields['membership_group_person_id_random'] = xxx_id_random_field_schema
base_fields['membership_person_id_random'] = xxx_id_random_field_schema
base_fields['membership_person_profile_id_random'] = xxx_id_random_field_schema
base_fields['membership_type_id_random'] = xxx_id_random_field_schema
base_fields['membership_type_person_id_random'] = xxx_id_random_field_schema
base_fields['order_cart_id_random'] = xxx_id_random_field_schema
base_fields['order_cart_line_id_random'] = xxx_id_random_field_schema
base_fields['order_id_random'] = xxx_id_random_field_schema

View File

@@ -41,10 +41,9 @@ class Contact_Base(BaseModel):
description: Optional[str]
lu_time_zone_id: Optional[str]
timezone: Optional[str]
timezone_name: Optional[str]
email: Optional[str]
website_url: Optional[str]
website_name: Optional[str]
phone_mobile: Optional[str]
phone_home: Optional[str]
@@ -52,10 +51,13 @@ class Contact_Base(BaseModel):
phone_land: Optional[str]
phone_fax: Optional[str]
website_url: Optional[str]
website_name: Optional[str]
facebook_url: Optional[str]
instagram_url: Optional[str]
twitter_url: Optional[str]
linkedin_url: Optional[str]
twitter_url: Optional[str]
other_site_url: Optional[str]
other_site_name: Optional[str]

View File

@@ -39,9 +39,9 @@ class Membership_Cfg_Base(BaseModel):
confirm_name: Optional[str]
# Including JSON data
# extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
# extended_membership_member_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client
# extended_membership_member_profile: Optional[Json] # list of dicts outlining extended (custom) membership profile fields for client
extended_membership_member_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
# extended_membership_person_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
# extended_membership_person_profile: Optional[Json] = '[]' # list of dicts outlining extended (custom) membership profile fields for client
# extended_membership_person_profile: Optional[Json] # list of dicts outlining extended (custom) membership profile fields for client
extended_membership_person_profile: Optional[str] # list of dicts outlining extended (custom) membership profile fields for client
Membership_Cfg_Base.update_forward_refs()

View File

@@ -49,7 +49,7 @@ class Membership_Group_Base(BaseModel):
# Including other related objects
cfg: Optional[Membership_Cfg_Base]
# membership_type: Optional[Membership_Type_Base] # The membership option/type they currently have
membership_group_member_list: Optional[list] # Membership_Group_Member_Base
membership_group_person_list: Optional[list] # Membership_Group_Person_Base
# parent_membership_group: Optional[Membership_Group_Base]
product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option

View File

@@ -8,32 +8,50 @@ from app.db_sql import redis_lookup_id_random
from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.membership_cfg_models import Membership_Cfg_Base
from app.models.membership_group_models import Membership_Group_Base
from app.models.membership_member_models import Membership_Member_Base
from app.models.product_models import Product_Base
class Membership_Group_Member_Base(BaseModel):
class Membership_Group_Person_Base(BaseModel):
log.setLevel(logging.WARNING)
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['membership_group_member_id_random'],
alias = 'membership_group_member_id_random',
**base_fields['membership_group_person_id_random'],
alias = 'membership_group_person_id_random',
default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
alias = 'membership_group_member_id'
alias = 'membership_group_person_id'
)
membership_group_id_random: Optional[str]
membership_group_id: Optional[int]
membership_member_id_random: Optional[str]
membership_member_id: Optional[int]
account_id_random: Optional[str]
account_id: Optional[int]
membership_group_id_random: Optional[str] = Field(
alias = 'group_id_random',
) # NOTE: This is not optional
membership_group_id: Optional[int] = Field(
alias = 'group_id',
) # NOTE: This is not optional
membership_group_name: Optional[str] = Field(
alias = 'group_name',
)
membership_person_id_random: Optional[str]
membership_person_id: Optional[int]
product_id_random: Optional[str]
product_id: Optional[int] # The product they purchased to get this membership
membership_group_status_id: Optional[int] = Field(
alias = 'status_id'
)
membership_group_status_name: Optional[str] = Field(
alias = 'status_name'
)
flag: Optional[bool]
flag_message: Optional[str]
@@ -43,14 +61,16 @@ class Membership_Group_Member_Base(BaseModel):
updated_on: Optional[datetime.datetime] = None
# Including other related objects
membership_cfg: Optional[Membership_Cfg_Base] = Field(
alias = 'cfg',
)
membership_group: Optional[Membership_Group_Base]
membership_member: Optional[Membership_Member_Base]
product: Optional[Product_Base] # The product used to be a part of the group?
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_group_member_id_random', always=True)
def membership_group_member_id_random_copy(cls, v, values, **kwargs):
#@validator('membership_group_person_id_random', always=True)
def membership_group_person_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
@@ -59,12 +79,12 @@ class Membership_Group_Member_Base(BaseModel):
return None
@validator('id', always=True)
def membership_group_member_id_lookup(cls, v, values, **kwargs):
def membership_group_person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group_member')
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_group_person')
return None
@validator('membership_group_id', always=True)
@@ -76,13 +96,13 @@ class Membership_Group_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['membership_group_id_random'], table_name='membership_group')
return None
@validator('membership_member_id', always=True)
def membership_member_id_lookup(cls, v, values, **kwargs):
@validator('membership_person_id', always=True)
def membership_person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['membership_member_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_member_id_random'], table_name='membership_member')
if values['membership_person_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_person_id_random'], table_name='membership_person')
return None
@validator('product_id', always=True)

View File

@@ -0,0 +1,204 @@
from __future__ import annotations
import datetime, hashlib, logging, os, pytz, redis, secrets
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random
from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.membership_cfg_models import Membership_Cfg_Base
from app.models.membership_group_models import Membership_Group_Base
from app.models.membership_group_person_models import Membership_Group_Person_Base
from app.models.membership_person_profile_models import Membership_Person_Profile_Base
from app.models.membership_type_models import Membership_Type_Base
from app.models.membership_type_person_models import Membership_Type_Person_Base
# from app.models.person_models import Person_Base
from app.models.product_models import Product_Base
# from app.models.user_models import User_Base
class Membership_Person_Base(BaseModel):
log.setLevel(logging.WARNING)
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['membership_person_id_random'],
alias = 'membership_person_id_random',
default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
alias = 'membership_person_id'
)
account_id_random: Optional[str]
account_id: Optional[int]
membership_person_status_id: Optional[int] = Field(
alias = 'status_id'
)
membership_person_status_name: Optional[str] = Field(
alias = 'status_name'
)
membership_group_id_random: Optional[str] = Field(
alias = 'group_id_random',
) # NOTE: This is not optional
membership_group_id: Optional[int] = Field(
alias = 'group_id',
) # NOTE: This is not optional
membership_group_name: Optional[str] = Field(
alias = 'group_name',
)
membership_type_id_random: Optional[str] = Field(
alias = 'type_id_random',
) # NOTE: This is not optional
membership_type_id: Optional[int] = Field(
alias = 'type_id',
) # NOTE: This is not optional
membership_type_name: Optional[str] = Field(
alias = 'type_name',
)
person_id_random: Optional[str]
person_id: Optional[int]
product_id_random: Optional[str]
product_id: Optional[int] # The product they purchased to get this membership
user_id_random: Optional[str]
user_id: Optional[int]
level: Optional[int] = Field(0, ge=0, lt=150)
application_start_on: Optional[datetime.datetime] = None
approved_on: Optional[datetime.datetime] = None
first_start_on: Optional[datetime.datetime] = None
start_buffer_on: Optional[datetime.datetime] = None
start_on: Optional[datetime.datetime] = None
end_on: Optional[datetime.datetime] = None
end_buffer_on: Optional[datetime.datetime] = None
flag: Optional[bool]
flag_message: Optional[str]
notes: Optional[str]
created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None
# Including other related objects
membership_cfg: Optional[Membership_Cfg_Base] = Field(
alias = 'cfg',
)
membership_group: Optional[Membership_Group_Base] # The primary membership group option they currently have
membership_group_list: Optional[list] = Field(
alias = 'group_list',
) # Membership_Group_Base() The group information for all the membership groups they are a part of
membership_group_person: Optional[Membership_Group_Person_Base] # The group person information for the primary membership group they currently have
membership_group_person_list: Optional[list] = Field(
alias = 'group_person_list',
) # Membership_Group_Base() The group person information for all the membership groups they are a part of
membership_person_profile: Optional[Membership_Person_Profile_Base] = Field(
alias = 'profile',
)
# = Field(
# alias = 'extended_membership_person_profile',
# )
membership_type: Optional[Membership_Type_Base] # The primary membership type option they currently have
membership_type_list: Optional[list] = Field(
alias = 'type_list',
) # Membership_Type_Base() The type information for all the membership types they are a part of
membership_type_person: Optional[Membership_Type_Person_Base] # The type person information for the primary membership type they currently have
membership_type_person_list: Optional[list] = Field(
alias = 'type_person_list',
) # Membership_Type_Person_Base() The type person information for all the membership types they are a part of
person: Optional[dict] # should be Person_Base() but causes an import loop
product: Optional[Product_Base] # The product used to become a member?
user: Optional[dict] # should be User_Base() but causes an import loop
extended_member_profile: Optional[dict] = {}
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_person_id_random', always=True)
def membership_person_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True)
def membership_person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_person')
return None
@validator('account_id', always=True)
def account_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['account_id_random']:
return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
return None
@validator('membership_group_id', always=True)
def membership_group_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['membership_group_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_group_id_random'], table_name='membership_group')
return None
@validator('membership_type_id', always=True)
def membership_type_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['membership_type_id_random']:
return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
return None
@validator('person_id', always=True)
def person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['person_id_random']:
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None
@validator('product_id', always=True)
def product_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['product_id_random']:
return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
return None
@validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
return None
class Config:
underscore_attrs_are_private = True
allow_population_by_field_name = True
fields = base_fields

View File

@@ -9,29 +9,25 @@ from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.contact_models import Contact_Base
from app.models.membership_type_models import Membership_Type_Base
from app.models.organization_models import Organization_Base
class Membership_Member_Profile_Base(BaseModel):
class Membership_Person_Profile_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['membership_member_profile_id_random'],
alias = 'membership_member_profile_id_random',
**base_fields['membership_person_profile_id_random'],
alias = 'membership_person_profile_id_random',
default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
alias = 'membership_member_profile_id'
alias = 'membership_person_profile_id'
)
contact_id_random: Optional[str]
contact_id: Optional[int]
# membership_type_id_random: Optional[str]
# membership_type_id: Optional[int]
organization_id_random: Optional[str]
organization_id: Optional[int]
@@ -56,8 +52,8 @@ class Membership_Member_Profile_Base(BaseModel):
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_member_profile_id_random', always=True)
def membership_member_profile_id_random_copy(cls, v, values, **kwargs):
#@validator('membership_person_profile_id_random', always=True)
def membership_person_profile_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
@@ -66,13 +62,13 @@ class Membership_Member_Profile_Base(BaseModel):
return None
@validator('id', always=True)
def membership_member_profile_id_lookup(cls, v, values, **kwargs):
def membership_person_profile_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
log.debug(values['id_random'])
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member_profile')
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_person_profile')
return None
@validator('contact_id', always=True)

View File

@@ -72,7 +72,7 @@ class Membership_Type_Base(BaseModel):
# Including other related objects
cfg: Optional[Membership_Cfg_Base]
membership_member_list: Optional[list] # Membership_Member_Base() List of membership members
membership_type_person_list: Optional[list] # Membership_Type_Person_Base() List of people for membership type
product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)

View File

@@ -9,36 +9,26 @@ from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.membership_cfg_models import Membership_Cfg_Base
from app.models.membership_member_profile_models import Membership_Member_Profile_Base
from app.models.membership_type_models import Membership_Type_Base
# from app.models.person_models import Person_Base
from app.models.product_models import Product_Base
# from app.models.user_models import User_Base
class Membership_Member_Base(BaseModel):
class Membership_Type_Person_Base(BaseModel):
log.setLevel(logging.WARNING)
log.debug(locals())
id_random: Optional[str] = Field(
**base_fields['membership_member_id_random'],
alias = 'membership_member_id_random',
**base_fields['membership_type_person_id_random'],
alias = 'membership_type_person_id_random',
default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
)
id: Optional[int] = Field(
alias = 'membership_member_id'
alias = 'membership_type_person_id'
)
account_id_random: Optional[str]
account_id: Optional[int]
membership_member_status_id: Optional[int] = Field(
alias = 'status_id'
)
membership_member_status_name: Optional[str] = Field(
alias = 'status_name'
)
membership_type_id_random: Optional[str] = Field(
alias = 'type_id_random',
) # NOTE: This is not optional
@@ -49,14 +39,18 @@ class Membership_Member_Base(BaseModel):
alias = 'type_name',
)
person_id_random: Optional[str]
person_id: Optional[int]
membership_person_id_random: Optional[str]
membership_person_id: Optional[int]
product_id_random: Optional[str]
product_id: Optional[int] # The product they purchased to get this membership
user_id_random: Optional[str]
user_id: Optional[int]
membership_type_status_id: Optional[int] = Field(
alias = 'status_id'
)
membership_type_status_name: Optional[str] = Field(
alias = 'status_name'
)
level: Optional[int] = Field(0, ge=0, lt=150)
@@ -77,32 +71,16 @@ class Membership_Member_Base(BaseModel):
updated_on: Optional[datetime.datetime] = None
# Including other related objects
membership_type: Optional[Membership_Type_Base] # The membership option they currently have
membership_cfg: Optional[Membership_Cfg_Base] = Field(
alias = 'cfg',
)
membership_group_list: Optional[list] = Field(
alias = 'group_list',
) # Membership_Group_Base() The membership groups they are a part of
membership_member_profile: Optional[Membership_Member_Profile_Base] = Field(
alias = 'profile',
)
# membership_member_profile: Optional[Membership_Member_Profile_Base] = Field(
# alias = 'profile',
# )
# = Field(
# alias = 'extended_membership_member_profile',
# )
person: Optional[dict] # should be Person_Base() but causes an import loop
membership_type: Optional[Membership_Type_Base] # The membership option they currently have
product: Optional[Product_Base] # The product used to become a member?
user: Optional[dict] # should be User_Base() but causes an import loop
extended_member_profile: Optional[dict] = {}
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('membership_member_id_random', always=True)
def membership_member_id_random_copy(cls, v, values, **kwargs):
#@validator('membership_type_person_id_random', always=True)
def membership_type_person_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
@@ -111,12 +89,12 @@ class Membership_Member_Base(BaseModel):
return None
@validator('id', always=True)
def membership_member_id_lookup(cls, v, values, **kwargs):
def membership_type_person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_member')
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_type_person')
return None
@validator('account_id', always=True)
@@ -137,15 +115,6 @@ class Membership_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
return None
@validator('person_id', always=True)
def person_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['person_id_random']:
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
return None
@validator('product_id', always=True)
def product_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
@@ -155,15 +124,6 @@ class Membership_Member_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
return None
@validator('user_id', always=True)
def user_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['user_id_random']:
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
return None
class Config:
underscore_attrs_are_private = True
allow_population_by_field_name = True

View File

@@ -10,7 +10,7 @@ from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes
# from app.models.account_models import Account_Base
from app.models.contact_models import Contact_Base
from app.models.membership_member_models import Membership_Member_Base
from app.models.membership_person_models import Membership_Person_Base
from app.models.organization_models import Organization_Base
# from app.models.user_models import User_Base
@@ -39,6 +39,9 @@ class Person_Base(BaseModel):
user_id_random: Optional[str]
user_id: Optional[int]
membership_person_id_random: Optional[str] # Linked from membership_person using the v_person view
membership_person_id: Optional[int] # Linked from membership_person using the v_person view
given_name: Optional[str]
family_name: Optional[str]
middle_name: Optional[str]
@@ -63,8 +66,11 @@ class Person_Base(BaseModel):
hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2
journal_list: Optional[list] # Journal_Base() # Priority l3
contact: Optional[Union[Contact_Base, None]]
membership_member: Optional[Membership_Member_Base] # Priority l2 member type of the person
membership_group_list: Optional[list] # Membership_Group_Base() list of groups the person is a part of
membership_person: Optional[Membership_Person_Base] # Priority l2 member person record of the person
membership_type_list: Optional[list] # Membership_Type_Base() list of member types the person has... for now this should be only one at most.
membership_type_person_list: Optional[list] # Membership_Type_Person_Base() list of member type person records... for now this should be only one at most.
membership_group_list: Optional[list] # Membership_Group_Base() list of member groups the person has
membership_group_person_list: Optional[list] # Membership_Group_Person_Base() list of member group person records
order_list: Optional[list] # Order_Base() # Priority l2
order_cart_list: Optional[list] # Order_Base() # Priority l2
organization: Optional[Union[Organization_Base, None]]

View File

@@ -9,7 +9,7 @@ from app.lib_general import log, logging, secure_hash_string
from app.models.common_field_schema import base_fields, default_num_bytes
# from app.models.contact_models import Contact_Base
# from app.models.membership_member_models import Membership_Member_Base
# from app.models.membership_person_models import Membership_Person_Base
from app.models.organization_models import Organization_Base
from app.models.person_models import Person_Base # Causes circular import
# from app.models.user_role_models import User_Role_Base
@@ -194,8 +194,8 @@ class User_Out_Base(BaseModel):
event_list: Optional[list] # Event_Base() # Priority complete
hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l3
journal_list: Optional[list] # Journal_Base() # Priority l3
# membership_member: Optional[Membership_Member_Base] # Priority l2
# membership_member_list: Optional[list] # Membership_Base() ???
# membership_person: Optional[Membership_Person_Base] # Priority l2
# membership_person_list: Optional[list] # Membership_Base() ???
order_list: Optional[list] # Order_Base() # Priority l2
order_cart_list: Optional[list] # Order_Base() # Priority l2
organization: Optional[Union[Organization_Base, None]] # Organization_Base() # Priority l3
@@ -278,8 +278,6 @@ class User_Base(BaseModel):
event_list: Optional[list] # Event_Base() # Priority l1
hosted_file_list: Optional[list] # Hosted_File_Base() # Priority l2
journal_list: Optional[list] # Journal_Base() # Priority l3
# membership_member: Optional[Membership_Member_Base] # Priority l2
# membership_member_list: Optional[list] # Membership_Base() ???
order_list: Optional[list] # Order_Base() # Priority l2
order_cart_list: Optional[list] # Order_Base() # Priority l2
organization: Optional[Union[Organization_Base, None]] # Organization_Base() # Priority l3

View File

@@ -13,7 +13,7 @@ from app.methods.account_methods import load_account_obj, load_account_obj_membe
from app.methods.account_cfg_methods import load_account_cfg_obj
from app.methods.event_methods import get_event_rec_list, load_event_obj
# from app.methods.membership_group_methods import get_membership_group_rec_list, load_membership_group_obj
# from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
# from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
# from app.methods.membership_type_methods import get_membership_type_rec_list, load_membership_type_obj
# from app.methods.post_methods import get_post_rec_list, load_post_obj
@@ -149,9 +149,9 @@ async def get_account_obj_new(
inc_membership_cfg: bool = False,
# inc_membership_group: bool = False,
inc_membership_group_list: bool = False,
inc_membership_member: bool = False,
inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False,
inc_membership_person: bool = False,
inc_membership_person_list: bool = False,
inc_membership_person_profile: bool = False,
# inc_membership_type: bool = False,
inc_membership_type_list: bool = False,
# inc_order: bool = False,
@@ -223,9 +223,9 @@ async def get_account_obj_new(
inc_journal_entry_list = inc_journal_entry_list,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member = inc_membership_member,
inc_membership_member_list = inc_membership_member_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person = inc_membership_person,
inc_membership_person_list = inc_membership_person_list,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type_list = inc_membership_type_list,
# inc_order = inc_order,
inc_order_list = inc_order_list,

View File

@@ -34,9 +34,11 @@ from app.models.journal_entry_models import *
from app.models.log_client_viewing_models import Log_Client_Viewing_Base
from app.models.membership_cfg_models import *
from app.models.membership_group_models import *
from app.models.membership_group_member_models import *
from app.models.membership_member_models import *
from app.models.membership_group_person_models import *
from app.models.membership_person_models import *
from app.models.membership_person_profile_models import *
from app.models.membership_type_models import *
from app.models.membership_type_person_models import *
from app.models.order_models import *
from app.models.order_cart_models import *
from app.models.organization_models import *
@@ -89,10 +91,11 @@ obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'base_name': Jo
obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base}
obj_type_li['membership_cfg'] = {'table_name': 'v_membership_cfg', 'base_name': Membership_Cfg_Base}
obj_type_li['membership_group'] = {'table_name': 'v_membership_group', 'base_name': Membership_Group_Base}
obj_type_li['membership_group_member'] = {'table_name': 'v_membership_group_member', 'base_name': Membership_Group_Member_Base}
obj_type_li['membership_member'] = {'table_name': 'v_membership_member', 'base_name': Membership_Member_Base}
obj_type_li['membership_member_profile'] = {'table_name': 'v_membership_member_profile', 'base_name': Membership_Member_Profile_Base}
obj_type_li['membership_group_person'] = {'table_name': 'v_membership_group_person', 'base_name': Membership_Group_Person_Base}
obj_type_li['membership_person'] = {'table_name': 'v_membership_person', 'base_name': Membership_Person_Base}
obj_type_li['membership_person_profile'] = {'table_name': 'v_membership_person_profile', 'base_name': Membership_Person_Profile_Base}
obj_type_li['membership_type'] = {'table_name': 'v_membership_type', 'base_name': Membership_Type_Base}
obj_type_li['membership_type_person'] = {'table_name': 'v_membership_type_person', 'base_name': Membership_Type_Person_Base}
#obj_type_li['message'] = {'table_name': 'message', 'base_name': Message_Base} #'v_message'
obj_type_li['order'] = {'table_name': 'v_order', 'base_name': Order_Base}
obj_type_li['order_cart'] = {'table_name': 'v_order_cart', 'base_name': Order_Cart_Base}
@@ -133,8 +136,8 @@ obj_type_li['user_role'] = {'table_name': 'v_user_role', 'base_name': User_Role_
#obj_type_li['stripe_customer'] = {'table_name': 'stripe_customer', 'base_name': Stripe_Customer_Base}
#obj_type_li['stripe_log'] = {'table_name': 'stripe_log', 'base_name': Stipe_Log_Base}
# obj_type_li['c_idda_membership_member_profile'] = {'table_name': 'c_idda_membership_member_profile', 'base_name': C_Idda_membership_member_profile_Base}
# obj_type_li['c_osit_demo_membership_member_profile'] = {'table_name': 'c_osit_demo_membership_member_profile', 'base_name': C_Osit_Demo_membership_member_profile_Base}
# obj_type_li['c_idda_membership_person_profile'] = {'table_name': 'c_idda_membership_person_profile', 'base_name': C_Idda_membership_person_profile_Base}
# obj_type_li['c_osit_demo_membership_person_profile'] = {'table_name': 'c_osit_demo_membership_person_profile', 'base_name': C_Osit_Demo_membership_person_profile_Base}
router = APIRouter()

View File

@@ -30,7 +30,7 @@ async def get_lookup_li(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
allowed_lookup_tables = ['country', 'country_subdivision', 'event_session_type', 'file_purpose', 'membership_member_status', 'order_status', 'post_topic', 'time_zone', 'user_status']
allowed_lookup_tables = ['country', 'country_subdivision', 'event_session_type', 'file_purpose', 'membership_group_status', 'membership_person_status', 'membership_type_status', 'order_status', 'post_topic', 'time_zone', 'user_status']
if for_lookup_name in allowed_lookup_tables: pass
else:

View File

@@ -102,7 +102,7 @@ async def get_account_membership_group_obj_li(
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group_member_list: bool = False,
inc_membership_group_person_list: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
inc_product_list: bool = False,
@@ -134,7 +134,7 @@ async def get_account_membership_group_obj_li(
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group_member_list = inc_membership_group_member_list,
inc_membership_group_person_list = inc_membership_group_person_list,
inc_organization = inc_organization,
inc_person = inc_person,
inc_product_list = inc_product_list,
@@ -160,7 +160,7 @@ async def lookup_membership_group_obj(
for_obj_id: Union[int,str],
for_obj_type: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...),
inc_membership_member_profile: bool = True,
inc_membership_person_profile: bool = True,
inc_membership_cfg: bool = True,
inc_extended_profile: bool = True,
inc_person: bool = True,
@@ -214,7 +214,7 @@ async def lookup_membership_group_obj(
membership_group_id = membership_group_obj_result.get('membership_group_id', None)
membership_group_obj = load_membership_group_obj(
membership_group_id = membership_group_id,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
@@ -228,7 +228,7 @@ async def lookup_membership_group_obj(
membership_group_obj_li.append(
load_membership_group_obj(
membership_group_id = membership_group_id,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
@@ -253,8 +253,8 @@ async def get_membership_group_obj(
inc_contact: bool = False, # Per member
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # List of groups per member
inc_membership_group_member_list: bool = False, # List of members belonging to this group
inc_membership_member_profile: bool = False, # Per member
inc_membership_group_person_list: bool = False, # List of members belonging to this group
inc_membership_person_profile: bool = False, # Per member
inc_organization: bool = False, # Per member
inc_person: bool = False, # Per member
inc_product: bool = False, # Per member
@@ -282,8 +282,8 @@ async def get_membership_group_obj(
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
# inc_membership_group_list = inc_membership_group_list,
inc_membership_group_member_list = inc_membership_group_member_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_group_person_list = inc_membership_group_person_list,
inc_membership_person_profile = inc_membership_person_profile,
inc_organization = inc_organization,
inc_person = inc_person,
# inc_product = inc_product,

View File

@@ -9,18 +9,18 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select,
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
from app.models.membership_member_models import Membership_Member_Base
from app.models.membership_person_models import Membership_Person_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@router.post('/membership/member', response_model=Resp_Body_Base)
async def post_membership_member_obj(
obj: Membership_Member_Base,
@router.post('/membership/person', response_model=Resp_Body_Base)
async def post_membership_person_obj(
obj: Membership_Person_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
@@ -29,7 +29,7 @@ async def post_membership_member_obj(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
obj_type = 'membership_person'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type=obj_type,
@@ -41,10 +41,10 @@ async def post_membership_member_obj(
return result
@router.patch('/membership/member/{obj_id}', response_model=Resp_Body_Base)
async def patch_membership_member_obj(
@router.patch('/membership/person/{obj_id}', response_model=Resp_Body_Base)
async def patch_membership_person_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
obj: Membership_Member_Base = None,
obj: Membership_Person_Base = None,
#x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
@@ -53,7 +53,7 @@ async def patch_membership_member_obj(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
obj_type = 'membership_person'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type)
obj_data_dict['id_random'] = obj_id
@@ -68,8 +68,8 @@ async def patch_membership_member_obj(
return result
@router.get('/membership/member/list', response_model=Resp_Body_Base)
async def get_membership_member_obj_li(
@router.get('/membership/person/list', response_model=Resp_Body_Base)
async def get_membership_person_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...),
@@ -79,7 +79,7 @@ async def get_membership_member_obj_li(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
obj_type = 'membership_person'
result = get_obj_li_template(
obj_type=obj_type,
for_obj_type=for_obj_type,
@@ -91,10 +91,10 @@ async def get_membership_member_obj_li(
# ### BEGIN ### API Membership Member ### get_account_obj_membership_member_list() ###
# ### BEGIN ### API Membership Person ### get_account_obj_membership_person_list() ###
# Working well as of 2021-06-24. Using as a template for other routes.
@router.get('/account/{account_id}/membership/member/list', response_model=Resp_Body_Base)
async def get_account_obj_membership_member_list(
@router.get('/account/{account_id}/membership/person/list', response_model=Resp_Body_Base)
async def get_account_obj_membership_person_list(
account_id: str = Query(..., min_length=1, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists
enabled: str = 'enabled', # For now this covers any included objects or object lists
@@ -104,10 +104,10 @@ async def get_account_obj_membership_member_list(
inc_membership_cfg: bool = False,
# inc_membership_group: bool = False,
inc_membership_group_list: bool = False,
# inc_membership_member: bool = False,
# inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False,
inc_membership_member_profile_cust: bool = False,
# inc_membership_person: bool = False,
# inc_membership_person_list: bool = False,
inc_membership_person_profile: bool = False,
inc_membership_person_profile_cust: bool = False,
inc_membership_type: bool = False,
# inc_membership_type_list: bool = False,
# inc_order: bool = False,
@@ -130,16 +130,16 @@ async def get_account_obj_membership_member_list(
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# Updated 2021-06-23
if membership_member_rec_list_result := get_membership_member_rec_list(
if membership_person_rec_list_result := get_membership_person_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
limit = limit,
enabled = enabled,
):
membership_member_result_list = []
for membership_member_rec in membership_member_rec_list_result:
if load_membership_member_result := load_membership_member_obj(
membership_member_id = membership_member_rec.get('membership_member_id', None),
membership_person_result_list = []
for membership_person_rec in membership_person_rec_list_result:
if load_membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_rec.get('membership_person_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
@@ -149,10 +149,10 @@ async def get_account_obj_membership_member_list(
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group_list = inc_membership_group_list,
# inc_membership_group_member_list = inc_membership_group_member_list,
# inc_membership_member = inc_membership_member,
# inc_membership_member_list = inc_membership_member_list,
inc_membership_member_profile = inc_membership_member_profile,
# inc_membership_group_person_list = inc_membership_group_person_list,
# inc_membership_person = inc_membership_person,
# inc_membership_person_list = inc_membership_person_list,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type = inc_membership_type,
# inc_order = inc_order,
inc_organization = inc_organization,
@@ -161,29 +161,98 @@ async def get_account_obj_membership_member_list(
# inc_product_list = inc_product_list,
inc_user = inc_user,
):
membership_member_result_list.append(load_membership_member_result)
membership_person_result_list.append(load_membership_person_result)
else:
membership_member_result_list.append(None)
response_data = membership_member_result_list
membership_person_result_list.append(None)
response_data = membership_person_result_list
else:
return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=response_data)
# ### END ### API Membership Member ### get_account_obj_membership_member_list() ###
# ### END ### API Membership Person ### get_account_obj_membership_person_list() ###
# ### BEGIN ### API Membership Person ### get_person_obj_membership_person() ###
# Working well as of 2021-07-09. Using as a template for other routes.
@router.get('/person/{person_id}/membership_person', response_model=Resp_Body_Base)
async def get_person_obj_membership_person(
person_id: str = Query(..., min_length=1, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists
enabled: str = 'enabled', # For now this covers any included objects or object lists
from_datetime: datetime.datetime = None,
to_datetime: datetime.datetime = None,
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
# inc_membership_group: bool = False, # The primary membership group
inc_membership_group_list: bool = False, # The list of all membership groups a person is a part of
inc_membership_group_person_list: bool = False,
# inc_membership_person: bool = False, # Priority l2
inc_membership_person_profile: bool = False, # Profile?
inc_membership_person_profile_cust: bool = False, # Extended profile?
inc_membership_type: bool = False, # The primary membership type
# inc_membership_type_list: bool = False, # The list of all membership types a person is a part of
inc_membership_type_person: bool = False,
# inc_order: bool = False,
inc_organization: bool = False,
inc_product: bool = False, # The product the person actually purchased for a member_type or member_group
inc_product_list: bool = False, # The list of products that give access to a member_type or member_group
inc_user: bool = False,
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else: return mk_resp(data=None, status_code=404)
if membership_person_rec := sql_select(table_name='v_membership_person', field_name='person_id', field_value=person_id): pass
else: return False
membership_person_id = membership_person_rec.get('membership_person_id', None)
log.debug(membership_person_id)
if membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = True,
enabled = enabled,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
# inc_membership_group = inc_membership_group, # The primary membership group, if there is one.
inc_membership_group_list = inc_membership_group_list, # All membership groups they are a part of.
inc_membership_group_person_list = inc_membership_group_person_list,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_person_profile_cust = inc_membership_person_profile_cust,
inc_membership_type = inc_membership_type, # The primary membership type, if there is one.
# inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of.
inc_membership_type_person = inc_membership_type_person,
# inc_membership_type_person_list = inc_membership_type_list,
# inc_person = inc_person,
inc_product = inc_product,
# inc_product_list = inc_product_list,
# inc_user = inc_user,
):
response_data = membership_person_result
else: return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=response_data)
# ### END ### API Membership Person ### get_person_obj_membership_person() ###
# Look up is only for account, person, or user records
@router.get('/membership/member/lookup', response_model=Resp_Body_Base)
async def lookup_membership_member_obj(
@router.get('/membership/person/lookup', response_model=Resp_Body_Base)
async def lookup_membership_person_obj(
for_obj_id: Union[int,str],
for_obj_type: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...),
inc_membership_cfg: bool = True,
inc_membership_member_profile: bool = True,
inc_membership_member_profile_cust: bool = True,
inc_membership_person_profile: bool = True,
inc_membership_person_profile_cust: bool = True,
inc_person: bool = True,
inc_user: bool = True,
by_alias: bool = True,
@@ -192,8 +261,8 @@ async def lookup_membership_member_obj(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
base_name = Membership_Member_Base
obj_type = 'membership_person'
base_name = Membership_Person_Base
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return mk_resp(data=False, status_code=404) # Not Found
@@ -203,78 +272,78 @@ async def lookup_membership_member_obj(
as_list = False
if for_obj_type == 'account' and for_obj_id:
data['account_id'] = for_obj_id
sql_where_for_obj_type = """`membership_member`.account_id = :account_id"""
sql_where_for_obj_type = """`membership_person`.account_id = :account_id"""
sql_limit = ''
as_list = True
elif for_obj_type == 'person' and for_obj_id:
data['person_id'] = for_obj_id
sql_where_for_obj_type = """`membership_member`.person_id = :person_id"""
sql_where_for_obj_type = """`membership_person`.person_id = :person_id"""
sql_limit = 'LIMIT 1'
elif for_obj_type == 'user' and for_obj_id:
data['user_id'] = for_obj_id
sql_where_for_obj_type = """`membership_member`.user_id = :user_id"""
sql_where_for_obj_type = """`membership_person`.user_id = :user_id"""
sql_limit = 'LIMIT 1'
elif for_obj_type == 'membership_member' and for_obj_id:
data['membership_member_id'] = for_obj_id
sql_where_for_obj_type = """`membership_member`.id = :membership_member_id"""
elif for_obj_type == 'membership_person' and for_obj_id:
data['membership_person_id'] = for_obj_id
sql_where_for_obj_type = """`membership_person`.id = :membership_person_id"""
sql_limit = 'LIMIT 1'
else:
log.debug(f'Object type={for_obj_type}; Object ID={for_obj_id}')
return mk_resp(data=False, status_code=400) # Bad Request
sql = f"""
SELECT id AS 'membership_member_id', id_random AS 'membership_member_id_random'
FROM `membership_member` AS `membership_member`
SELECT id AS 'membership_person_id', id_random AS 'membership_person_id_random'
FROM `membership_person` AS `membership_person`
WHERE {sql_where_for_obj_type}
{sql_limit}
"""
# This will return a list if selecting by account ID
membership_member_obj_result = sql_select(data=data, sql=sql, as_list=as_list)
if isinstance(membership_member_obj_result, dict):
membership_member_id = membership_member_obj_result.get('membership_member_id', None)
membership_member_obj = load_membership_member_obj(
membership_member_id = membership_member_id,
membership_person_obj_result = sql_select(data=data, sql=sql, as_list=as_list)
if isinstance(membership_person_obj_result, dict):
membership_person_id = membership_person_obj_result.get('membership_person_id', None)
membership_person_obj = load_membership_person_obj(
membership_person_id = membership_person_id,
inc_membership_cfg = inc_membership_cfg,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_member_profile_cust = inc_membership_member_profile_cust,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_person_profile_cust = inc_membership_person_profile_cust,
inc_person = inc_person,
inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset)
data = membership_member_obj
elif isinstance(membership_member_obj_result, list):
membership_member_obj_li = []
for membership_member_obj in membership_member_obj_result:
membership_member_id = membership_member_obj.get('membership_member_id', None)
membership_member_obj_li.append(
load_membership_member_obj(
membership_member_id = membership_member_id,
data = membership_person_obj
elif isinstance(membership_person_obj_result, list):
membership_person_obj_li = []
for membership_person_obj in membership_person_obj_result:
membership_person_id = membership_person_obj.get('membership_person_id', None)
membership_person_obj_li.append(
load_membership_person_obj(
membership_person_id = membership_person_id,
inc_membership_cfg = inc_membership_cfg,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_member_profile_cust = inc_membership_member_profile_cust,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_person_profile_cust = inc_membership_person_profile_cust,
inc_person = inc_person,
inc_user = inc_user,
).dict(by_alias=by_alias, exclude_unset=exclude_unset)
)
data = membership_member_obj_li
data = membership_person_obj_li
else:
log.debug(membership_member_obj_result)
log.debug(membership_person_obj_result)
return mk_resp(data=None, status_code=404) # Not Found
return mk_resp(data=data)
# ### BEGIN ### API Membership Group ### get_membership_member_obj() ###
# ### BEGIN ### API Membership Group ### get_membership_person_obj() ###
# Working well as of 2021-06-24. Using as a template for other routes.
@router.get('/membership/member/{membership_member_id}', response_model=Resp_Body_Base)
async def get_membership_member_obj(
membership_member_id: str = Query(..., min_length=1, max_length=22),
@router.get('/membership/person/{membership_person_id}', response_model=Resp_Body_Base)
async def get_membership_person_obj(
membership_person_id: str = Query(..., min_length=1, max_length=22),
enabled: str = 'enabled', # For now this covers any included objects or object lists
limit: int = 500, # For now this covers any included objects or object lists
inc_address: bool = False, # Per member
inc_contact: bool = False, # Per member
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # List of groups per member
inc_membership_member_profile: bool = False,
inc_membership_person_profile: bool = False,
inc_membership_type: bool = False,
# inc_order: bool = False,
inc_organization: bool = False,
@@ -289,11 +358,11 @@ async def get_membership_member_obj(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_member_id := redis_lookup_id_random(record_id_random=membership_member_id, table_name='membership_member'): pass
if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass
else: return mk_resp(data=None, status_code=404)
if membership_member_result := load_membership_member_obj(
membership_member_id = membership_member_id,
if membership_person_result := load_membership_person_obj(
membership_person_id = membership_person_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
@@ -303,7 +372,7 @@ async def get_membership_member_obj(
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type = inc_membership_type,
# inc_order = inc_order,
inc_organization = inc_organization,
@@ -316,19 +385,19 @@ async def get_membership_member_obj(
else:
return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=membership_member_result)
# ### END ### API Membership ### get_membership_member_obj() ###
return mk_resp(data=membership_person_result)
# ### END ### API Membership ### get_membership_person_obj() ###
@router.delete('/membership/member/{obj_id}', response_model=Resp_Body_Base)
async def delete_membership_member_obj(
@router.delete('/membership/person/{obj_id}', response_model=Resp_Body_Base)
async def delete_membership_person_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_member'
obj_type = 'membership_person'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,

View File

@@ -102,7 +102,7 @@ async def get_account_membership_type_obj_li(
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_member_list: bool = False,
inc_membership_person_list: bool = False,
inc_organization: bool = False,
inc_person: bool = False,
inc_product_list: bool = False,
@@ -134,7 +134,7 @@ async def get_account_membership_type_obj_li(
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_member_list = inc_membership_member_list,
inc_membership_person_list = inc_membership_person_list,
inc_organization = inc_organization,
inc_person = inc_person,
inc_product_list = inc_product_list,
@@ -160,7 +160,7 @@ async def lookup_membership_type_obj(
for_obj_id: Union[int,str],
for_obj_type: str = Query(..., min_length=2, max_length=50),
x_account_id: str = Header(...),
inc_membership_member_profile: bool = True,
inc_membership_person_profile: bool = True,
inc_membership_cfg: bool = True,
inc_extended_profile: bool = True,
inc_person: bool = True,
@@ -168,7 +168,7 @@ async def lookup_membership_type_obj(
by_alias: bool = True,
exclude_unset: bool = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'membership_type'
@@ -176,7 +176,7 @@ async def lookup_membership_type_obj(
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
else: return mk_resp(data=False, status_code=404) # Not Found
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
data = {}
as_list = False
@@ -214,7 +214,7 @@ async def lookup_membership_type_obj(
membership_type_id = membership_type_obj_result.get('membership_type_id', None)
membership_type_obj = load_membership_type_obj(
membership_type_id = membership_type_id,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
@@ -228,7 +228,7 @@ async def lookup_membership_type_obj(
membership_type_obj_li.append(
load_membership_type_obj(
membership_type_id = membership_type_id,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_cfg = inc_membership_cfg,
inc_extended_profile = inc_extended_profile,
inc_person = inc_person,
@@ -253,8 +253,8 @@ async def get_membership_type_obj(
inc_contact: bool = False, # Per member
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # Per member
inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False, # Per member
inc_membership_person_list: bool = False,
inc_membership_person_profile: bool = False, # Per member
inc_organization: bool = False, # Per member
inc_person: bool = False, # Per member
inc_product: bool = False, # Per member
@@ -264,7 +264,7 @@ async def get_membership_type_obj(
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_type_id := redis_lookup_id_random(record_id_random=membership_type_id, table_name='membership_type'): pass
@@ -282,8 +282,8 @@ async def get_membership_type_obj(
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member_list = inc_membership_member_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_person_list = inc_membership_person_list,
inc_membership_person_profile = inc_membership_person_profile,
inc_organization = inc_organization,
inc_person = inc_person,
inc_product = inc_product,

View File

@@ -9,7 +9,7 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select,
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.membership_member_methods import get_membership_member_rec_list, load_membership_member_obj
from app.methods.membership_person_methods import get_membership_person_rec_list, load_membership_person_obj
from app.methods.order_methods import get_order_rec_list, load_order_obj
from app.methods.person_methods import create_update_person_obj, load_person_obj, update_person_obj
@@ -20,7 +20,7 @@ from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@router.post('', response_model=Resp_Body_Base)
@router.post('/person', response_model=Resp_Body_Base)
async def post_person_obj(
obj: Person_Base,
x_account_id: str = Header(...),
@@ -43,7 +43,7 @@ async def post_person_obj(
return result
@router.patch('/{obj_id}', response_model=Resp_Body_Base)
@router.patch('/person/{obj_id}', response_model=Resp_Body_Base)
async def patch_person_obj(
obj: Person_Base,
obj_id: str = Query(..., min_length=1, max_length=22),
@@ -72,7 +72,7 @@ async def patch_person_obj(
# ### BEGIN ### API Person ### post_person_json() ###
# Updated 2021-06-25
@router.post('/json', response_model=Resp_Body_Base)
@router.post('/person/json', response_model=Resp_Body_Base)
async def post_person_json(
person_obj: Person_Base,
# person_id: str = Query(..., min_length=1, max_length=22),
@@ -113,7 +113,7 @@ async def post_person_json(
# ### BEGIN ### API Person ### patch_person_json() ###
# Updated 2021-06-25
@router.patch('/{person_id}/json', response_model=Resp_Body_Base)
@router.patch('/person/{person_id}/json', response_model=Resp_Body_Base)
async def patch_person_json(
person_obj: Person_Base,
person_id: str = Query(..., min_length=1, max_length=22),
@@ -152,7 +152,7 @@ async def patch_person_json(
@router.get('/list', response_model=Resp_Body_Base)
@router.get('/person/list', response_model=Resp_Body_Base)
async def get_person_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
@@ -176,7 +176,7 @@ async def get_person_obj_li(
# ### BEGIN ### API Person ### get_person_obj() ###
# Working well as of 2021-06-25. Using as a template for other routes.
@router.get('/{person_id}', response_model=Resp_Body_Base)
@router.get('/person/{person_id}', response_model=Resp_Body_Base)
async def get_person_obj(
person_id: str = Query(..., min_length=1, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists
@@ -188,8 +188,16 @@ async def get_person_obj(
# inc_hosted_file_list: bool = False, # Priority l3
inc_journal_list: bool = False, # Priority l2
# inc_journal_entry_list: bool = False, # Priority l3
inc_membership_member: bool = False, # Priority l2
# inc_membership_list: bool = False, # ???
# inc_membership_group: bool = False, # The primary membership group
# inc_membership_group_person: bool = False,
inc_membership_group_list: bool = False, # The list of all membership groups a person is a part of
inc_membership_group_person_list: bool = False,
inc_membership_person: bool = False, # Priority l2
inc_membership_person_profile: bool = False, # Priority l2
inc_membership_type: bool = False, # The primary membership type
inc_membership_type_person: bool = False,
# inc_membership_type_list: bool = False, # The list of all membership types a person is a part of
# inc_membership_type_person_list: bool = False,
inc_order_line_list: bool = False, # Priority l1
inc_order_list: bool = False, # Priority l1
inc_order_cart_list: bool = False, # Priority l1
@@ -206,8 +214,7 @@ async def get_person_obj(
log.debug(locals())
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else:
return mk_resp(data=None, status_code=404)
else: return mk_resp(data=None, status_code=404)
if person_dict := load_person_obj(
person_id = person_id,
@@ -221,8 +228,12 @@ async def get_person_obj(
# inc_hosted_file_list = inc_hosted_file_list,
inc_journal_list = inc_journal_list,
# inc_journal_entry_list = inc_journal_entry_list,
inc_membership_member = inc_membership_member,
# inc_membership_list = inc_membership_list, # ???
inc_membership_group_list = inc_membership_group_list,
inc_membership_group_person_list = inc_membership_group_person_list,
inc_membership_person = inc_membership_person,
inc_membership_person_profile = inc_membership_person_profile,
inc_membership_type = inc_membership_type,
inc_membership_type_person = inc_membership_type_person,
inc_order_line_list = inc_order_line_list,
inc_order_list = inc_order_list,
inc_order_cart_list = inc_order_cart_list,
@@ -245,81 +256,7 @@ async def get_person_obj(
# ### BEGIN ### API Person ### get_person_obj_order_list() ###
# Working well as of 2021-06-28. Using as a template for other routes.
@router.get('/{person_id}/membership_member', response_model=Resp_Body_Base)
async def get_person_obj_membership_member(
person_id: str = Query(..., min_length=1, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists
enabled: str = 'enabled', # For now this covers any included objects or object lists
from_datetime: datetime.datetime = None,
to_datetime: datetime.datetime = None,
inc_address: bool = False,
inc_contact: bool = False,
inc_membership_cfg: bool = False,
inc_membership_group_list: bool = False, # Per member
inc_membership_member_list: bool = False,
inc_membership_member_profile: bool = False, # Per member
inc_membership_member_profile_cust: bool = False, # Extended profile?
inc_membership_type: bool = False, # The member_type the member is
# inc_order: bool = False,
inc_organization: bool = False,
inc_product: bool = False, # The product the person actually purchased for a member_type or member_group
inc_product_list: bool = False, # The list of products that give access to a member_type or member_group
inc_user: bool = False,
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else:
return mk_resp(data=None, status_code=404)
# Updated 2021-06-28
if membership_member_rec_list_result := get_membership_member_rec_list(
for_obj_type = 'person',
for_obj_id = person_id,
limit = limit,
enabled = enabled,
):
membership_member_result_list = []
for membership_member_rec in membership_member_rec_list_result:
if load_membership_member_result := load_membership_member_obj(
membership_member_id = membership_member_rec.get('membership_member_id', None),
limit = limit,
enabled = enabled,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
inc_membership_cfg = inc_membership_cfg,
inc_membership_group_list = inc_membership_group_list,
inc_membership_member_profile = inc_membership_member_profile,
inc_membership_member_profile_cust = inc_membership_member_profile_cust,
inc_membership_type = inc_membership_type,
# inc_order = inc_order,
inc_organization = inc_organization,
# inc_person = inc_person,
inc_product = inc_product,
inc_product_list = inc_product_list,
inc_user = inc_user,
):
membership_member_result_list.append(load_membership_member_result)
else:
membership_member_result_list.append(None)
response_data = membership_member_result_list
else:
return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=response_data)
# ### END ### API Person ### get_person_obj_order_list() ###
# ### BEGIN ### API Person ### get_person_obj_order_list() ###
# Working well as of 2021-06-28. Using as a template for other routes.
@router.get('/{person_id}/order_list', response_model=Resp_Body_Base)
@router.get('/person/{person_id}/order_list', response_model=Resp_Body_Base)
async def get_person_obj_order_list(
person_id: str = Query(..., min_length=1, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists
@@ -378,7 +315,7 @@ async def get_person_obj_order_list(
# ### END ### API Person ### get_person_obj_order_list() ###
@router.delete('/{obj_id}', response_model=Resp_Body_Base)
@router.delete('/person/{obj_id}', response_model=Resp_Body_Base)
async def delete_person_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
@@ -391,4 +328,4 @@ async def delete_person_obj(
obj_type=obj_type,
obj_id=obj_id,
)
return result
return result

View File

@@ -576,7 +576,7 @@ async def get_user_obj(
# inc_hosted_file_list: bool = False, # Priority l3
inc_journal_list: bool = False, # Priority l2
# inc_journal_entry_list: bool = False, # Priority l3
inc_membership_member: bool = False, # Priority l2
inc_membership_person: bool = False, # Priority l2
# inc_membership_list: bool = False, # ???
inc_order_line_list: bool = False, # Priority l1
inc_order_list: bool = False, # Priority l1
@@ -611,7 +611,7 @@ async def get_user_obj(
# inc_hosted_file_list = inc_hosted_file_list,
inc_journal_list = inc_journal_list,
# inc_journal_entry_list = inc_journal_entry_list,
inc_membership_member = inc_membership_member,
inc_membership_person = inc_membership_person,
# inc_membership_list = inc_membership_list, # ???
inc_order_line_list = inc_order_line_list,
inc_order_list = inc_order_list,