Files
OSIT-AE-API-FastAPI/app/methods/membership_person_methods.py
2022-01-18 20:03:46 -05:00

690 lines
34 KiB
Python

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.lib_general import log, logging
from app.db_sql import redis_lookup_id_random, sql_insert, sql_insert_or_update, sql_select, sql_update
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_person_group_methods import get_membership_person_group_rec_list, load_membership_person_group_obj
from app.methods.membership_person_profile_methods import get_membership_person_profile_rec_list, load_membership_person_profile_obj
from app.methods.membership_person_type_methods import create_membership_person_type_obj, update_membership_person_type_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.common_field_schema import default_num_bytes
from app.models.membership_person_models import Membership_Person_Base
# ### BEGIN ### API Membership Person Methods ### load_membership_person_obj() ###
# Updated 2022-01-11
def load_membership_person_obj(
membership_person_id:int|str,
limit: int = 100,
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_group: bool = False, # Their primary membership group
inc_membership_person_group_list: bool = False, # List of membership group for a person - 2022-01-11
# inc_membership_person_group: bool = False, # The person information for their primary membership group
# inc_membership_person_group_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_person_profile: bool = False, # Membership profile for a person - 2022-01-11
inc_membership_person_type: bool = False, # Primary membership type for a person - 2022-01-11
# inc_membership_type_list: bool = False, # The list of membership types the person is a part of
# inc_membership_person_type: bool = False, # The person information for their primary membership type
# inc_membership_person_type_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_Person_Base:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass
else: return False
if membership_person_rec := sql_select(table_name='v_membership_person', record_id=membership_person_id):
log.debug(membership_person_rec)
else: return False
log.debug(membership_person_rec)
try:
membership_person_obj = Membership_Person_Base(**membership_person_rec)
log.debug(membership_person_obj)
except ValidationError as e:
log.error(e.json())
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_person_rec.get('account_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
):
membership_person_obj.membership_cfg = membership_cfg_obj_result
else: membership_person_obj.membership_cfg = {} # None
# if inc_membership_group: pass # The primary membership group the person is a part of. Not used at this time. 2021-12-16
# Updated 2021-01-12
if inc_membership_person_group_list: # List of membership group for a person - 2022-01-11
if membership_person_group_rec_list_result := get_membership_person_group_rec_list(
membership_person_id = membership_person_id,
limit = limit,
enabled = enabled,
):
membership_person_group_result_list = []
for membership_person_group_rec in membership_person_group_rec_list_result:
if load_membership_person_group_result := load_membership_person_group_obj(
membership_person_group_id = membership_person_group_rec.get('membership_person_group_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_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_person_group_result_list.append(load_membership_person_group_result)
else: membership_person_group_result_list.append(None)
membership_person_obj.membership_group_list = membership_person_group_result_list
else: membership_person_obj.membership_person_group_list = []
# Updated 2021-07-09
# if inc_membership_person_group_list: # The person information for the list of groups the member is a part of
# if membership_person_group_rec_list_result := get_membership_person_group_rec_list(
# for_obj_type = 'membership_person',
# for_obj_id = membership_person_id,
# # membership_person_id = membership_person_id,
# limit = limit,
# enabled = enabled,
# ):
# membership_person_group_result_list = []
# for membership_person_group_rec in membership_person_group_rec_list_result:
# if load_membership_person_group_result := load_membership_person_group_obj(
# membership_person_group_id = membership_person_group_rec.get('membership_person_group_id', None),
# limit = limit,
# by_alias = by_alias,
# exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
# enabled = enabled,
# # inc_membership_person_group_list = inc_membership_person_group_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_person_group_result_list.append(load_membership_person_group_result)
# else: membership_person_group_result_list.append(None)
# membership_person_obj.membership_person_group_list = membership_person_group_result_list
# else: membership_person_obj.membership_person_group_list = []
# Updated 2021-06-21
if inc_membership_person_profile: # Membership profile for a person - 2022-01-11
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,
inc_address = inc_address,
inc_contact = inc_contact,
# inc_membership = inc_membership,
# inc_membership_cfg = inc_membership_cfg,
inc_organization = inc_organization,
):
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-01-12
if inc_membership_person_type: # Primary membership type for a person - 2022-01-11
from app.methods.membership_person_type_methods import load_membership_person_type_obj
membership_person_type_id = membership_person_rec.get('membership_person_type_id', None)
log.debug(membership_person_type_id)
if membership_person_type_result := load_membership_person_type_obj(
membership_person_type_id = membership_person_type_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 = inc_membership,
# inc_membership_cfg = inc_membership_cfg,
# inc_organization = inc_organization,
inc_product_list = inc_product_list,
):
membership_person_obj.membership_person_type = membership_person_type_result
else: membership_person_obj.membership_person_type = {} # None
log.debug(membership_person_type_result)
# if inc_membership_person_type_list: pass # All of the membership types the person is a part of
# Updated 2021-07-09
# if inc_membership_person_type: # The primary membership type person information for the person
# from app.methods.membership_person_type_methods import load_membership_person_type_obj
# membership_person_type_id = membership_person_rec.get('membership_person_type_id', None)
# log.debug(membership_person_type_id)
# if membership_person_type_result := load_membership_person_type_obj(
# membership_person_type_id = membership_person_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_membership_type = inc_membership_type,
# inc_product = inc_product,
# ):
# membership_person_obj.membership_person_type = membership_person_type_result
# else: membership_person_obj.membership_person_type = {} # None
# log.debug(membership_person_type_result)
# if inc_membership_person_type_list: pass # All of the membership type person records for a person
# Updated 2021-06-18
if inc_person:
person_id = membership_person_rec.get('person_id', None)
log.debug(person_id)
if person_result := load_person_obj(
person_id = person_id,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_address = inc_address,
inc_contact = inc_contact,
# inc_organization = inc_organization,
# inc_user = inc_user,
):
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_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_person_obj.product = product_result
else: membership_person_obj.product = {} # None
log.debug(product_result)
# Updated 2021-06-18
# if inc_user:
# log.warning(f'This is being deprecated? load_membership_person_obj() inc_user')
# user_id = membership_person_rec.get('user_id', None)
# if user_result := load_user_obj(
# user_id = user_id,
# by_alias = by_alias,
# exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
# # inc_address = inc_address,
# # inc_contact = inc_contact,
# # inc_organization = inc_organization,
# # inc_person = inc_person,
# ):
# membership_person_obj.user = user_result
# else: membership_person_obj.user = {} # None
# log.debug(user_result)
if model_as_dict:
return membership_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return membership_person_obj
# ### END ### API Membership Person Methods ### load_membership_person_obj() ###
# ### 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.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
allowed_forign_key_li = ['account', 'membership_type', 'person', 'user']
if for_obj_type in allowed_forign_key_li:
log.info(f'Query using forign key: {for_obj_type} {for_obj_id}')
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
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_person_id', `tbl`.id_random AS 'membership_person_id_random'
FROM `membership_person` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
elif for_obj_type == 'unknown':
log.info(f'Query using joined table: {for_obj_type} {for_obj_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_person`.enable = :enable'
# elif enabled == 'disabled':
# data['enable'] = False
# sql_enabled = f'AND `membership_person`.enable = :enable'
# elif enabled == 'all':
# sql_enabled = ''
# if limit:
# data['limit'] = limit
# sql_limit = f'LIMIT :limit'
# else:
# sql_limit = ''
# sql = f"""
# 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_person`.created_on DESC, `membership_person`.updated_on DESC
# {sql_limit};
# """
# 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'
# 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_person_id', `tbl`.id_random AS 'membership_person_id_random'
# FROM `membership_person` AS `tbl`
# WHERE
# {sql_obj_type_id}
# {sql_enabled}
# ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
# {sql_limit};
# """
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_person_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(membership_person_rec_li_result)
return membership_person_rec_li
# ### END ### API Membership Person Methods ### get_membership_person_rec_list() ###
# ### BEGIN ### API Membership Person Methods ### create_membership_person_obj() ###
# Updated 2022-01-04
def create_membership_person_obj(
account_id: int,
person_id: int,
membership_person_dict_obj: Membership_Person_Base,
create_sub_obj: bool = False,
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
return_outline: bool = False,
) -> bool|dict|int:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# ### SECTION ### Secondary data validation
log.info('Checking requirements...')
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else:
log.error('Missing or invalid Account ID passed. Failed requirement.')
log.info(f'Person ID: {account_id}')
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else:
log.error('Missing or invalid Person ID passed. Failed requirement.')
log.info(f'Person ID: {person_id}')
log.info('Create dictionary or Pydantic object')
log.debug(type(membership_person_dict_obj))
if isinstance(membership_person_dict_obj, dict):
membership_person_dict = membership_person_dict_obj
try:
membership_person_obj = Membership_Person_Base(**membership_person_dict)
log.debug(membership_person_obj)
except ValidationError as e:
log.error(e.json())
return False
else:
membership_person_obj = membership_person_dict_obj
membership_person_obj.account_id = account_id
membership_person_obj.person_id = person_id
membership_person_dict = membership_person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_person_group_list', 'membership_person_profile', 'membership_person_type', 'membership_group', 'membership_group_list', 'membership_type', 'membership_type_list', 'person', 'product', 'created_on', 'updated_on'})
# ### SECTION ### Process data
membership_person_obj.account_id = account_id # Is this needed?
membership_person_dict['account_id'] = account_id
if membership_person_dict_in_result := sql_insert(
data = membership_person_dict,
table_name = 'membership_person',
rm_id_random = True,
id_random_length = default_num_bytes
): pass
else:
log.warning(f'Membership Person not created.')
log.debug(membership_person_dict_in_result)
return False
log.debug(membership_person_dict_in_result)
membership_person_id = membership_person_dict_in_result
membership_person_outline = {}
membership_person_outline['membership_person_id'] = membership_person_id
membership_person_outline['account_id'] = account_id
membership_person_outline['person_id'] = person_id
membership_person_outline['membership_person_group_list'] = []
membership_person_outline['membership_person_profile'] = {}
membership_person_outline['membership_person_profile_id'] = None
membership_person_outline['membership_person_type'] = {}
membership_person_outline['membership_person_type_id'] = None
if membership_person_obj.membership_person_group_list:
log.info('Looping through Membership Person Group object list')
for membership_person_group_obj in membership_person_obj.membership_person_group_list:
if membership_person_group_id := membership_person_group_obj.id:
log.info('Updating Membership Person Group object')
if membership_person_group_update_result := update_membership_person_group_obj(
membership_person_group_id = membership_person_group_id,
membership_person_group_dict_obj = membership_person_group_obj,
): pass
else: return False
else:
log.info('Creating Membership Person Group object')
if membership_person_group_create_result := create_membership_person_group_obj(
membership_person_id = membership_person_id,
membership_person_group_dict_obj = membership_person_group_obj,
): pass
else: pass
if membership_person_obj.membership_person_type and membership_person_obj.membership_person_type.id:
log.info('Updating Membership Person Type object')
membership_person_type_id = membership_person_obj.membership_person_type.id
if membership_person_type_update_result := update_membership_person_type_obj(
membership_person_type_id = membership_person_type_id,
membership_person_type_dict_obj = membership_person_obj.membership_person_type,
): pass
else: return False
elif membership_person_obj.membership_person_type:
log.info('Creating Membership Type object')
if membership_person_type_create_result := create_membership_person_type_obj(
membership_person_id = membership_person_id,
membership_person_type_dict_obj = membership_person_obj.membership_person_type,
): pass
else: return False
else: pass
if return_outline:
log.debug(f'Returning the Membership Person Outline: {membership_person_outline}')
return membership_person_outline
else:
log.debug(f'Returning the Membership Person ID: {membership_person_id}')
return membership_person_id
# ### END ### API Membership Person Methods ### create_update_membership_person_obj() ###
# ### BEGIN ### API Membership Person Methods ### update_membership_person_obj() ###
# Updated 2022-01-04
def update_membership_person_obj(
membership_person_id: int,
membership_person_dict_obj: Membership_Person_Base,
create_sub_obj: bool = False,
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
return_outline: bool = False,
) -> bool|dict:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# ### SECTION ### Secondary data validation
log.info('Checking requirements...')
if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass
else:
log.error('Membership Person ID passed but is invalid. Failed requirement.')
return False
# ### SECTION ### Secondary data validation
log.info('Create dictionary or Pydantic object')
log.debug(type(membership_person_dict_obj))
if isinstance(membership_person_dict_obj, dict):
membership_person_dict = membership_person_dict_obj
try:
membership_person_obj = Person_Base(**membership_person_dict)
log.debug(membership_person_obj)
except ValidationError as e:
log.error(e.json())
return False
else:
membership_person_obj = membership_person_dict_obj
membership_person_dict = membership_person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_person_group_list', 'membership_person_profile', 'membership_person_type', 'membership_group', 'membership_group_list', 'membership_type', 'membership_type_list', 'person', 'product', 'created_on', 'updated_on'})
# ### SECTION ### Process data
if membership_person_dict_up_result := sql_update(
data = membership_person_dict,
table_name = 'membership_person',
rm_id_random = True,
): pass
else:
log.warning(f'Membership Person not updated.')
log.debug(membership_person_dict_up_result)
return False
membership_person_outline = {}
membership_person_outline['membership_person_id'] = membership_person_id
membership_person_outline['account_id'] = account_id
membership_person_outline['person_id'] = person_id
membership_person_outline['membership_person_group_list'] = []
membership_person_outline['membership_person_profile'] = {}
membership_person_outline['membership_person_profile_id'] = None
membership_person_outline['membership_person_type'] = {}
membership_person_outline['membership_person_type_id'] = None
if membership_person_obj.membership_person_group_list:
log.info('Looping through Membership Person Group object list')
for membership_person_group_obj in membership_person_obj.membership_person_group_list:
if membership_person_group_id := membership_person_group_obj.id:
log.info('Updating Membership Person Group object')
if membership_person_group_update_result := update_membership_person_group_obj(
membership_person_group_id = membership_person_group_id,
membership_person_group_dict_obj = membership_person_group_obj,
): pass
else: return False
else:
log.info('Creating Membership Person Group object')
if membership_person_group_create_result := create_membership_person_group_obj(
membership_person_id = membership_person_id,
membership_person_group_dict_obj = membership_person_group_obj,
): pass
else: pass
if membership_person_obj.membership_person_type and membership_person_obj.membership_person_type.id:
log.info('Updating Membership Person Type object')
membership_person_type_id = membership_person_obj.membership_person_type.id
if membership_person_type_update_result := update_membership_person_type_obj(
membership_person_type_id = membership_person_type_id,
membership_person_type_dict_obj = membership_person_obj.membership_person_type,
): pass
else: return False
elif membership_person_obj.membership_person_type:
log.info('Creating Membership Type object')
if membership_person_type_create_result := create_membership_person_type_obj(
membership_person_id = membership_person_id,
membership_person_type_dict_obj = membership_person_obj.membership_person_type,
): pass
else: return False
else: pass
# # NOTE: Use object model version because of better type checking and validations
# if membership_person_obj.membership_person_type:
# membership_person_outline['membership_person_type_id'] = None
# membership_person_type_obj = membership_person_obj.membership_person_type
# if membership_person_type_id := membership_person_obj.membership_person_type_id: pass
# elif membership_person_type_id := membership_person_type_obj.id: pass
# else: membership_person_type_id = None
# membership_person_type_obj.membership_type_id = 6
# if membership_person_type_id:
# update_membership_person_type_obj_result = update_membership_person_type_obj(
# membership_person_type_dict_obj = membership_person_type_obj,
# membership_person_type_id = membership_person_type_id,
# fail_any = fail_any,
# return_outline = return_outline,
# )
# if update_membership_person_type_obj_result:
# membership_person_outline['membership_person_type_id'] = membership_person_type_id
# pass
# else:
# pass
# else:
# create_membership_person_type_obj_result = create_membership_person_type_obj(
# membership_person_type_dict_obj = membership_person_type_obj,
# membership_person_id = membership_person_id,
# fail_any = fail_any,
# return_outline = return_outline,
# )
# if isinstance(create_membership_person_type_obj_result, int):
# membership_person_type_id = create_membership_person_type_obj_result
# membership_person_outline['membership_person_type_id'] = membership_person_type_id
# else:
# pass
if return_outline:
log.debug(f'Returning the Membership Person Outline: {membership_person_outline}')
return membership_person_outline
else:
log.debug(f'Returning True')
return True
# ### END ### API Membership Person Methods ### create_update_membership_person_obj() ###
# ### BEGIN ### API Membership Person Methods ### create_update_membership_person_obj() ###
# Updated 2021-08-25
def create_update_membership_person_obj(
membership_person_dict_obj: Membership_Person_Base|dict,
person_id: int|str,
account_id: int|str = None,
membership_person_id: int|str = None,
create_sub_obj: bool = False,
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
return_outline: bool = False,
) -> int|bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
log.info('Checking requirements...')
if membership_person_id:
log.info(f'Membership Person ID passed. Update existing Membership Person. Membership Person ID: {membership_person_id}')
if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass
else:
log.error('Membership Person ID passed but is invalid. Failed requirement.')
return False
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else:
log.error('Missing or invalid Person ID passed. Not required. Ignoring.')
log.info(f'Person ID: {person_id}')
# log.info('Attempting to get Person ID from related object.')
# from app.methods.person_methods import get_person_id_w_for_type_id
# if person_id := get_person_id_w_for_type_id(for_type='person_session', for_id=person_session_id): pass
# elif person_id := get_person_id_w_for_type_id(for_type='person_presentation', for_id=person_presentation_id): pass
# elif person_id := get_person_id_w_for_type_id(for_type='membership_person', for_id=membership_person_id): pass
# else:
# log.error('Unable to get Person ID from related object.')
# False
else:
log.info('No Membership Person ID passed. Create new Membership Person. Required: Account ID, Person ID')
if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass
else:
log.error('Missing or invalid Person ID passed. Failed requirement.')
log.info(f'Person ID: {person_id}')
log.info('Attempting to get Person ID from related object.')
from app.methods.person_methods import get_person_id_w_for_type_id
if person_id := get_person_id_w_for_type_id(for_type='person_session', for_id=person_session_id): pass
elif person_id := get_person_id_w_for_type_id(for_type='person_presentation', for_id=person_presentation_id): pass
else:
log.error('Unable to get Person ID from related object.')
False
# ### END ### API Membership Person Methods ### create_update_membership_person_obj() ###