From 163e57ef7660cd93a85b87bc8d17f2d7250659a0 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 11 Jan 2022 16:24:01 -0500 Subject: [PATCH] Code clean up. More changes to membership tables, views, routes, methods, and models renamed. --- app/main.py | 1 + app/methods/person_methods.py | 21 +- app/models/membership_group_models.py | 6 +- app/models/membership_person_models.py | 41 +- app/models/membership_type_models.py | 4 +- app/models/person_models.py | 16 +- app/routers/membership_person.py | 340 ++++++--------- app/routers/person.py | 552 +++++++++++++------------ 8 files changed, 452 insertions(+), 529 deletions(-) diff --git a/app/main.py b/app/main.py index d3f9e7c..b73eeeb 100644 --- a/app/main.py +++ b/app/main.py @@ -37,6 +37,7 @@ app = FastAPI( title='Aether API', description='One Sky IT\'s Aether API using FastAPI.', version='5.7.0', + operationsSorter='method', ) diff --git a/app/methods/person_methods.py b/app/methods/person_methods.py index aed6409..08df26d 100644 --- a/app/methods/person_methods.py +++ b/app/methods/person_methods.py @@ -35,18 +35,15 @@ def load_person_obj( inc_journal_list: bool = False, inc_journal_entry_list: 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_person_group_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_person_type: bool = False, - inc_membership_type_list: bool = False, - inc_membership_person_type_list: bool = False, + # inc_membership_group: bool = False, + # inc_membership_person_group: bool = False, + inc_membership_person_group_list: bool = False, # List of membership group for a person - 2022-01-11 + inc_membership_person: bool = False, + 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_person_type: bool = False, + # inc_membership_type_list: bool = False, + # inc_membership_person_type_list: bool = False, inc_order_cfg: bool = False, inc_order_closed_count: bool = False, inc_order_line_list: bool = False, diff --git a/app/models/membership_group_models.py b/app/models/membership_group_models.py index 44d9682..d05b829 100644 --- a/app/models/membership_group_models.py +++ b/app/models/membership_group_models.py @@ -47,10 +47,10 @@ class Membership_Group_Base(BaseModel): updated_on: Optional[datetime.datetime] = None # Including other related objects - cfg: Optional[Membership_Cfg_Base] - # membership_type: Optional[Membership_Type_Base] # The membership option/type they currently have + membership_cfg: Optional[Membership_Cfg_Base] = Field( + alias = 'cfg', + ) membership_person_group_list: Optional[list] # Membership_Person_Group_Base - # parent_membership_group: Optional[Membership_Group_Base] product_list: Optional[list] # Product_Base() List of products (for_type and for_id) that get this membership option _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) diff --git a/app/models/membership_person_models.py b/app/models/membership_person_models.py index 6b90fc8..d045d34 100644 --- a/app/models/membership_person_models.py +++ b/app/models/membership_person_models.py @@ -136,27 +136,36 @@ class Membership_Person_Base(BaseModel): 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_person_group: Optional[Membership_Person_Group_Base] # The group person information for the primary membership group they currently have - membership_person_group_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_group: Optional[Membership_Person_Group_Base] # Not currently used + membership_person_group_list: Optional[list[Membership_Person_Group_Base]] # The list of membership group information the person has + membership_person_profile: Optional[Membership_Person_Profile_Base] + membership_person_type: Optional[Membership_Person_Type_Base] # The membership type information for the primary membership type the person has + # membership_person_type_list: Optional[list[Membership_Person_Type_Base]] # Not currently used - membership_person_profile: Optional[Membership_Person_Profile_Base] = Field( - alias = 'profile', - ) + membership_group: Optional[Membership_Group_Base] + membership_group_list: Optional[list[Membership_Group_Base]] + + membership_type: Optional[Membership_Type_Base] # The primary membership type option they currently have + membership_type_list: Optional[list[Membership_Type_Base]] + + # 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_person_group: Optional[Membership_Person_Group_Base] # The group person information for the primary membership group they currently have + # membership_person_group_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 + + # = 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_person_type: Optional[Membership_Person_Type_Base] # The type person information for the primary membership type 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_person_type_list: Optional[list] = Field( # alias = 'type_person_list', # ) # Membership_Person_Type_Base() The type person information for all the membership types they are a part of diff --git a/app/models/membership_type_models.py b/app/models/membership_type_models.py index d84a8c5..39c9ebc 100644 --- a/app/models/membership_type_models.py +++ b/app/models/membership_type_models.py @@ -71,7 +71,9 @@ class Membership_Type_Base(BaseModel): # additional_terms_conditions: Optional[dict] = {} # Is this useful? # Including other related objects - cfg: Optional[Membership_Cfg_Base] + membership_cfg: Optional[Membership_Cfg_Base] = Field( + alias = 'cfg', + ) membership_person_type_list: Optional[list] # Membership_Person_Type_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 diff --git a/app/models/person_models.py b/app/models/person_models.py index 756f834..2fa358c 100644 --- a/app/models/person_models.py +++ b/app/models/person_models.py @@ -10,7 +10,9 @@ 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_group_models import Membership_Group_Base from app.models.membership_person_models import Membership_Person_Base +from app.models.membership_type_models import Membership_Type_Base from app.models.organization_models import Organization_Base from app.models.user_models import User_Base @@ -120,17 +122,19 @@ 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_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_person_type_list: Optional[list] # Membership_Person_Type_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_person_group_list: Optional[list] # Membership_Person_Group_Base() list of member group person records + membership_person: Optional[Membership_Person_Base] + + membership_group_list: Optional[list[Membership_Group_Base]] # Membership_Group_Base() list of member group options + membership_type_list: Optional[list[Membership_Type_Base]] # Membership_Type_Base() list of member type options + # membership_person_type_list: Optional[list] # Membership_Person_Type_Base() list of member type person records... for now this should be only one at most. + # membership_person_group_list: Optional[list] # Membership_Person_Group_Base() list of member group person records + orders_info: Optional[dict] # closed_count, etc order_list: Optional[list] # Order_Base() # Priority l2 order_cart: Optional[dict] # Order_Cart_Base() # Priority l2 + organization: Optional[Union[Organization_Base, None]] post_list: Optional[list] # Post_Base() # Priority l1 - # user: Optional[dict] # Optional[Union[User_Base, None]] # from app.models.user_models import User_Base user: Optional[Union[User_Base, None]] diff --git a/app/routers/membership_person.py b/app/routers/membership_person.py index 47cf9db..70d8073 100644 --- a/app/routers/membership_person.py +++ b/app/routers/membership_person.py @@ -18,27 +18,6 @@ from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() -# @router.post('/membership/person', response_model=Resp_Body_Base) -# async def post_membership_person_obj( -# obj: Membership_Person_Base, -# return_obj: Optional[bool] = True, -# commons: Common_Route_Params = Depends(common_route_params), -# ): -# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) - -# obj_type = 'membership_person' -# obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) -# result = post_obj_template( -# obj_type=obj_type, -# data=obj_data_dict, -# return_obj=True, -# by_alias=True, -# exclude_unset=True, -# ) -# return result - - # ### BEGIN ### API Membership Person ### post_membership_person_obj() ### # Using create_membership_person_obj() # Updated 2022-01-11 @@ -97,59 +76,11 @@ async def post_membership_person_obj( # ### END ### API Membership Person ### post_membership_person_obj() ### - # if isinstance(create_membership_person_obj_result, int): - # membership_person_id = create_membership_person_obj_result - # if return_obj: - # if load_membership_person_obj_result := load_membership_person_obj( - # membership_person_id = membership_person_id, - # enabled = commons.enabled, - # ): - # data = load_membership_person_obj_result - # else: - # data = False - # return mk_resp(data=data, response=commons.response, status_message='The membership person was probably created, but there was a problem returning the data.') - # else: - # membership_person_id = create_membership_person_obj_result - # membership_person_id_random = get_id_random(record_id=membership_person_id, table_name='membership_person') - # data = {} - # data['membership_person_id'] = membership_person_id - # data['membership_person_id_random'] = membership_person_id_random - # return mk_resp(data=data, response=commons.response, status_message='The membership person was created.') - # else: - # return mk_resp(data=False, status_code=400, response=commons.response, status_message='The result from trying to create a membership person was unexpected.') -# ### BEGIN ### API Membership Person ### post_membership_person_obj() ### - - -# @router.patch('/membership/person/{obj_id}', response_model=Resp_Body_Base) -# async def patch_membership_person_obj( -# obj_id: str = Query(..., min_length=11, max_length=22), -# obj: Membership_Person_Base = None, -# return_obj: Optional[bool] = True, -# commons: Common_Route_Params = Depends(common_route_params), -# ): -# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL -# log.debug(locals()) - -# 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 -# result = patch_obj_template( -# obj_type=obj_type, -# data=obj_data_dict, -# obj_id=obj_id, -# return_obj=True, -# by_alias=True, -# exclude_unset=True, -# ) -# return result - - -# ### BEGIN ### API Membership Person ### patch_membership_person_obj_update() ### +# ### BEGIN ### API Membership Person ### patch_membership_person_obj() ### # Using update_membership_person_obj() # Updated 2022-01-11 @router.patch('/membership/person/{membership_person_id}', response_model=Resp_Body_Base) -async def patch_membership_person_obj_update( +async def patch_membership_person_obj( membership_person_obj: Membership_Person_Base, membership_person_id: Optional[str] = Query(..., min_length=11, max_length=22), @@ -197,30 +128,133 @@ async def patch_membership_person_obj_update( data['membership_person_id'] = membership_person_id data['membership_person_id_random'] = membership_person_id_random return mk_resp(data=data, response=commons.response, status_message='The membership person was updated.') -# ### END ### API Membership Person ### patch_membership_person_obj_update() ### +# ### END ### API Membership Person ### patch_membership_person_obj() ### -# ### BEGIN ### API Membership Person ### patch_membership_person_obj_update() ### +# ### BEGIN ### API Membership Person ### get_membership_person_obj() ### +# Updated 2022-01-11 +@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=11, max_length=22), + # inc_address: bool = False, # Per member + # inc_contact: bool = False, # Per member + inc_membership_cfg: bool = False, + # inc_membership_group: bool = False, # The primary membership group for a person + inc_membership_group_list: bool = False, # List of membership group for a person - 2022-01-11 + # inc_membership_person_profile: bool = False, + # inc_membership_person_profile_cust: bool = False, # Extended profile? + inc_membership_profile: bool = False, # Membership profile for a person - 2022-01-11 + inc_membership_type: bool = False, # Primary membership type for a person - 2022-01-11 + # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of + # inc_membership_person_type: bool = False, + # inc_order: bool = False, + # inc_organization: bool = False, + # inc_person: bool = False, + # inc_product: bool = False, # Per member or group member belongs to + # inc_product_list: bool = False, + # inc_user: bool = False, # Per member + commons: Common_Route_Params = Depends(common_route_params), + ): + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) -# @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), -# commons: Common_Route_Params = Depends(common_route_params), -# ): -# log.setLevel(logging.WARNING) # 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 mk_resp(data=None, status_code=404, response=commons.response) -# obj_type = 'membership_person' -# result = get_obj_li_template( -# obj_type=obj_type, -# for_obj_type=for_obj_type, -# for_obj_id=for_obj_id, -# by_alias=True, -# exclude_unset=True, -# ) -# return result + if membership_person_rec_result := load_membership_person_obj( + membership_person_id = membership_person_id, + limit = commons.limit, + by_alias = commons.by_alias, + exclude_unset = commons.exclude_unset, + # model_as_dict = commons.model_as_dict, + enabled = commons.enabled, + # inc_address = inc_address, + # inc_contact = inc_contact, + inc_membership_cfg = inc_membership_cfg, + inc_membership_group_list = inc_membership_group_list, + # inc_membership_person_profile = inc_membership_person_profile, + # inc_membership_person_profile_cust = inc_membership_person_profile_cust, + inc_membership_profile = inc_membership_profile, + inc_membership_type = inc_membership_type, + # inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of. + # inc_membership_person_type = inc_membership_person_type, + # inc_membership_person_type_list = inc_membership_type_list, + # 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, + ): + response_data = membership_person_rec_result + elif membership_person_rec_result is None: # Empty dict or None + log.info('No results') + return mk_resp(data=False, status_code=404, response=commons.response) # Not Found + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request + return mk_resp(data=response_data, response=commons.response) +# ### END ### API Membership Person ### get_membership_person_obj() ### + + +# ### BEGIN ### API Membership Person ### get_person_obj_membership_person() ### +# Updated 2022-01-11 +@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=11, max_length=22), + # inc_address: bool = False, # Per member + # inc_contact: bool = False, # Per member + inc_membership_cfg: bool = False, + # inc_membership_group: bool = False, # The primary membership group for a person + inc_membership_group_list: bool = False, # List of membership group for a person - 2022-01-11 + # inc_membership_person_group_list: bool = False, + # inc_membership_person_profile_cust: bool = False, # Extended profile? + inc_membership_profile: bool = False, # Membership profile for a person - 2022-01-11 + inc_membership_type: bool = False, # Primary membership type for a person - 2022-01-11 + # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of + # inc_membership_person_type: 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, + commons: Common_Route_Params = Depends(common_route_params), + ): + 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, response=commons.response) + + if membership_person_rec := sql_select(table_name='membership_person', field_name='person_id', field_value=person_id): pass + else: return mk_resp(data=None, status_code=404, response=commons.response) + + log.debug(membership_person_rec) + + membership_person_id = membership_person_rec.get('id') # 'membership_person_id' is using the view + log.debug(membership_person_id) + if membership_person_rec_result := load_membership_person_obj( + membership_person_id = membership_person_id, + limit = commons.limit, + by_alias = commons.by_alias, + exclude_unset = commons.exclude_unset, + enabled = commons.enabled, + inc_membership_cfg = inc_membership_cfg, + inc_membership_group_list = inc_membership_group_list, # List of membership group for a person - 2022-01-11 + inc_membership_profile = inc_membership_profile, # Membership profile for a person - 2022-01-11 + inc_membership_type = Fainc_membership_typelse, # Primary membership type for a person - 2022-01-11 + ): + response_data = membership_person_rec_result + elif membership_person_rec_result is None: # Empty dict or None + log.info('No results') + return mk_resp(data=False, status_code=404, response=commons.response) # Not Found + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request + + return mk_resp(data=response_data, response=commons.response) +# ### END ### API Membership Person ### get_person_obj_membership_person() ### # ### BEGIN ### API Membership Person ### get_account_obj_membership_person_list() ### @@ -301,65 +335,6 @@ async def get_account_obj_membership_person_list( # ### END ### API Membership Person ### get_account_obj_membership_person_list() ### -# ### BEGIN ### API Membership Person ### get_person_obj_membership_person() ### -# Updated 2022-01-11 -@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=11, max_length=22), - # inc_address: bool = False, # Per member - # inc_contact: bool = False, # Per member - inc_membership_cfg: bool = False, - # inc_membership_group: bool = False, # The primary membership group for a person - inc_membership_group_list: bool = False, # List of membership group for a person - 2022-01-11 - # inc_membership_person_group_list: bool = False, - # inc_membership_person_profile_cust: bool = False, # Extended profile? - inc_membership_profile: bool = False, # Membership profile for a person - 2022-01-11 - inc_membership_type: bool = False, # Primary membership type for a person - 2022-01-11 - # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of - # inc_membership_person_type: 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, - commons: Common_Route_Params = Depends(common_route_params), - ): - 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, response=commons.response) - - if membership_person_rec := sql_select(table_name='membership_person', field_name='person_id', field_value=person_id): pass - else: return mk_resp(data=None, status_code=404, response=commons.response) - - log.debug(membership_person_rec) - - membership_person_id = membership_person_rec.get('id') # 'membership_person_id' is using the view - log.debug(membership_person_id) - if membership_person_rec_result := load_membership_person_obj( - membership_person_id = membership_person_id, - limit = commons.limit, - by_alias = commons.by_alias, - exclude_unset = commons.exclude_unset, - enabled = commons.enabled, - inc_membership_cfg = inc_membership_cfg, - inc_membership_group_list = inc_membership_group_list, # List of membership group for a person - 2022-01-11 - inc_membership_profile = inc_membership_profile, # Membership profile for a person - 2022-01-11 - inc_membership_type = Fainc_membership_typelse, # Primary membership type for a person - 2022-01-11 - ): - response_data = membership_person_rec_result - elif membership_person_rec_result is None: # Empty dict or None - log.info('No results') - return mk_resp(data=False, status_code=404, response=commons.response) # Not Found - else: - log.warning('Likely bad request') - return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request - - return mk_resp(data=response_data, response=commons.response) -# ### END ### API Membership Person ### get_person_obj_membership_person() ### - - # Look up is only for account, person, or user records # Deprecated 2022-01-11 @router.get('/membership/person/lookup', response_model=Resp_Body_Base) @@ -444,73 +419,6 @@ async def lookup_membership_person_obj( return mk_resp(data=data, response=commons.response) -# ### BEGIN ### API Membership Person ### get_membership_person_obj() ### -# Updated 2022-01-11 -@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=11, max_length=22), - # inc_address: bool = False, # Per member - # inc_contact: bool = False, # Per member - inc_membership_cfg: bool = False, - # inc_membership_group: bool = False, # The primary membership group for a person - inc_membership_group_list: bool = False, # List of membership group for a person - 2022-01-11 - # inc_membership_person_profile: bool = False, - # inc_membership_person_profile_cust: bool = False, # Extended profile? - inc_membership_profile: bool = False, # Membership profile for a person - 2022-01-11 - inc_membership_type: bool = False, # Primary membership type for a person - 2022-01-11 - # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of - # inc_membership_person_type: bool = False, - # inc_order: bool = False, - # inc_organization: bool = False, - # inc_person: bool = False, - # inc_product: bool = False, # Per member or group member belongs to - # inc_product_list: bool = False, - # inc_user: bool = False, # Per member - commons: Common_Route_Params = Depends(common_route_params), - ): - log.setLevel(logging.INFO) # 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 mk_resp(data=None, status_code=404, response=commons.response) - - if membership_person_rec_result := load_membership_person_obj( - membership_person_id = membership_person_id, - limit = commons.limit, - by_alias = commons.by_alias, - exclude_unset = commons.exclude_unset, - # model_as_dict = commons.model_as_dict, - enabled = commons.enabled, - # inc_address = inc_address, - # inc_contact = inc_contact, - inc_membership_cfg = inc_membership_cfg, - inc_membership_group_list = inc_membership_group_list, - # inc_membership_person_profile = inc_membership_person_profile, - # inc_membership_person_profile_cust = inc_membership_person_profile_cust, - inc_membership_profile = inc_membership_profile, - inc_membership_type = inc_membership_type, - # inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of. - # inc_membership_person_type = inc_membership_person_type, - # inc_membership_person_type_list = inc_membership_type_list, - # 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, - ): - response_data = membership_person_rec_result - elif membership_person_rec_result is None: # Empty dict or None - log.info('No results') - return mk_resp(data=False, status_code=404, response=commons.response) # Not Found - else: - log.warning('Likely bad request') - return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request - - return mk_resp(data=response_data, response=commons.response) -# ### END ### API Membership Person ### get_membership_person_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), diff --git a/app/routers/person.py b/app/routers/person.py index b78c42d..638ca99 100644 --- a/app/routers/person.py +++ b/app/routers/person.py @@ -151,178 +151,242 @@ async def patch_person_obj( # ### END ### API Person Routers ### patch_person_obj() ### -# ### BEGIN ### API Person ### v3_post_person_obj_new() ### -# Using create_update_person_obj_v4b() now -# Updated 2021-09-08 -@router.post('/v3/person/new', response_model=Resp_Body_Base) -async def v3_post_person_obj_new( - person_obj: Person_Base, - process_contact: bool = False, - process_organization: bool = False, - process_user: bool = False, - create_sub_obj: bool = False, - fail_any: bool = True, # Fail if any thing goes wrong for sub objects +# # ### BEGIN ### API Person ### v3_post_person_obj_new() ### +# # Using create_update_person_obj_v4b() now +# # Updated 2021-09-08 +# # Deprecated 2022-01-11 +# @router.post('/v3/person/new', response_model=Resp_Body_Base) +# async def v3_post_person_obj_new( +# person_obj: Person_Base, +# process_contact: bool = False, +# process_organization: bool = False, +# process_user: bool = False, +# create_sub_obj: bool = False, +# fail_any: bool = True, # Fail if any thing goes wrong for sub objects - inc_address: bool = False, - inc_contact: bool = False, - inc_organization: bool = False, - inc_user: bool = False, - return_obj: bool = True, +# inc_address: bool = False, +# inc_contact: bool = False, +# inc_organization: bool = False, +# inc_user: bool = False, +# return_obj: bool = True, - commons: Common_Route_Params = Depends(common_route_params), - ): - log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) +# commons: Common_Route_Params = Depends(common_route_params), +# ): +# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL +# log.debug(locals()) - if create_update_person_obj_result := create_update_person_obj_v4b( - account_id = commons.x_account_id, - person_dict_obj = person_obj, - person_id = None, - # process_contact = process_contact, - # process_organization = process_organization, - # process_user = process_user, - ): pass - else: return mk_resp(data=False, status_code=400, response=commons.response, status_message='The person was not created. Check the field names and data types.') +# if create_update_person_obj_result := create_update_person_obj_v4b( +# account_id = commons.x_account_id, +# person_dict_obj = person_obj, +# person_id = None, +# # process_contact = process_contact, +# # process_organization = process_organization, +# # process_user = process_user, +# ): pass +# else: return mk_resp(data=False, status_code=400, response=commons.response, status_message='The person was not created. Check the field names and data types.') - if isinstance(create_update_person_obj_result, int): - person_id = create_update_person_obj_result - if return_obj: - if load_person_obj_result := load_person_obj( - person_id = person_id, - enabled = commons.enabled, - inc_address = inc_address, - inc_contact = inc_contact, - inc_organization = inc_organization, - inc_user = inc_user, - ): - data = load_person_obj_result - else: - data = False - return mk_resp(data=data, response=commons.response, status_message='The person was probably created, but there was a problem returning the data.') - else: - person_id = create_update_person_obj_result - person_id_random = get_id_random(record_id=person_id, table_name='person') - data = {} - data['person_id'] = person_id - data['person_id_random'] = person_id_random - return mk_resp(data=data, response=commons.response, status_message='The person was created.') - else: - return mk_resp(data=False, status_code=400, response=commons.response, status_message='The result from trying to create a person was unexpected.') -# ### BEGIN ### API Person ### v3_post_person_obj_new() ### +# if isinstance(create_update_person_obj_result, int): +# person_id = create_update_person_obj_result +# if return_obj: +# if load_person_obj_result := load_person_obj( +# person_id = person_id, +# enabled = commons.enabled, +# inc_address = inc_address, +# inc_contact = inc_contact, +# inc_organization = inc_organization, +# inc_user = inc_user, +# ): +# data = load_person_obj_result +# else: +# data = False +# return mk_resp(data=data, response=commons.response, status_message='The person was probably created, but there was a problem returning the data.') +# else: +# person_id = create_update_person_obj_result +# person_id_random = get_id_random(record_id=person_id, table_name='person') +# data = {} +# data['person_id'] = person_id +# data['person_id_random'] = person_id_random +# return mk_resp(data=data, response=commons.response, status_message='The person was created.') +# else: +# return mk_resp(data=False, status_code=400, response=commons.response, status_message='The result from trying to create a person was unexpected.') +# # ### BEGIN ### API Person ### v3_post_person_obj_new() ### -# ### BEGIN ### API Person ### v3_patch_person_obj_exist ### -# Using create_update_person_obj_v4b() now -# Updated 2021-09-08 -@router.patch('/v3/person/{person_id}/exist', response_model=Resp_Body_Base) -async def v3_patch_person_obj_exist( - person_obj: Person_Base, +# # ### BEGIN ### API Person ### v3_patch_person_obj_exist ### +# # Using create_update_person_obj_v4b() now +# # Updated 2021-09-08 +# # Deprecated 2022-01-11 +# @router.patch('/v3/person/{person_id}/exist', response_model=Resp_Body_Base) +# async def v3_patch_person_obj_exist( +# person_obj: Person_Base, +# person_id: str = Query(..., min_length=11, max_length=22), +# process_contact: bool = False, +# process_organization: bool = False, +# process_user: bool = False, +# create_sub_obj: bool = False, +# fail_any: bool = True, # Fail if any thing goes wrong for sub objects + +# inc_address: bool = False, +# inc_contact: bool = False, +# inc_organization: bool = False, +# inc_user: bool = False, +# return_obj: bool = True, + +# commons: Common_Route_Params = Depends(common_route_params), +# ): +# log.setLevel(logging.INFO) # 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, response=commons.response, status_message='The person was not updated. The person ID was invalid or not found.') + +# if create_update_person_obj_result := create_update_person_obj_v4b( +# account_id = commons.x_account_id, +# person_dict_obj = person_obj, +# person_id = person_id, +# # process_contact = process_contact, +# # process_organization = process_organization, +# # process_user = process_user, +# ): pass +# else: return mk_resp(data=False, status_code=400, response=commons.response, status_message='The person was not updated. Check the field names and data types.') + +# if isinstance(create_update_person_obj_result, int): +# log.info('Create/Update successful') +# person_id = create_update_person_obj_result +# if return_obj: +# if load_person_obj_result := load_person_obj( +# person_id = person_id, +# enabled = commons.enabled, +# inc_address = inc_address, +# inc_contact = inc_contact, +# inc_organization = inc_organization, +# inc_user = inc_user, +# ): +# data = load_person_obj_result +# else: +# data = False +# return mk_resp(data=data, response=commons.response, status_message='The person was probably updated, but there was a problem returning the data.') +# else: +# person_id = create_update_person_obj_result +# person_id_random = get_id_random(record_id=person_id, table_name='person') +# data = {} +# data['person_id'] = person_id +# data['person_id_random'] = person_id_random +# return mk_resp(data=data, response=commons.response, status_message='The person was updated.') +# else: +# return mk_resp(data=False, status_code=400, response=commons.response, status_message='The result from trying to update the person was unexpected.') +# # ### END ### API Person ### v3_patch_person_obj_exist ### + + +# # ### BEGIN ### API Person ### post_person_json() ### +# # Updated 2021-09-08 +# # Deprecated 2022-01-11 +# @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), +# # create_sub_obj: bool = False, +# process_contact: bool = False, +# process_organization: bool = False, +# process_user: bool = False, +# return_obj: Optional[bool] = True, +# commons: Common_Route_Params = Depends(common_route_params), +# ): +# log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL +# log.debug(locals()) + +# if person_obj_in_result := create_update_person_obj_v4b( +# account_id = commons.x_account_id, +# person_dict_obj = person_obj, +# person_id = None, +# process_contact = process_contact, +# process_organization = process_organization, +# process_user = process_user, +# ): +# log.debug(person_obj_in_result) +# if return_obj: +# person_obj = load_person_obj(person_id=person_obj_in_result) +# person_dict = person_obj.dict(by_alias=commons.by_alias, exclude_unset=commons.exclude_unset) +# return mk_resp(data=person_dict) +# else: +# return mk_resp(data=person_obj_in_result) +# else: +# return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request +# # ### END ### API Person ### post_person_json() ### + + +# # ### BEGIN ### API Person ### patch_person_json() ### +# # Updated 2021-06-25 +# # Deprecated 2022-01-11 +# @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=11, max_length=22), +# process_contact: bool = False, +# process_organization: bool = False, +# process_user: bool = False, +# return_obj: Optional[bool] = True, +# commons: Common_Route_Params = Depends(common_route_params), +# ): +# log.setLevel(logging.INFO) # 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, response=commons.response) + +# if person_obj_up_result := create_update_person_obj_v4b( +# account_id = commons.x_account_id, +# person_dict_obj = person_obj, +# process_contact = process_contact, +# process_organization = process_organization, +# process_user = process_user, +# ): +# log.debug(person_obj_up_result) +# if return_obj: +# person_obj = load_person_obj(person_id=person_id) +# person_dict = person_obj.dict(by_alias=commons.by_alias, exclude_unset=commons.exclude_unset) +# return mk_resp(data=person_dict) +# else: +# return mk_resp(data=person_obj_up_result) +# else: +# return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request +# # ### END ### API Person ### patch_person_json() ### + + +# ### BEGIN ### API Person ### get_person_obj() ### +# Updated 2021-12-15 +@router.get('/person/{person_id}', response_model=Resp_Body_Base) +async def get_person_obj( person_id: str = Query(..., min_length=11, max_length=22), - process_contact: bool = False, - process_organization: bool = False, - process_user: bool = False, - create_sub_obj: bool = False, - fail_any: bool = True, # Fail if any thing goes wrong for sub objects - - inc_address: bool = False, - inc_contact: bool = False, - inc_organization: bool = False, - inc_user: bool = False, - return_obj: bool = True, - - commons: Common_Route_Params = Depends(common_route_params), - ): - log.setLevel(logging.INFO) # 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, response=commons.response, status_message='The person was not updated. The person ID was invalid or not found.') - - if create_update_person_obj_result := create_update_person_obj_v4b( - account_id = commons.x_account_id, - person_dict_obj = person_obj, - person_id = person_id, - # process_contact = process_contact, - # process_organization = process_organization, - # process_user = process_user, - ): pass - else: return mk_resp(data=False, status_code=400, response=commons.response, status_message='The person was not updated. Check the field names and data types.') - - if isinstance(create_update_person_obj_result, int): - log.info('Create/Update successful') - person_id = create_update_person_obj_result - if return_obj: - if load_person_obj_result := load_person_obj( - person_id = person_id, - enabled = commons.enabled, - inc_address = inc_address, - inc_contact = inc_contact, - inc_organization = inc_organization, - inc_user = inc_user, - ): - data = load_person_obj_result - else: - data = False - return mk_resp(data=data, response=commons.response, status_message='The person was probably updated, but there was a problem returning the data.') - else: - person_id = create_update_person_obj_result - person_id_random = get_id_random(record_id=person_id, table_name='person') - data = {} - data['person_id'] = person_id - data['person_id_random'] = person_id_random - return mk_resp(data=data, response=commons.response, status_message='The person was updated.') - else: - return mk_resp(data=False, status_code=400, response=commons.response, status_message='The result from trying to update the person was unexpected.') -# ### END ### API Person ### v3_patch_person_obj_exist ### - - - -# ### BEGIN ### API Person ### post_person_json() ### -# Updated 2021-09-08 -@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), - # create_sub_obj: bool = False, - process_contact: bool = False, - process_organization: bool = False, - process_user: bool = False, - return_obj: Optional[bool] = True, - commons: Common_Route_Params = Depends(common_route_params), - ): - log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(locals()) - - if person_obj_in_result := create_update_person_obj_v4b( - account_id = commons.x_account_id, - person_dict_obj = person_obj, - person_id = None, - process_contact = process_contact, - process_organization = process_organization, - process_user = process_user, - ): - log.debug(person_obj_in_result) - if return_obj: - person_obj = load_person_obj(person_id=person_obj_in_result) - person_dict = person_obj.dict(by_alias=commons.by_alias, exclude_unset=commons.exclude_unset) - return mk_resp(data=person_dict) - else: - return mk_resp(data=person_obj_in_result) - else: - return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request -# ### END ### API Person ### post_person_json() ### - - -# ### BEGIN ### API Person ### patch_person_json() ### -# Updated 2021-06-25 -@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=11, max_length=22), - process_contact: bool = False, - process_organization: bool = False, - process_user: bool = False, - return_obj: Optional[bool] = True, + auth_key: str = Query(None, min_length=11, max_length=22), # If passed, it must match in the person record. New 2021-12-15 + inc_address: bool = False, # Priority l1 + # inc_archive_list: bool = False, # Priority l3 + inc_contact: bool = False, # Priority l1 + inc_event_list: bool = False, # Priority l1 + # 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_cfg: bool = False, # The list of all + # inc_membership_group: bool = False, # The primary membership group + # inc_membership_person_group: bool = False, + inc_membership_group_list: bool = False, # List of membership group for a person - 2022-01-11 + # inc_membership_person_group_list: bool = False, + inc_membership_person: bool = False, + inc_membership_person_profile: bool = False, # Membership profile for a person - 2022-01-11 + inc_membership_type: bool = False, # Primary membership type for a person - 2022-01-11 + # inc_membership_person_type: bool = False, + # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of + # inc_membership_person_type_list: bool = False, + inc_order_closed_count: bool = False, # NEW Priority l1 + inc_order_line_list: bool = False, # Priority l1 + inc_order_list: bool = False, # Priority l1 + inc_order_cart: bool = False, # NEW Priority l1 + # inc_order_cart_list: bool = False, # Priority l1 + inc_organization: bool = False, # Priority l1 + # inc_organization_list: bool = False, + inc_post_list: bool = False, # Priority l2 + inc_post_comment_list: bool = False, # Priority l3 + inc_user: bool = False, # Priority l1 commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -331,24 +395,56 @@ async def patch_person_json( 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, response=commons.response) - if person_obj_up_result := create_update_person_obj_v4b( - account_id = commons.x_account_id, - person_dict_obj = person_obj, - process_contact = process_contact, - process_organization = process_organization, - process_user = process_user, + if person_rec_result := load_person_obj( + person_id = person_id, + auth_key = auth_key, + limit = commons.limit, + exclude_unset = False, + model_as_dict = False, # NOTE: returning model as a dict + enabled = commons.enabled, + inc_address = inc_address, + # inc_archive_list = inc_archive_list, + inc_contact = inc_contact, + inc_event_list = inc_event_list, + # inc_hosted_file_list = inc_hosted_file_list, + inc_journal_list = inc_journal_list, + # inc_journal_entry_list = inc_journal_entry_list, + inc_membership_cfg = inc_membership_cfg, + inc_membership_group_list = inc_membership_group_list, + # inc_membership_person_group_list = inc_membership_person_group_list, + inc_membership_person = inc_membership_person, + inc_membership_person_profile = inc_membership_person_profile, + inc_membership_type = inc_membership_type, + # inc_membership_person_type = inc_membership_person_type, + inc_order_closed_count = inc_order_closed_count, + inc_order_line_list = inc_order_line_list, + inc_order_list = inc_order_list, + inc_order_cart = inc_order_cart, + # inc_order_cart_list = inc_order_cart_list, + inc_organization = inc_organization, + # inc_organization_list = inc_organization_list, + inc_post_list = inc_post_list, + inc_post_comment_list = inc_post_comment_list, + inc_user = inc_user, ): - log.debug(person_obj_up_result) - if return_obj: - person_obj = load_person_obj(person_id=person_id) - person_dict = person_obj.dict(by_alias=commons.by_alias, exclude_unset=commons.exclude_unset) - return mk_resp(data=person_dict) - else: - return mk_resp(data=person_obj_up_result) - else: - return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request -# ### END ### API Person ### patch_person_json() ### + response_data = person_rec_result + # if isinstance(person_rec_result, dict): + # response_data = person_rec_result + # else: + # response_data = person_rec_result + # else: + # return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request + elif isinstance(person_rec_result, list) or person_rec_result is None: # Empty list or None + log.info('No results') + if auth_key: log.info('It is likely the auth_key did not match.') + return mk_resp(data=False, status_code=404, response=commons.response) # Not Found + else: + log.warning('Likely bad request') + return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request + + return mk_resp(data=response_data, response=commons.response) +# ### END ### API Person ### get_person_obj() ### @router.get('/person/list', response_model=Resp_Body_Base) @@ -503,100 +599,6 @@ async def email_auth_key_url( # ### END ### API Person ### email_create_url() ### - - -# ### BEGIN ### API Person ### get_person_obj() ### -# Updated 2021-12-15 -@router.get('/person/{person_id}', response_model=Resp_Body_Base) -async def get_person_obj( - person_id: str = Query(..., min_length=11, max_length=22), - auth_key: str = Query(None, min_length=11, max_length=22), # If passed, it must match in the person record. New 2021-12-15 - inc_address: bool = False, # Priority l1 - # inc_archive_list: bool = False, # Priority l3 - inc_contact: bool = False, # Priority l1 - inc_event_list: bool = False, # Priority l1 - # 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_group: bool = False, # The primary membership group - # inc_membership_person_group: bool = False, - inc_membership_group_list: bool = False, # The list of all membership groups a person is a part of - inc_membership_person_group_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_person_type: bool = False, - # inc_membership_type_list: bool = False, # The list of all membership types a person is a part of - # inc_membership_person_type_list: bool = False, - inc_order_closed_count: bool = False, # NEW Priority l1 - inc_order_line_list: bool = False, # Priority l1 - inc_order_list: bool = False, # Priority l1 - inc_order_cart: bool = False, # NEW Priority l1 - # inc_order_cart_list: bool = False, # Priority l1 - inc_organization: bool = False, # Priority l1 - # inc_organization_list: bool = False, - inc_post_list: bool = False, # Priority l2 - inc_post_comment_list: bool = False, # Priority l3 - inc_user: bool = False, # Priority l1 - commons: Common_Route_Params = Depends(common_route_params), - ): - log.setLevel(logging.INFO) # 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, response=commons.response) - - if person_rec_result := load_person_obj( - person_id = person_id, - auth_key = auth_key, - limit = commons.limit, - exclude_unset = False, - model_as_dict = False, # NOTE: returning model as a dict - enabled = commons.enabled, - inc_address = inc_address, - # inc_archive_list = inc_archive_list, - inc_contact = inc_contact, - inc_event_list = inc_event_list, - # inc_hosted_file_list = inc_hosted_file_list, - inc_journal_list = inc_journal_list, - # inc_journal_entry_list = inc_journal_entry_list, - inc_membership_group_list = inc_membership_group_list, - inc_membership_person_group_list = inc_membership_person_group_list, - inc_membership_person = inc_membership_person, - inc_membership_person_profile = inc_membership_person_profile, - inc_membership_type = inc_membership_type, - inc_membership_person_type = inc_membership_person_type, - inc_order_closed_count = inc_order_closed_count, - inc_order_line_list = inc_order_line_list, - inc_order_list = inc_order_list, - inc_order_cart = inc_order_cart, - # inc_order_cart_list = inc_order_cart_list, - inc_organization = inc_organization, - # inc_organization_list = inc_organization_list, - inc_post_list = inc_post_list, - inc_post_comment_list = inc_post_comment_list, - inc_user = inc_user, - ): - response_data = person_rec_result - # if isinstance(person_rec_result, dict): - # response_data = person_rec_result - # else: - # response_data = person_rec_result - # else: - # return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request - - elif isinstance(person_rec_result, list) or person_rec_result is None: # Empty list or None - log.info('No results') - if auth_key: log.info('It is likely the auth_key did not match.') - return mk_resp(data=False, status_code=404, response=commons.response) # Not Found - else: - log.warning('Likely bad request') - return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request - - return mk_resp(data=response_data, response=commons.response) -# ### END ### API Person ### get_person_obj() ### - - # ### BEGIN ### API Person ### get_account_obj_person_list() ### # Updated 2022-01-05 @router.get('/account/{account_id}/person/list', response_model=Resp_Body_Base)