Code clean up. Bug fixes for person, user, contact, and address methods. Fix bug for get_account_id_w_for_type_id()

This commit is contained in:
Scott Idem
2022-01-07 13:35:44 -05:00
parent 29c6770581
commit 5489b80ff0
5 changed files with 117 additions and 100 deletions

View File

@@ -66,34 +66,38 @@ def load_contact_obj(
# ### BEGIN ### API Contact Methods ### get_contact_rec_list() ###
# Updated 2021-12-13
# Updated 2022-01-07
@logger_reset
def get_contact_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
for_type: str, # 'account' is a special case
for_id: str,
limit: int = 500,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name=for_obj_type): pass
if for_id := redis_lookup_id_random(record_id_random=for_id, table_name=for_type): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`contact`.{for_obj_type}_id = :{for_obj_type}_id'
# if enabled in ['enabled', 'disabled', 'all']:
# if enabled == 'enabled':
# data['enable'] = True
# sql_enabled = f'AND `contact`.enable = :enable'
# elif enabled == 'disabled':
# data['enable'] = False
# sql_enabled = f'AND `contact`.enable = :enable'
# elif enabled == 'all':
# sql_enabled = ''
sql_enabled = ''
if for_type == 'account':
sql_for_type_id = f'`contact`.account_id = :for_id'
else:
sql_for_type_id = f'`contact`.for_type = :for_type AND `contact`.for_id = :for_id'
data = {}
data['for_type'] = for_type
data['for_id'] = for_id
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `contact`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `contact`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
@@ -105,7 +109,7 @@ def get_contact_rec_list(
SELECT `contact`.id AS 'contact_id', `contact`.id_random AS 'contact_id_random'
FROM `contact` AS `contact`
WHERE
{sql_obj_type_id}
{sql_for_type_id}
{sql_enabled}
ORDER BY `contact`.created_on DESC, `contact`.updated_on DESC
{sql_limit};
@@ -468,7 +472,7 @@ def update_contact_obj(
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
return_dict: bool = False,
) -> bool:
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# ### SECTION ### Secondary data validation
@@ -482,6 +486,7 @@ def update_contact_obj(
log.info('Create dictionary or Pydantic object')
log.debug(type(contact_dict_obj))
log.debug(contact_dict_obj)
if isinstance(contact_dict_obj, dict):
contact_dict = contact_dict_obj
try:
@@ -494,6 +499,7 @@ def update_contact_obj(
contact_obj = contact_dict_obj
contact_dict = contact_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'address', 'address_id', 'address_id_random', 'created_on', 'updated_on'})
log.debug(contact_dict)
# ### SECTION ### Process data
contact_obj.id = contact_id # Is this needed?
@@ -513,6 +519,8 @@ def update_contact_obj(
# Look for an address_id in the contact_obj if one was not passed separately
if address_id: pass
elif address_id := contact_obj.address.id: pass
log.debug(contact_obj.address.id)
log.debug(contact_obj.address.id_random)
if contact_dict_up_result := sql_update(data=contact_dict, table_name='contact', rm_id_random=True): pass
else: