From 55063d0f94f54e63b8a9127ed25d817daefdca1c Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 11 Jan 2022 19:45:55 -0500 Subject: [PATCH] A LOT of code clean up. More changes to membership tables, views, routes, methods, and models renamed. --- app/methods/membership_person_methods.py | 209 +++++++++++++----- app/methods/membership_person_type_methods.py | 78 +++++-- app/methods/person_methods.py | 28 ++- app/models/journal_entry_models.py | 3 +- app/models/journal_models.py | 5 +- app/models/person_models.py | 3 +- app/routers/membership_person.py | 2 + app/routers/person.py | 186 ++++++++-------- 8 files changed, 328 insertions(+), 186 deletions(-) diff --git a/app/methods/membership_person_methods.py b/app/methods/membership_person_methods.py index 4d20697..3dd6ce5 100644 --- a/app/methods/membership_person_methods.py +++ b/app/methods/membership_person_methods.py @@ -386,16 +386,17 @@ def 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|str, - person_id: int|str, - membership_person_dict_obj: Membership_Person_Base|dict, + 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, - ) -> int|bool: + ) -> 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: @@ -406,27 +407,39 @@ def create_membership_person_obj( 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_obj) + 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 # Assume it is an object model + 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_dict_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_group', 'membership_group_list', 'membership_person_group_list', 'profile', 'membership_person_profile', 'membership_type', 'membership_type_list', 'membership_person_type', 'person', 'product', 'user', 'created_on', 'updated_on'}) - log.debug(membership_person_dict) + 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=8): pass + 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 = {} @@ -434,11 +447,45 @@ def create_membership_person_obj( membership_person_outline['account_id'] = account_id membership_person_outline['person_id'] = person_id - membership_person_outline['membership_group_list'] = [] - membership_person_outline['membership_type'] = {} - membership_person_outline['membership_type_id'] = None + 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_type_list: + log.info('Looping through Membership Person Group object list') + for membership_person_type_obj in membership_person_type_obj_list_result: + if membership_person_type_obj.id: + log.info('Updating Membership Person Group object') + 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_type_obj, + ): pass + else: return False + else: + log.info('Creating Membership Person Group 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_type_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') + 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}') @@ -452,37 +499,45 @@ def create_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|str, - membership_person_dict_obj: Membership_Person_Base|dict, + 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, - ) -> int|bool: + ) -> 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 = Membership_Person_Base(**membership_person_dict_obj) - # membership_person_obj.id = membership_person_id + 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 # Assume it is an object model + membership_person_obj = membership_person_dict_obj - membership_person_dict = membership_person_dict_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_group', 'membership_group_list', 'membership_person_group_list', 'profile', 'membership_person_profile', 'membership_type', 'membership_type_list', 'membership_person_type', 'person', 'product', 'user', 'created_on', 'updated_on'}) - log.debug(membership_person_dict) + 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'}) - if membership_person_dict_up_result := sql_update(data=membership_person_dict, table_name='membership_person', rm_id_random=True, id_random_length=8): pass + # ### 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) @@ -490,56 +545,90 @@ def update_membership_person_obj( membership_person_outline = {} membership_person_outline['membership_person_id'] = membership_person_id - membership_person_outline['account_id'] = membership_person_obj.account_id_random - membership_person_outline['person_id'] = membership_person_obj.person_id_random + membership_person_outline['account_id'] = account_id + membership_person_outline['person_id'] = person_id - membership_person_outline['membership_group_list'] = [] - membership_person_outline['membership_type'] = {} - membership_person_outline['membership_type_id'] = None + 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 - # 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 + if membership_person_obj.membership_person_type_list: + log.info('Looping through Membership Person Group object list') + for membership_person_type_obj in membership_person_type_obj_list_result: + if membership_person_type_obj.id: + log.info('Updating Membership Person Group object') + 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_type_obj, + ): pass + else: return False else: - pass - else: - create_membership_person_type_obj_result = create_membership_person_type_obj( - membership_person_type_dict_obj = membership_person_type_obj, + log.info('Creating Membership Person Group 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_type_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') + 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, - 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 + 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 the Membership Person ID: {membership_person_id}') - return membership_person_id + log.debug(f'Returning True') + return True # ### END ### API Membership Person Methods ### create_update_membership_person_obj() ### diff --git a/app/methods/membership_person_type_methods.py b/app/methods/membership_person_type_methods.py index 56664a5..9715ff5 100644 --- a/app/methods/membership_person_type_methods.py +++ b/app/methods/membership_person_type_methods.py @@ -195,6 +195,7 @@ def create_membership_person_type_obj( log.setLevel(logging.WARNING) # 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: @@ -202,27 +203,42 @@ def create_membership_person_type_obj( log.info(f'Membership Person ID: {membership_person_id}') return False - membership_person_type_obj = membership_person_type_dict_obj + log.info('Create dictionary or Pydantic object') + log.debug(type(membership_person_type_dict_obj)) + if isinstance(membership_person_type_dict_obj, dict): + membership_person_type_dict = membership_person_type_dict_obj + try: + membership_person_type_obj = Membership_Person_Type_Base(**membership_person_type_dict) + log.debug(membership_person_type_obj) + except ValidationError as e: + log.error(e.json()) + return False + else: + membership_person_type_obj = membership_person_type_dict_obj + membership_person_type_obj.membership_person_id = membership_person_id - # Stuff goes here + membership_person_type_dict = membership_person_type_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_type', 'membership_type_list', 'product', 'created_on', 'updated_on'}) - membership_person_type_obj_data = membership_person_type_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'}) + # ### SECTION ### Process data + membership_person_type_obj.membership_person_id = membership_person_id # Is this needed? + membership_person_type_dict['membership_person_id'] = membership_person_id - membership_person_type_obj_data['membership_person_id'] = membership_person_id - - if membership_person_type_obj_in_result := sql_insert( - data = membership_person_type_obj_data, + if membership_person_type_dict_in_result := sql_insert( + data = membership_person_type_dict, table_name = 'membership_person_type', rm_id_random = True, - id_random_length = 8 + id_random_length = default_num_bytes ): pass - else: return False + else: + log.warning(f'Membership Person Type not created.') + log.debug(membership_person_type_dict_in_result) + return False - log.debug(membership_person_type_obj_in_result) + log.debug(membership_person_type_dict_in_result) + membership_person_type_id = membership_person_type_dict_in_result - membership_person_type_id = membership_person_type_obj_in_result + log.info(f'Returning the Membership Person Type ID: {membership_person_type_id}') - log.debug(f'New membership_person_type_id: {membership_person_type_id}') return membership_person_type_id # ### END ### API Membership Type Person Methods ### create_membership_person_type_obj() ### @@ -237,15 +253,31 @@ def update_membership_person_type_obj( log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) + # ### SECTION ### Secondary data validation + log.info('Checking requirements...') if membership_person_type_id := redis_lookup_id_random(record_id_random=membership_person_type_id, table_name='membership_person_type'): pass - else: return False + else: + log.error('Membership Person Type ID passed but is invalid. Failed requirement.') + return False - # Stuff goes here + log.info('Create dictionary or Pydantic object') + log.debug(type(membership_person_type_dict_obj)) + if isinstance(membership_person_type_dict_obj, dict): + membership_person_type_dict = membership_person_type_dict_obj + try: + membership_person_type_obj = Membership_Person_Type_Base(**membership_person_type_dict) + log.debug(membership_person_type_obj) + except ValidationError as e: + log.error(e.json()) + return False + else: + membership_person_type_obj = membership_person_type_dict_obj - membership_person_type_dict_obj.id = membership_person_type_id + membership_person_type_dict = membership_person_type_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_type', 'membership_type_list', 'product', 'created_on', 'updated_on'}) - - membership_person_type_obj = membership_person_type_dict_obj + # ### SECTION ### Process data + membership_person_type_obj.id = membership_person_type_id # Is this needed? + membership_person_type_dict['id'] = membership_person_type_id log.debug(membership_person_type_obj) log.debug(membership_person_type_obj.dict(by_alias=False, exclude_unset=True)) @@ -254,10 +286,16 @@ def update_membership_person_type_obj( membership_person_type_dict = membership_person_type_obj.dict(by_alias=False, exclude_unset=True) log.debug(membership_person_type_dict) - if membership_person_type_obj_up_result := sql_update(data=membership_person_type_dict, table_name='membership_person_type', rm_id_random=True): - log.debug(membership_person_type_obj_up_result) + if membership_person_type_dict_up_result := sql_update( + data = membership_person_type_dict, + table_name = 'membership_person_type', + rm_id_random = True + ): + log.debug(f'Returning True') + log.debug(membership_person_type_dict_up_result) return True else: - log.debug(membership_person_type_obj_up_result) + log.warning(f'Membership Person Type not updated.') + log.debug(membership_person_type_dict_up_result) return False # ### END ### API Membership Type Person Methods ### update_membership_person_type_obj() ### diff --git a/app/methods/person_methods.py b/app/methods/person_methods.py index 08df26d..5206ade 100644 --- a/app/methods/person_methods.py +++ b/app/methods/person_methods.py @@ -452,7 +452,7 @@ def create_person_kiss( contact_id: int|None = None, organization_id: int|None = None, user_id: int|None = None, - ): + ) -> int|bool: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -469,13 +469,14 @@ def create_person_kiss( return False else: person_obj = person_dict_obj - person_obj.account_id = account_id + # person_obj.account_id = account_id person_dict = person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'contact', 'contact_id', 'contact_id_random', 'email', 'cc_email', 'membership_person_id', 'membership_person_id_random', 'organization', 'user', 'created_on', 'updated_on'}) - # ### SECTION ### Process data# Look for an account_id in the user_obj - if account_id: pass - elif account_id := person_obj.account_id: pass + # ### SECTION ### Process data + # Look for an account_id in the person_obj + # if account_id: pass + # elif account_id := person_obj.account_id: pass person_obj.account_id = account_id # Is this needed? person_dict['account_id'] = account_id @@ -493,7 +494,12 @@ def create_person_kiss( # person_obj.user_id = user_id # Is this needed? # person_dict['user_id'] = user_id - if person_dict_in_result := sql_insert(data=person_dict, table_name='person', rm_id_random=True, id_random_length=default_num_bytes): pass + if person_dict_in_result := sql_insert( + data = person_dict, + table_name = 'person', + rm_id_random = True, + id_random_length = default_num_bytes + ): pass else: log.warning(f'Person not created.') log.debug(person_dict_in_result) @@ -548,7 +554,7 @@ def create_person_kiss( else: return False else: pass - log.info(f'Returning the new person_id: {person_id}') + log.info(f'Returning the Person ID: {person_id}') return person_id # ### END ### API Person Methods ### create_person_kiss() ### @@ -573,7 +579,6 @@ def update_person_kiss( person_dict = person_dict_obj try: person_obj = Person_Base(**person_dict) - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(person_obj) except ValidationError as e: log.error(e.json()) @@ -600,7 +605,12 @@ def update_person_kiss( # person_obj.user_id = user_id # Is this needed? # person_dict['user_id'] = user_id - if person_dict_up_result := sql_update(data=person_dict, table_name='person', rm_id_random=True, id_random_length=default_num_bytes): pass + if person_dict_up_result := sql_update( + data = person_dict, + table_name = 'person', + rm_id_random = True, + id_random_length = default_num_bytes + ): pass else: log.warning(f'Person not updated.') log.debug(person_dict_up_result) diff --git a/app/models/journal_entry_models.py b/app/models/journal_entry_models.py index 5fa815d..a3bbd48 100644 --- a/app/models/journal_entry_models.py +++ b/app/models/journal_entry_models.py @@ -11,7 +11,7 @@ from app.models.common_field_schema import base_fields, default_num_bytes class Journal_Entry_Base(BaseModel): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) id_random: Optional[str] = Field( @@ -73,6 +73,7 @@ class Journal_Entry_Base(BaseModel): class Config: underscore_attrs_are_private = True + allow_population_by_field_name = True fields = base_fields Journal_Entry_Base.update_forward_refs() diff --git a/app/models/journal_models.py b/app/models/journal_models.py index b8d76b4..3e0f9ae 100644 --- a/app/models/journal_models.py +++ b/app/models/journal_models.py @@ -8,10 +8,11 @@ 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.journal_entry_models import Journal_Entry_Base class Journal_Base(BaseModel): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) id_random: Optional[str] = Field( @@ -53,7 +54,7 @@ class Journal_Base(BaseModel): updated_on: Optional[datetime.datetime] = None # Including other related objects - journal_entry_list: Optional[list] # Journal_Entry_Base() + journal_entry_list: Optional[list[Journal_Entry_Base]] # Journal_Entry_Base() _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) diff --git a/app/models/person_models.py b/app/models/person_models.py index 2fa358c..6688acb 100644 --- a/app/models/person_models.py +++ b/app/models/person_models.py @@ -10,6 +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.journal_models import Journal_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 @@ -120,7 +121,7 @@ class Person_Base(BaseModel): # archive_list: Optional[list] # Archive_Base() 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 + journal_list: Optional[list[Journal_Base]] # Journal_Base() # Priority l3 contact: Optional[Union[Contact_Base, None]] membership_person: Optional[Membership_Person_Base] diff --git a/app/routers/membership_person.py b/app/routers/membership_person.py index b389c9d..6b2a5d5 100644 --- a/app/routers/membership_person.py +++ b/app/routers/membership_person.py @@ -101,6 +101,8 @@ async def patch_membership_person_obj( log.debug(f'Membership Person ID: {membership_person_id}') membership_person_id_random = membership_person_id # This is used later for the response data + + # ### SECTION ### Secondary data validation if membership_person_id := redis_lookup_id_random(record_id_random=membership_person_id, table_name='membership_person'): pass else: return mk_resp(data=False, status_code=404, response=commons.response, status_message='The membership person ID was invalid or not found.') # Not Found diff --git a/app/routers/person.py b/app/routers/person.py index c4a0453..574bdc1 100644 --- a/app/routers/person.py +++ b/app/routers/person.py @@ -353,99 +353,6 @@ async def patch_person_obj( # # ### 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), - 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_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, # 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_cfg = inc_membership_cfg, - 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_person_type = inc_membership_person_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() ### - - @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), @@ -598,6 +505,99 @@ 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_cfg: bool = False, # The list of all + # inc_membership_group: bool = False, # The primary membership group + # inc_membership_group_list: 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_list: bool = False, # The list of all membership types a person is a part of + # inc_membership_person_type_list: bool = False, + # inc_membership_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_cfg = inc_membership_cfg, + 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_person_type = inc_membership_person_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)