Working on all the routes, methods, and models.

This commit is contained in:
Scott Idem
2021-06-18 14:09:07 -04:00
parent bb2f14b67c
commit 938aabb2a8
29 changed files with 941 additions and 335 deletions

View File

@@ -721,11 +721,11 @@ def redis_lookup_id_random(record_id_random:int|str, table_name:str):
r.setex(key_name, datetime.timedelta(minutes=90), value=record_id) r.setex(key_name, datetime.timedelta(minutes=90), value=record_id)
return int(record_id) return int(record_id)
else: else:
log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.error('The SQL result was not what was expected.') log.error('The SQL result was not what was expected.')
return False return False
else: else:
log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.error('More than one record may have been found. There may be a duplicate id_random.') log.error('More than one record may have been found. There may be a duplicate id_random.')
log.error(select_results) log.error(select_results)
return False return False
@@ -734,7 +734,7 @@ def redis_lookup_id_random(record_id_random:int|str, table_name:str):
log.info('Record ID random was not found') log.info('Record ID random was not found')
return None return None
log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.error('We should not be here. Something unexpected happened.') log.error('We should not be here. Something unexpected happened.')
return False # Just in case return False # Just in case
# ### END ### API Lib General ### redis_lookup_id_random() ### # ### END ### API Lib General ### redis_lookup_id_random() ###

View File

@@ -12,12 +12,15 @@ from app.methods.address_methods import get_address_rec_list, load_address_obj
from app.methods.archive_methods import get_archive_rec_list, load_archive_obj from app.methods.archive_methods import get_archive_rec_list, load_archive_obj
from app.methods.contact_methods import get_contact_rec_list, load_contact_obj from app.methods.contact_methods import get_contact_rec_list, load_contact_obj
from app.methods.event_methods import get_event_rec_list, load_event_obj from app.methods.event_methods import get_event_rec_list, load_event_obj
from app.methods.hosted_file_methods import get_hosted_file_rec_list, load_hosted_file_obj
from app.methods.journal_methods import get_journal_rec_list, load_journal_obj
from app.methods.order_methods import get_order_rec_list, load_order_obj from app.methods.order_methods import get_order_rec_list, load_order_obj
# from app.methods.order_cart_methods import get_order_cart_rec_list, load_order_cart_obj # from app.methods.order_cart_methods import get_order_cart_rec_list, load_order_cart_obj
from app.methods.organization_methods import get_organization_rec_list, load_organization_obj from app.methods.organization_methods import get_organization_rec_list, load_organization_obj
from app.methods.person_methods import get_person_rec_list, load_person_obj from app.methods.person_methods import get_person_rec_list, load_person_obj
from app.methods.product_methods import get_product_rec_list, load_product_obj from app.methods.product_methods import get_product_rec_list, load_product_obj
from app.methods.post_methods import get_post_rec_list, load_post_obj from app.methods.post_methods import get_post_rec_list, load_post_obj
from app.methods.site_methods import get_site_rec_list, load_site_obj
from app.methods.user_methods import get_user_rec_list, load_user_obj from app.methods.user_methods import get_user_rec_list, load_user_obj
from app.models.account_models import Account_Base from app.models.account_models import Account_Base
@@ -30,6 +33,8 @@ from app.models.account_cfg_models import Account_Cfg_Base
def load_account_obj( def load_account_obj(
account_id: int|str, account_id: int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_account_cfg: bool = False, # Priority l1 inc_account_cfg: bool = False, # Priority l1
@@ -72,7 +77,9 @@ def load_account_obj(
inc_event_track_list: bool = False, inc_event_track_list: bool = False,
inc_fundraising_cfg: bool = False, inc_fundraising_cfg: bool = False,
inc_hosted_file_list: bool = False, inc_hosted_file_list: bool = False,
inc_hosted_file_link_list: bool = False,
inc_journal_list: bool = False, # Priority l3 inc_journal_list: bool = False, # Priority l3
inc_journal_entry_list: bool = False, # Priority l3
# inc_membership: bool = False, # inc_membership: bool = False,
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_list: bool = False, inc_membership_list: bool = False,
@@ -99,6 +106,7 @@ def load_account_obj(
inc_product_list: bool = False, # Priority l3 inc_product_list: bool = False, # Priority l3
# inc_site: bool = False, # inc_site: bool = False,
inc_site_list: bool = False, # Priority l3 inc_site_list: bool = False, # Priority l3
inc_site_domain_list: bool = False, # Priority l3
inc_user: bool = False, inc_user: bool = False,
inc_user_list: bool = False, # Priority l2 inc_user_list: bool = False, # Priority l2
inc_user_role_list: bool = False, inc_user_role_list: bool = False,
@@ -109,7 +117,7 @@ def load_account_obj(
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: return False else: return False
if account_rec := sql_select(table_name='account', record_id=account_id): pass if account_rec := sql_select(table_name='v_account', record_id=account_id): pass
else: return False else: return False
#log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
@@ -236,7 +244,7 @@ def load_account_obj(
account_obj.event_list = event_dict_list account_obj.event_list = event_dict_list
else: account_obj.event_list = [] else: account_obj.event_list = []
# Updated 2021-06-17 # Updated 2021-06-18
if inc_hosted_file_list: if inc_hosted_file_list:
if hosted_file_rec_list_result := get_hosted_file_rec_list( if hosted_file_rec_list_result := get_hosted_file_rec_list(
for_obj_type = 'account', for_obj_type = 'account',
@@ -252,12 +260,38 @@ def load_account_obj(
limit = limit, limit = limit,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
enabled = enabled, enabled = enabled,
inc_hosted_file_link_list = inc_hosted_file_line_list, inc_hosted_file_link_list = inc_hosted_file_link_list,
) )
) )
account_obj.hosted_file_list = hosted_file_dict_list account_obj.hosted_file_list = hosted_file_dict_list
else: account_obj.hosted_file_list = [] else: account_obj.hosted_file_list = []
# Updated 2021-06-18
if inc_journal_list:
if journal_rec_list_result := get_journal_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
limit = limit,
enabled = enabled,
):
journal_dict_list = []
for journal_rec in journal_rec_list_result:
journal_dict_list.append(
load_journal_obj(
journal_id = journal_rec.get('journal_id', None),
limit = limit,
model_as_dict = model_as_dict,
enabled = enabled,
inc_journal_entry_list = inc_journal_entry_list,
)
)
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(journal_dict_list)
account_obj.journal_list = journal_dict_list
else: account_obj.journal_list = []
# Updated 2021-06-17 # Updated 2021-06-17
if inc_order_list: if inc_order_list:
if order_rec_list_result := get_order_rec_list( if order_rec_list_result := get_order_rec_list(
@@ -376,6 +410,28 @@ def load_account_obj(
account_obj.product_list = product_dict_list account_obj.product_list = product_dict_list
else: account_obj.product_list = [] else: account_obj.product_list = []
# Updated 2021-06-17
if inc_site_list:
if site_rec_list_result := get_site_rec_list(
for_obj_type = 'account',
for_obj_id = account_id,
limit = limit,
enabled = enabled,
):
site_result_list = []
for site_rec in site_rec_list_result:
site_result_list.append(
load_site_obj(
site_id = site_rec.get('site_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
inc_site_domain_list = inc_site_domain_list,
)
)
account_obj.site_list = site_result_list
else: account_obj.site_list = []
# Updated 2021-06-17 # Updated 2021-06-17
if inc_user_list: if inc_user_list:
if user_rec_list_result := get_user_rec_list( if user_rec_list_result := get_user_rec_list(
@@ -410,7 +466,7 @@ def load_account_obj(
else: account_obj.user_list = [] else: account_obj.user_list = []
if model_as_dict: if model_as_dict:
return account_obj.dict(by_alias=True, exclude_unset=True) # pylint: disable=no-member return account_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return account_obj return account_obj
# ### END ### API Account Methods ### load_account_obj() ### # ### END ### API Account Methods ### load_account_obj() ###

View File

@@ -37,6 +37,8 @@ def create_address_obj(address_obj_new:Address_Base):
def load_address_obj( def load_address_obj(
address_id:int|str, address_id:int|str,
limit: int = 1000, # Probably not needed for the address limit: int = 1000, # Probably not needed for the address
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all # Probably not needed for the address enabled: str = 'enabled', # enabled, disabled, all # Probably not needed for the address
) -> Address_Base|bool: ) -> Address_Base|bool:

View File

@@ -14,6 +14,8 @@ from app.models.archive_content_models import Archive_Content_Base
def load_archive_content_obj( def load_archive_content_obj(
archive_content_id: int|str, archive_content_id: int|str,
# limit: int = 1000, # limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
# enabled: str = 'enabled', # enabled, disabled, all # enabled: str = 'enabled', # enabled, disabled, all
# inc_archive_content_content_list: bool = False, # inc_archive_content_content_list: bool = False,
@@ -37,28 +39,28 @@ def load_archive_content_obj(
log.error(e.json()) log.error(e.json())
if model_as_dict: if model_as_dict:
return archive_content_obj.dict(by_alias=True, exclude_unset=True) # pylint: disable=no-member return archive_content_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return archive_content_obj return archive_content_obj
# ### END ### API Archive Content Methods ### load_archive_content_obj() ### # ### END ### API Archive Content Methods ### load_archive_content_obj() ###
# ### BEGIN ### API Archive Content Methods ### load_archive_content_obj_list() ### # ### BEGIN ### API Archive Content Methods ### get_archive_content_rec_list() ###
def load_archive_content_obj_list( def get_archive_content_rec_list(
archive_id: int|str, for_obj_type: str,
for_obj_id: str,
limit: int = 1000, limit: int = 1000,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
# inc_archive_content_content_list: bool = False,
) -> list|bool: ) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if archive_id := redis_lookup_id_random(record_id_random=archive_id, table_name='archive'): pass if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
else: return False else: return False
data = {} data = {}
data['archive_id'] = archive_id data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']: if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled': if enabled == 'enabled':
@@ -69,7 +71,6 @@ def load_archive_content_obj_list(
sql_enabled = f'AND `tbl`.enable = :enable' sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all': elif enabled == 'all':
sql_enabled = '' sql_enabled = ''
# else: tbl_obj['archive'] = None
if limit: if limit:
data['limit'] = limit data['limit'] = limit
@@ -80,35 +81,19 @@ def load_archive_content_obj_list(
sql = f""" sql = f"""
SELECT `tbl`.id AS 'archive_content_id', `tbl`.id_random AS 'archive_content_id_random' SELECT `tbl`.id AS 'archive_content_id', `tbl`.id_random AS 'archive_content_id_random'
FROM `archive_content` AS `tbl` FROM `archive_content` AS `tbl`
WHERE `tbl`.archive_id = :archive_id WHERE
{sql_enabled} {sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit}; {sql_limit};
""" """
if archive_content_rec_li_result := sql_select(data=data, sql=sql, as_list=True): if archive_content_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL archive_content_rec_li = archive_content_rec_li_result
log.debug(archive_content_rec_li_result)
archive_content_result_li = []
for archive_content_rec in archive_content_rec_li_result:
archive_content_id = archive_content_rec.get('archive_content_id', None)
if archive_content_result := load_archive_content_obj(
archive_content_id = archive_content_id,
model_as_dict = model_as_dict,
# enabled=enabled,
# inc_archive_content_content_list=inc_archive_content_content_list,
):
log.debug(archive_content_result)
archive_content_result_li.append(archive_content_result)
else:
log.debug(archive_content_result)
archive_content_result_li.append(None)
log.debug(archive_content_result_li)
else: else:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL archive_content_rec_li = []
log.debug(archive_content_rec_li_result) log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
archive_content_result_li = [] log.debug(archive_content_rec_li_result)
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
return archive_content_result_li return archive_content_rec_li
# ### END ### API Archive Content Methods ### load_archive_content_obj_list() ### # ### END ### API Archive Content Methods ### get_archive_content_rec_list() ###

View File

@@ -7,7 +7,7 @@ from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, v
from app.db_sql import redis_lookup_id_random, sql_select from app.db_sql import redis_lookup_id_random, sql_select
from app.lib_general import log, logging from app.lib_general import log, logging
from app.methods.archive_content_methods import load_archive_content_obj, load_archive_content_obj_list from app.methods.archive_content_methods import get_archive_content_rec_list, load_archive_content_obj
from app.models.archive_models import Archive_Base from app.models.archive_models import Archive_Base
@@ -16,6 +16,8 @@ from app.models.archive_models import Archive_Base
def load_archive_obj( def load_archive_obj(
archive_id: int|str, archive_id: int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_archive_content_list: bool = False, inc_archive_content_list: bool = False,
@@ -38,95 +40,34 @@ def load_archive_obj(
except ValidationError as e: except ValidationError as e:
log.error(e.json()) log.error(e.json())
# Updated 2021-06-18
if inc_archive_content_list: if inc_archive_content_list:
if archive_content_dict_list := load_archive_content_obj_list( if archive_content_rec_list_result := get_archive_content_rec_list(
archive_id = archive_id, for_obj_type = 'archive',
limit = limit, for_obj_id = archive_id,
model_as_dict = model_as_dict, limit = limit,
enabled = enabled, enabled = enabled,
# inc_archive_content_content_list=inc_archive_content_content_list ):
): archive_content_result_list = []
archive_obj.archive_content_list = archive_content_dict_list for archive_content_rec in archive_content_rec_list_result:
else: archive_obj.archive_content_list = None archive_content_result_list.append(
load_archive_content_obj(
archive_content_id = archive_content_rec.get('archive_content_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
)
)
archive_obj.archive_content_list = archive_content_result_list
else: archive_obj.archive_content_list = []
if model_as_dict: if model_as_dict:
return archive_obj.dict(by_alias=True, exclude_unset=True) # pylint: disable=no-member return archive_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return archive_obj return archive_obj
# ### END ### API Archive Methods ### load_archive_obj() ### # ### END ### API Archive Methods ### load_archive_obj() ###
# ### BEGIN ### API Archive Methods ### load_archive_obj_list() ###
def load_archive_obj_list(
account_id: int|str,
limit: int = 1000,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_archive_content_list: bool = False,
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: return False
data = {}
data['account_id'] = account_id
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
# else: tbl_obj['account'] = None
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'archive_id', `tbl`.id_random AS 'archive_id_random'
FROM `archive` AS `tbl`
WHERE `tbl`.account_id = :account_id
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
if archive_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(archive_rec_li_result)
archive_result_li = []
for archive_rec in archive_rec_li_result:
archive_id = archive_rec.get('archive_id', None)
if archive_result := load_archive_obj(
archive_id = archive_id,
model_as_dict = model_as_dict,
enabled = enabled,
inc_archive_content_list = inc_archive_content_list,
):
log.debug(archive_result)
archive_result_li.append(archive_result)
else:
log.debug(archive_result)
archive_result_li.append(None)
log.debug(archive_result_li)
else:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(archive_rec_li_result)
archive_result_li = []
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
return archive_result_li
# ### END ### API Archive Methods ### load_archive_obj_list() ###
# ### BEGIN ### API Archive Methods ### get_archive_rec_list() ### # ### BEGIN ### API Archive Methods ### get_archive_rec_list() ###
def get_archive_rec_list( def get_archive_rec_list(
for_obj_type: str, for_obj_type: str,

View File

@@ -58,6 +58,8 @@ def create_contact_obj(contact_obj_new:Contact_Base):
def load_contact_obj( def load_contact_obj(
contact_id:int|str, contact_id:int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_address:bool=False inc_address:bool=False
@@ -83,15 +85,17 @@ def load_contact_obj(
address_id = contact_rec.get('address_id', None) address_id = contact_rec.get('address_id', None)
log.debug(address_id) log.debug(address_id)
from app.methods.address_methods import load_address_obj from app.methods.address_methods import load_address_obj
if address_dict := load_address_obj( if address_result := load_address_obj(
address_id = address_id, address_id = address_id,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
): ):
contact_obj.address = address_dict contact_obj.address = address_result
else: contact_obj.address = None else: contact_obj.address = None
if model_as_dict: if model_as_dict:
return contact_obj.dict(by_alias=True, exclude_unset=True) # pylint: disable=no-member return contact_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return contact_obj return contact_obj
# ### END ### API Contact Methods ### load_contact_obj() ### # ### END ### API Contact Methods ### load_contact_obj() ###

View File

@@ -23,6 +23,8 @@ from app.models.event_session_models import Event_Session_Base
def load_event_session_obj( def load_event_session_obj(
event_session_id: int|str, event_session_id: int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_address: bool = False, inc_address: bool = False,

View File

@@ -36,6 +36,8 @@ def create_hosted_file_obj(hosted_file_obj_new:Hosted_File_Base):
def load_hosted_file_obj( def load_hosted_file_obj(
hosted_file_id: int|str, hosted_file_id: int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_hosted_file_link_list: bool = False, inc_hosted_file_link_list: bool = False,
@@ -68,7 +70,7 @@ def load_hosted_file_obj(
# else: hosted_file_obj.x = None # else: hosted_file_obj.x = None
if model_as_dict: if model_as_dict:
return hosted_file_obj.dict(by_alias=True, exclude_unset=True) # pylint: disable=no-member return hosted_file_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return hosted_file_obj return hosted_file_obj
# ### END ### API Hosted File Methods ### load_hosted_file_obj() ### # ### END ### API Hosted File Methods ### load_hosted_file_obj() ###

View File

@@ -0,0 +1,157 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
# from app.methods.journal_methods import load_journal_entry_obj
from app.models.journal_entry_models import Journal_Entry_Base
# ### BEGIN ### API Journal Entry Methods ### create_journal_entry_obj() ###
def create_journal_entry_obj(journal_entry_obj_new:Journal_Entry_Base) -> bool|int:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
journal_entry_obj_data = journal_entry_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'created_on', 'updated_on'})
if journal_entry_obj_in_result := sql_insert(
data=journal_entry_obj_data,
table_name='journal_entry',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(journal_entry_obj_in_result)
journal_entry_id = journal_entry_obj_in_result
log.debug(f'New journal_entry_id: {journal_entry_id}')
return journal_entry_id
# ### END ### API Journal Entry Methods ### create_journal_entry_obj() ###
# ### BEGIN ### API Journal Entry Methods ### load_journal_entry_obj() ###
def load_journal_entry_obj(
journal_entry_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_journal_entry_list: bool = False,
inc_person: bool = False,
inc_user: bool = False,
) -> Journal_Entry_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if journal_entry_id := redis_lookup_id_random(record_id_random=journal_entry_id, table_name='journal_entry'): pass
else: return False
log.debug(journal_entry_id)
if journal_entry_rec := sql_select(table_name='v_journal_entry', record_id=journal_entry_id):
log.debug(journal_entry_rec)
else: return False
log.debug(journal_entry_rec)
try:
journal_entry_obj = Journal_Entry_Base(**journal_entry_rec)
log.debug(journal_entry_obj)
except ValidationError as e:
log.error(e.json())
if model_as_dict:
return journal_entry_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return journal_entry_obj
# ### END ### API Journal Entry Methods ### load_journal_entry_obj() ###
# ### BEGIN ### API Journal Entry Methods ### update_journal_entry_obj() ###
def update_journal_entry_obj(
journal_entry_id: int|str, # This allows for updating of the id_random value.
journal_entry_obj_up: Journal_Entry_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if journal_entry_id := redis_lookup_id_random(record_id_random=journal_entry_id, table_name='journal_entry'): pass
else: return False
journal_entry_obj_up.id = journal_entry_id
log.debug(journal_entry_obj_up)
log.debug(journal_entry_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(journal_entry_obj_up.dict(by_alias=False, exclude_unset=False))
journal_dict_up = journal_entry_obj_up.dict(by_alias=False, exclude_unset=True)
log.debug(journal_dict_up)
if journal_entry_obj_up_result := sql_update(data=journal_dict_up, table_name='journal_entry', rm_id_random=True):
log.debug(journal_entry_obj_up_result)
return True
else:
log.debug(journal_entry_obj_up_result)
return False
# ### END ### API Journal Entry Methods ### update_journal_entry_obj() ###
# ### BEGIN ### API Journal Entry Methods ### get_journal_entry_rec_list() ###
def get_journal_entry_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'journal_entry_id', `tbl`.id_random AS 'journal_entry_id_random'
FROM `journal_entry` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
if journal_entry_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
journal_entry_rec_li = journal_entry_rec_li_result
else:
journal_entry_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(journal_entry_rec_li_result)
return journal_entry_rec_li
# ### END ### API Journal Entry Methods ### get_journal_entry_rec_list() ###

View File

@@ -0,0 +1,187 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
# from app.methods.person_methods import load_person_obj
from app.methods.journal_entry_methods import get_journal_entry_rec_list, load_journal_entry_obj
# from app.methods.user_methods import load_user_obj
from app.models.journal_models import Journal_Base
# ### BEGIN ### API Journal Methods ### create_journal_obj() ###
def create_journal_obj(journal_obj_new:Journal_Base):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if not journal_obj_new:
return False
journal_obj_data = journal_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'user', 'created_on', 'updated_on'})
if journal_obj_in_result := sql_insert(
data=journal_obj_data,
table_name='journal',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(journal_obj_in_result)
journal_id = journal_obj_in_result
log.debug(f'New journal_id: {journal_entry_id}')
return journal_id
# ### END ### API Journal Methods ### create_journal_obj() ###
# ### BEGIN ### API Journal Methods ### load_journal_obj() ###
def load_journal_obj(
journal_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_journal_entry_list: bool = False,
inc_person: bool = False,
inc_user: bool = False,
) -> Journal_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if journal_id := redis_lookup_id_random(record_id_random=journal_id, table_name='journal'): pass
else: return False
if journal_rec := sql_select(table_name='v_journal', record_id=journal_id):
log.debug(journal_rec)
else: return False
log.debug(journal_rec)
try:
journal_obj = Journal_Base(**journal_rec)
log.debug(journal_obj)
except ValidationError as e:
log.error(e.json())
# Updated 2021-06-18
if inc_journal_entry_list:
if journal_entry_rec_list_result := get_journal_entry_rec_list(
for_obj_type = 'journal',
for_obj_id = journal_id,
limit = limit,
enabled = enabled,
):
journal_entry_result_list = []
for journal_entry_rec in journal_entry_rec_list_result:
journal_entry_result_list.append(
load_journal_entry_obj(
journal_entry_id = journal_entry_rec.get('journal_entry_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
enabled = enabled,
inc_person = inc_person,
inc_user = inc_user,
)
)
journal_obj.journal_entry_list = journal_entry_result_list
else: journal_obj.journal_entry_list = []
if model_as_dict:
return journal_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return journal_obj
# ### END ### API Journal Methods ### load_journal_obj() ###
# ### BEGIN ### API Journal Methods ### update_journal_obj() ###
def update_journal_obj(
journal_id: int|str, # This allows for updating of the id_random value.
journal_obj_up: Journal_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if journal_id := redis_lookup_id_random(record_id_random=journal_id, table_name='journal'): pass
else: return False
journal_obj_up.id = journal_id
log.debug(journal_obj_up)
log.debug(journal_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(journal_obj_up.dict(by_alias=False, exclude_unset=False))
journal_dict_up = journal_obj_up.dict(by_alias=False, exclude_unset=True, exclude={'user'})
log.debug(journal_dict_up)
if journal_obj_up_result := sql_update(data=journal_dict_up, table_name='journal', rm_id_random=True):
log.debug(journal_obj_up_result)
return True
else:
log.debug(journal_obj_up_result)
return False
# ### END ### API Journal Methods ### update_journal_obj() ###
# ### BEGIN ### API Journal Methods ### get_journal_rec_list() ###
def get_journal_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'journal_id', `tbl`.id_random AS 'journal_id_random'
FROM `journal` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
if journal_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
journal_rec_li = journal_rec_li_result
else:
journal_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(journal_rec_li_result)
return journal_rec_li
# ### END ### API Journal Methods ### get_journal_rec_list() ###

View File

@@ -8,9 +8,7 @@ from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_updat
from app.lib_general import log, logging from app.lib_general import log, logging
from app.methods.person_methods import load_person_obj from app.methods.person_methods import load_person_obj
# from app.methods.post_comment_list_methods import load_post_comment_obj_list
# from app.methods.user_methods import load_user_obj # from app.methods.user_methods import load_user_obj
# from app.methods.user_load_methods import load_user_obj
from app.models.post_comment_models import Post_Comment_Base from app.models.post_comment_models import Post_Comment_Base
@@ -42,6 +40,8 @@ def create_post_comment_obj(post_comment_obj_new:Post_Comment_Base):
def load_post_comment_obj( def load_post_comment_obj(
post_comment_id: int|str, post_comment_id: int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_person: bool = False, inc_person: bool = False,
@@ -87,85 +87,12 @@ def load_post_comment_obj(
else: post_comment_obj.user = None else: post_comment_obj.user = None
if model_as_dict: if model_as_dict:
return post_comment_obj.dict(by_alias=True, exclude_unset=True) # pylint: disable=no-member return post_comment_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else: else:
return post_comment_obj return post_comment_obj
# ### END ### API Post Comment Methods ### load_post_comment_obj() ### # ### END ### API Post Comment Methods ### load_post_comment_obj() ###
# ### BEGIN ### API Post Comment Methods ### load_post_comment_obj_list() ###
def load_post_comment_obj_list(
post_id: int|str,
limit: int = 1000,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_person: bool = False,
inc_user: bool = False,
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if post_id := redis_lookup_id_random(record_id_random=post_id, table_name='post'): pass
else: return False
data = {}
data['post_id'] = post_id
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
# else: tbl_obj['post'] = None
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'post_comment_id', `tbl`.id_random AS 'post_comment_id_random'
FROM `post_comment` AS `tbl`
WHERE `tbl`.post_id = :post_id
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
if post_comment_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(post_comment_rec_li_result)
post_comment_result_li = []
for post_comment_rec in post_comment_rec_li_result:
post_comment_id = post_comment_rec.get('post_comment_id', None)
if post_comment_result := load_post_comment_obj(
post_comment_id = post_comment_id,
model_as_dict = model_as_dict,
# enabled = enabled,
inc_person = inc_person,
inc_user = inc_user,
):
log.debug(post_comment_result)
post_comment_result_li.append(post_comment_result)
else:
log.debug(post_comment_result)
post_comment_result_li.append(None)
log.debug(post_comment_result_li)
else:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(post_comment_rec_li_result)
post_comment_result_li = []
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
return post_comment_result_li
# ### END ### API Post Comment Methods ### load_post_comment_obj_list() ###
# ### BEGIN ### API Post Comment Methods ### update_post_comment_obj() ### # ### BEGIN ### API Post Comment Methods ### update_post_comment_obj() ###
def update_post_comment_obj( def update_post_comment_obj(
post_comment_id: int|str, # Ideally the int ID should be passed. This allows for updating of the id_random value. post_comment_id: int|str, # Ideally the int ID should be passed. This allows for updating of the id_random value.

View File

@@ -42,6 +42,8 @@ def create_post_obj(post_obj_new:Post_Base):
def load_post_obj( def load_post_obj(
post_id: int|str, post_id: int|str,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_post_comment_list: bool = False, inc_post_comment_list: bool = False,
@@ -86,33 +88,23 @@ def load_post_obj(
limit = limit, limit = limit,
enabled = enabled, enabled = enabled,
): ):
post_comment_dict_list = [] post_comment_result_list = []
for post_comment_rec in post_comment_rec_list_result: for post_comment_rec in post_comment_rec_list_result:
post_comment_dict_list.append( post_comment_result_list.append(
load_post_comment_obj( load_post_comment_obj(
post_comment_id = post_comment_rec.get('post_comment_id', None), post_comment_id = post_comment_rec.get('post_comment_id', None),
limit = limit, limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict, model_as_dict = model_as_dict,
enabled = enabled, enabled = enabled,
inc_person = inc_person, inc_person = inc_person,
inc_user = inc_user, inc_user = inc_user,
) )
) )
post_obj.post_comment_list = post_comment_dict_list post_obj.post_comment_list = post_comment_result_list
else: post_obj.post_comment_list = [] else: post_obj.post_comment_list = []
# if inc_post_comment_list:
# if post_comment_dict_list := load_post_comment_obj_list(
# post_id = post_id,
# limit = limit,
# model_as_dict = model_as_dict,
# enabled = enabled,
# inc_person = inc_person,
# inc_user = inc_user,
# ):
# post_obj.post_comment_list = post_comment_dict_list
# else: post_obj.post_comment_list = None
if inc_user: if inc_user:
user_id = post_rec.get('user_id', None) user_id = post_rec.get('user_id', None)
if user_obj_result := load_user_obj(user_id=user_id): if user_obj_result := load_user_obj(user_id=user_id):
@@ -135,6 +127,8 @@ def load_post_obj_list(
account_id: int|str|None = None, account_id: int|str|None = None,
user_id: int|str|None = None, user_id: int|str|None = None,
limit: int = 1000, limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all enabled: str = 'enabled', # enabled, disabled, all
inc_post_comment_list: bool = False, inc_post_comment_list: bool = False,

View File

@@ -0,0 +1,157 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
from app.models.site_domain_models import Site_Domain_Base
# ### BEGIN ### API Site Domain Methods ### create_site_domain_obj() ###
def create_site_domain_obj(site_domain_obj_new:Site_Domain_Base):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if not site_domain_obj_new:
return False
site_domain_obj_data = site_domain_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'user', 'created_on', 'updated_on'})
if site_domain_obj_in_result := sql_insert(
data=site_domain_obj_data,
table_name='site_domain',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(site_domain_obj_in_result)
site_domain_id = site_domain_obj_in_result
log.debug(f'New site_domain_id: {site_domain_id}')
return site_domain_id
# ### END ### API Site Domain Methods ### create_site_domain_obj() ###
# ### BEGIN ### API Site Domain Methods ### load_site_domain_obj() ###
def load_site_domain_obj(
site_domain_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_site_domain_list: bool = False,
) -> Site_Domain_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if site_domain_id := redis_lookup_id_random(record_id_random=site_domain_id, table_name='site_domain'): pass
else: return False
if site_domain_rec := sql_select(table_name='v_site_domain', record_id=site_domain_id):
log.debug(site_domain_rec)
else: return False
log.debug(site_domain_rec)
try:
site_domain_obj = Site_Domain_Base(**site_domain_rec)
log.debug(site_domain_obj)
except ValidationError as e:
log.error(e.json())
if model_as_dict:
return site_domain_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return site_domain_obj
# ### END ### API Site Domain Methods ### load_site_domain_obj() ###
# ### BEGIN ### API Site Domain Methods ### update_site_domain_obj() ###
def update_site_domain_obj(
site_domain_id: int|str, # This allows for updating of the id_random value.
site_domain_obj_up: Site_Domain_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if site_domain_id := redis_lookup_id_random(record_id_random=site_domain_id, table_name='site_domain'): pass
else: return False
site_domain_obj_up.id = site_domain_id
log.debug(site_domain_obj_up)
log.debug(site_domain_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(site_domain_obj_up.dict(by_alias=False, exclude_unset=False))
site_domain_dict_up = site_domain_obj_up.dict(by_alias=False, exclude_unset=True, exclude={'user'})
log.debug(site_domain_dict_up)
if site_domain_obj_up_result := sql_update(data=site_domain_dict_up, table_name='site_domain', rm_id_random=True):
log.debug(site_domain_obj_up_result)
return True
else:
log.debug(site_domain_obj_up_result)
return False
# ### END ### API Site Domain Methods ### update_site_domain_obj() ###
# ### BEGIN ### API Site Domain Methods ### get_site_domain_rec_list() ###
def get_site_domain_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
# if enabled in ['enabled', 'disabled', 'all']:
# if enabled == 'enabled':
# data['enable'] = True
# sql_enabled = f'AND `tbl`.enable = :enable'
# elif enabled == 'disabled':
# data['enable'] = False
# sql_enabled = f'AND `tbl`.enable = :enable'
# elif enabled == 'all':
# sql_enabled = ''
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'site_domain_id', `tbl`.id_random AS 'site_domain_id_random'
FROM `site_domain` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
if site_domain_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
site_domain_rec_li = site_domain_rec_li_result
else:
site_domain_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(site_domain_rec_li_result)
return site_domain_rec_li
# ### END ### API Site Domain Methods ### get_site_domain_rec_list() ###

181
app/methods/site_methods.py Normal file
View File

@@ -0,0 +1,181 @@
from __future__ import annotations
import datetime
from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
from app.lib_general import log, logging
# from app.methods.person_methods import load_person_obj
from app.methods.site_domain_methods import get_site_domain_rec_list, load_site_domain_obj
# from app.methods.user_methods import load_user_obj
from app.models.site_models import Site_Base
# ### BEGIN ### API Site Methods ### create_site_obj() ###
def create_site_obj(site_obj_new:Site_Base):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if not site_obj_new:
return False
site_obj_data = site_obj_new.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'user', 'created_on', 'updated_on'})
if site_obj_in_result := sql_insert(
data=site_obj_data,
table_name='site',
rm_id_random=True,
id_random_length=8
): pass
else: return False
log.debug(site_obj_in_result)
site_id = site_obj_in_result
log.debug(f'New site_id: {site_id}')
return site_id
# ### END ### API Site Methods ### create_site_obj() ###
# ### BEGIN ### API Site Methods ### load_site_obj() ###
def load_site_obj(
site_id: int|str,
limit: int = 1000,
by_alias: bool = True,
exclude_unset: bool = True,
model_as_dict: bool = False,
enabled: str = 'enabled', # enabled, disabled, all
inc_site_domain_list: bool = False,
) -> Site_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if site_id := redis_lookup_id_random(record_id_random=site_id, table_name='site'): pass
else: return False
if site_rec := sql_select(table_name='v_site', record_id=site_id):
log.debug(site_rec)
else: return False
log.debug(site_rec)
try:
site_obj = Site_Base(**site_rec)
log.debug(site_obj)
except ValidationError as e:
log.error(e.json())
# Updated 2021-06-18
if inc_site_domain_list:
if site_domain_rec_list_result := get_site_domain_rec_list(
for_obj_type = 'site',
for_obj_id = site_id,
limit = limit,
enabled = enabled,
):
site_domain_result_list = []
for site_domain_rec in site_domain_rec_list_result:
site_domain_result_list.append(
load_site_domain_obj(
site_domain_id = site_domain_rec.get('site_domain_id', None),
by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = model_as_dict,
)
)
site_obj.site_domain_list = site_domain_result_list
else: site_obj.site_domain_list = []
if model_as_dict:
return site_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member
else:
return site_obj
# ### END ### API Site Methods ### load_site_obj() ###
# ### BEGIN ### API Site Methods ### update_site_obj() ###
def update_site_obj(
site_id: int|str, # This allows for updating of the id_random value.
site_obj_up: Site_Base,
create_missing_obj: bool = False,
) -> bool:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if site_id := redis_lookup_id_random(record_id_random=site_id, table_name='site'): pass
else: return False
site_obj_up.id = site_id
log.debug(site_obj_up)
log.debug(site_obj_up.dict(by_alias=False, exclude_unset=True))
# log.debug(site_obj_up.dict(by_alias=False, exclude_unset=False))
site_dict_up = site_obj_up.dict(by_alias=False, exclude_unset=True, exclude={'user'})
log.debug(site_dict_up)
if site_obj_up_result := sql_update(data=site_dict_up, table_name='site', rm_id_random=True):
log.debug(site_obj_up_result)
return True
else:
log.debug(site_obj_up_result)
return False
# ### END ### API Site Methods ### update_site_obj() ###
# ### BEGIN ### API Site Methods ### get_site_rec_list() ###
def get_site_rec_list(
for_obj_type: str,
for_obj_id: str,
limit: int = 1000,
enabled: str = 'enabled', # enabled, disabled, all
) -> list|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if for_obj_id := redis_lookup_id_random(record_id_random=for_obj_id, table_name='for_obj_type'): pass
else: return False
data = {}
data[f'{for_obj_type}_id'] = for_obj_id
# data['for_obj_type'] = for_obj_type
sql_obj_type_id = f'`tbl`.{for_obj_type}_id = :{for_obj_type}_id'
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `tbl`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `tbl`.id AS 'site_id', `tbl`.id_random AS 'site_id_random'
FROM `site` AS `tbl`
WHERE
{sql_obj_type_id}
{sql_enabled}
ORDER BY `tbl`.created_on DESC, `tbl`.updated_on DESC
{sql_limit};
"""
if site_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
site_rec_li = site_rec_li_result
else:
site_rec_li = []
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(site_rec_li_result)
return site_rec_li
# ### END ### API Site Methods ### get_site_rec_list() ###

View File

@@ -5,7 +5,7 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from app.models.common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from app.models.account_cfg_models import Account_Cfg_Base from app.models.account_cfg_models import Account_Cfg_Base
@@ -28,8 +28,10 @@ class Account_Base(BaseModel):
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='account_id' alias='account_id'
) )
# account_id: Optional[int] = Field(
# )
code: Optional[str] code: Optional[str]
name: Optional[str] name: Optional[str]
@@ -44,6 +46,8 @@ class Account_Base(BaseModel):
created_on: Optional[datetime.datetime] = None created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
testing: Optional[str]
# Including other related objects # Including other related objects
account_cfg: Optional[Account_Cfg_Base] # Priority l1 account_cfg: Optional[Account_Cfg_Base] # Priority l1
address_list: Optional[list] # Address_Base() # Priority l3 address_list: Optional[list] # Address_Base() # Priority l3
@@ -65,15 +69,6 @@ class Account_Base(BaseModel):
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('account_id_random', always=True)
def account_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True) @validator('id', always=True)
def account_id_lookup(cls, v, values, **kwargs): def account_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)
@@ -84,6 +79,16 @@ class Account_Base(BaseModel):
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='account') return redis_lookup_id_random(record_id_random=values['id_random'], table_name='account')
return None return None
# @validator('account_id', always=True)
# def account_id_duplicate(cls, v, values, **kwargs):
# log.setLevel(logging.DEBUG)
# log.debug(locals())
# if values['id']:
# log.debug(values['id'])
# return values['id']
# return None
class Config: class Config:
underscore_attrs_are_private = True underscore_attrs_are_private = True
fields = base_fields fields = base_fields

View File

@@ -5,9 +5,9 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
class Archive_Content_Base(BaseModel): class Archive_Content_Base(BaseModel):
@@ -20,7 +20,7 @@ class Archive_Content_Base(BaseModel):
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='archive_id' alias='archive_id'
) )
account_id_random: Optional[str] # Is this field really needed? account_id_random: Optional[str] # Is this field really needed?
account_id: Optional[int] # Is this field really needed? account_id: Optional[int] # Is this field really needed?

View File

@@ -5,9 +5,9 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
class Archive_Base(BaseModel): class Archive_Base(BaseModel):

View File

@@ -5,9 +5,9 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
class Journal_Entry_Base(BaseModel): class Journal_Entry_Base(BaseModel):
@@ -16,11 +16,11 @@ class Journal_Entry_Base(BaseModel):
id_random: Optional[str] = Field( id_random: Optional[str] = Field(
**base_fields['journal_entry_id_random'], **base_fields['journal_entry_id_random'],
alias='journal_entry_id_random', alias = 'journal_entry_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='journal_entry_id' alias = 'journal_entry_id'
) )
title: Optional[str] title: Optional[str]
@@ -32,8 +32,9 @@ class Journal_Entry_Base(BaseModel):
personal: Optional[bool] = True personal: Optional[bool] = True
professional: Optional[bool] = False professional: Optional[bool] = False
hide: Optional[int] enable: Optional[bool]
priority: Optional[int] hide: Optional[bool]
priority: Optional[bool]
sort: Optional[int] sort: Optional[int]
group: Optional[str] group: Optional[str]
@@ -43,15 +44,6 @@ class Journal_Entry_Base(BaseModel):
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('journal_entry_id_random', always=True)
def journal_entry_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True) @validator('id', always=True)
def journal_entry_id_lookup(cls, v, values, **kwargs): def journal_entry_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)

View File

@@ -5,9 +5,9 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
class Journal_Base(BaseModel): class Journal_Base(BaseModel):
@@ -15,12 +15,12 @@ class Journal_Base(BaseModel):
log.debug(locals()) log.debug(locals())
id_random: Optional[str] = Field( id_random: Optional[str] = Field(
**base_fields['product_id_random'], **base_fields['journal_id_random'],
alias='product_id_random', alias = 'journal_id_random',
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory = lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='product_id' alias = 'journal_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
account_id: Optional[int] account_id: Optional[int]
@@ -31,8 +31,9 @@ class Journal_Base(BaseModel):
title: Optional[str] title: Optional[str]
summary: Optional[str] summary: Optional[str]
hide: Optional[int] enable: Optional[bool]
priority: Optional[int] hide: Optional[bool]
priority: Optional[bool]
sort: Optional[int] sort: Optional[int]
group: Optional[str] group: Optional[str]
@@ -40,17 +41,11 @@ class Journal_Base(BaseModel):
created_on: Optional[datetime.datetime] = None created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
# Including other related objects
journal_entry_list: Optional[list] # Journal_Entry_Base()
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('journal_id_random', always=True)
def journal_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True) @validator('id', always=True)
def journal_id_lookup(cls, v, values, **kwargs): def journal_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)

View File

@@ -5,11 +5,11 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from app.config import settings from app.config import settings
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
# ### BEGIN ### API Response Model ### Resp_Body_Base() ### # ### BEGIN ### API Response Model ### Resp_Body_Base() ###
@@ -18,6 +18,10 @@ class Resp_Body_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
test_prop: Optional[str] = Field(
alias='test_prop_alias'
)
data: Union[dict, list] data: Union[dict, list]
meta: Optional[dict] meta: Optional[dict]
# ### END ### API Response Model ### Resp_Body_Base() ### # ### END ### API Response Model ### Resp_Body_Base() ###
@@ -26,26 +30,30 @@ class Resp_Body_Base(BaseModel):
# ### BEGIN ### API Response Model ### mk_resp() ### # ### BEGIN ### API Response Model ### mk_resp() ###
# The make response function for REST - STI 2021-03-17 # The make response function for REST - STI 2021-03-17
def mk_resp( def mk_resp(
data:None|bool|dict|list, data: None|bool|dict|list,
dict_to_json:bool=False, dict_to_json: bool = False,
status_code:int=200, status_code: int = 200,
status_message:str='', status_message: str = '',
status_name:str='', status_name: str = '',
success:bool=True, success: bool = True,
details:str='', details: str = '',
by_alias:bool=True, by_alias: bool = True,
exclude_unset:bool=True, exclude_unset: bool = True,
response=None response = None
): ):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if data is None: data = { 'result': data } if data is None: data_out = { 'result': data }
elif data == False: data = { 'result': data } elif data == False: data_out = { 'result': data }
elif data == True: data = { 'result': data } elif data == True: data_out = { 'result': data }
elif isinstance(data, dict): data_out = data
else: # Assuming it is still and object. This should be improved. Example model type: "<class 'app.models.account_models.Account_Base'>"
data_out = data.dict(by_alias=by_alias, exclude_unset=exclude_unset)
log.debug(data_out)
resp_body = {} resp_body = {}
resp_body['data'] = data resp_body['data'] = data_out
resp_body['meta'] = {} resp_body['meta'] = {}
resp_body['meta']['details'] = details resp_body['meta']['details'] = details
resp_body['meta']['status_code'] = status_code resp_body['meta']['status_code'] = status_code
@@ -81,9 +89,14 @@ def mk_resp(
elif status_code == 503: response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE elif status_code == 503: response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE
elif status_code == 504: response.status_code = status.HTTP_504_GATEWAY_TIMEOUT elif status_code == 504: response.status_code = status.HTTP_504_GATEWAY_TIMEOUT
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(type(resp_body['data'])) log.debug(type(resp_body['data']))
resp_body = Resp_Body_Base(**resp_body).dict(by_alias=by_alias, exclude_unset=exclude_unset) resp_body_obj = Resp_Body_Base(**resp_body)
resp_body_obj.test_prop = 'my value'
log.debug(resp_body_obj)
resp_body_dict = resp_body_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
log.debug(resp_body_dict)
return resp_body return resp_body_dict
# ### END ### API Response Model ### mk_resp() ### # ### END ### API Response Model ### mk_resp() ###

View File

@@ -5,10 +5,9 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
#from .site_models import Site_Base as Site_Base_2
class Site_Domain_Base(BaseModel): class Site_Domain_Base(BaseModel):
@@ -21,7 +20,7 @@ class Site_Domain_Base(BaseModel):
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='site_domain_id' alias='site_domain_id'
) )
site_id_random: Optional[str] site_id_random: Optional[str]
@@ -38,19 +37,8 @@ class Site_Domain_Base(BaseModel):
created_on: Optional[datetime.datetime] = None created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
#site: Optional[Site_Base_2] = Site_Base_2()
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('site_domain_id_random', always=True)
def site_domain_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True) @validator('id', always=True)
def site_domain_id_lookup(cls, v, values, **kwargs): def site_domain_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)

View File

@@ -5,10 +5,10 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random from app.db_sql import redis_lookup_id_random
from app.lib_general import * from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes from app.models.common_field_schema import base_fields, default_num_bytes
from .site_domain_models import Site_Domain_Base as Site_Domain_Base_2 from app.models.site_domain_models import Site_Domain_Base
class Site_Base(BaseModel): class Site_Base(BaseModel):
@@ -21,7 +21,7 @@ class Site_Base(BaseModel):
default_factory=lambda:secrets.token_urlsafe(default_num_bytes), default_factory=lambda:secrets.token_urlsafe(default_num_bytes),
) )
id: Optional[int] = Field( id: Optional[int] = Field(
#alias='site_id' alias='site_id'
) )
account_id_random: Optional[str] account_id_random: Optional[str]
@@ -75,19 +75,11 @@ class Site_Base(BaseModel):
created_on: Optional[datetime.datetime] = None created_on: Optional[datetime.datetime] = None
updated_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None
site_domain: Optional[Site_Domain_Base_2] = Site_Domain_Base_2() # Including other related objects
site_domain_list: Optional[list] # Site_Domain_Base()
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)
#@validator('site_id_random', always=True)
def site_id_random_copy(cls, v, values, **kwargs):
log.setLevel(logging.WARNING)
log.debug(locals())
if values['id_random']:
return values['id_random']
return None
@validator('id', always=True) @validator('id', always=True)
def site_id_lookup(cls, v, values, **kwargs): def site_id_lookup(cls, v, values, **kwargs):
log.setLevel(logging.WARNING) log.setLevel(logging.WARNING)

View File

@@ -138,7 +138,9 @@ async def get_account_obj_new(
inc_event_track_list: bool = False, inc_event_track_list: bool = False,
inc_fundraising_cfg: bool = False, inc_fundraising_cfg: bool = False,
inc_hosted_file_list: bool = False, inc_hosted_file_list: bool = False,
inc_hosted_file_link_list: bool = False,
inc_journal_list: bool = False, inc_journal_list: bool = False,
inc_journal_entry_list: bool = False,
# inc_membership: bool = False, # inc_membership: bool = False,
inc_membership_cfg: bool = False, inc_membership_cfg: bool = False,
inc_membership_list: bool = False, inc_membership_list: bool = False,
@@ -158,24 +160,27 @@ async def get_account_obj_new(
inc_product_list: bool = False, inc_product_list: bool = False,
# inc_site: bool = False, # inc_site: bool = False,
inc_site_list: bool = False, inc_site_list: bool = False,
inc_site_domain_list: bool = False,
inc_user: bool = False, inc_user: bool = False,
inc_user_list: bool = False, inc_user_list: bool = False,
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
): ):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: else:
return mk_resp(data=None, status_code=404) return mk_resp(data=None, status_code=404)
if account_dict := load_account_obj( if account_result := load_account_obj(
account_id = account_id, account_id = account_id,
enabled = enabled, enabled = enabled,
limit = limit, limit = limit,
model_as_dict = True, # NOTE: returning model as a dict by_alias = by_alias,
exclude_unset = exclude_unset,
model_as_dict = False, # NOTE: returning model as a dict
inc_account_cfg = inc_account_cfg, inc_account_cfg = inc_account_cfg,
inc_address = inc_address, inc_address = inc_address,
inc_address_list = inc_address_list, inc_address_list = inc_address_list,
@@ -203,7 +208,9 @@ async def get_account_obj_new(
inc_event_track_list = inc_event_track_list, inc_event_track_list = inc_event_track_list,
inc_fundraising_cfg = inc_fundraising_cfg, inc_fundraising_cfg = inc_fundraising_cfg,
inc_hosted_file_list = inc_hosted_file_list, inc_hosted_file_list = inc_hosted_file_list,
inc_hosted_file_link_list = inc_hosted_file_link_list,
inc_journal_list = inc_journal_list, inc_journal_list = inc_journal_list,
inc_journal_entry_list = inc_journal_entry_list,
# inc_membership = inc_membership, # inc_membership = inc_membership,
inc_membership_cfg = inc_membership_cfg, inc_membership_cfg = inc_membership_cfg,
inc_membership_list = inc_membership_list, inc_membership_list = inc_membership_list,
@@ -223,13 +230,33 @@ async def get_account_obj_new(
inc_product_list = inc_product_list, inc_product_list = inc_product_list,
# inc_site = inc_site, # inc_site = inc_site,
inc_site_list = inc_site_list, inc_site_list = inc_site_list,
inc_site_domain_list = inc_site_domain_list,
inc_user = inc_user, inc_user = inc_user,
inc_user_list = inc_user_list, inc_user_list = inc_user_list,
): ):
if isinstance(account_dict, dict): if isinstance(account_result, dict):
response_data = account_dict # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Result is a dict')
response_data = account_result
log.debug(response_data)
else: else:
response_data = account_dict # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# print('---------------------------')
log.info('Result is probably an object model')
response_data = account_result
# print('---------------------------')
log.debug(response_data)
# log.debug(response_data.__fields_set__)
# response_data.testing = 'this is a test'
# log.debug(response_data.__fields_set__)
# print('---------------------------')
# log.debug(account_result.dict())
# print('---------------------------')
# # log.debug(account_result.dict(by_alias=False, exclude_unset=True)) # pylint: disable=no-member
# log.debug(account_result.dict(by_alias=True, exclude_unset=False)) # pylint: disable=no-member
# print('---------------------------')
# log.debug(account_result.dict(by_alias=True, exclude_unset=True)) # pylint: disable=no-member
# print('---------------------------')
else: else:
return mk_resp(data=False, status_code=400) # Bad Request return mk_resp(data=False, status_code=400) # Bad Request

View File

@@ -29,6 +29,7 @@ from app.models.event_registration_models import *
from app.models.event_session_models import * from app.models.event_session_models import *
from app.models.event_track_models import * from app.models.event_track_models import *
from app.models.hosted_file_models import * from app.models.hosted_file_models import *
from app.models.journal_models import *
from app.models.journal_entry_models import * from app.models.journal_entry_models import *
from app.models.membership_models import * from app.models.membership_models import *
from app.models.order_models import * from app.models.order_models import *
@@ -77,7 +78,7 @@ obj_type_li['event_session'] = {'table_name': 'v_event_session', 'base_name': Ev
obj_type_li['event_track'] = {'table_name': 'v_event_track', 'base_name': Event_Track_Base} obj_type_li['event_track'] = {'table_name': 'v_event_track', 'base_name': Event_Track_Base}
obj_type_li['hosted_file'] = {'table_name': 'v_hosted_file', 'base_name': Hosted_File_Base} obj_type_li['hosted_file'] = {'table_name': 'v_hosted_file', 'base_name': Hosted_File_Base}
#obj_type_li['hosted_file_link'] = {'table_name': 'hosted_file_link', 'base_name': Hosted_File_Link_Base} #obj_type_li['hosted_file_link'] = {'table_name': 'hosted_file_link', 'base_name': Hosted_File_Link_Base}
#obj_type_li['journal'] = {'table_name': 'v_journal', 'base_name': Journal_Base} obj_type_li['journal'] = {'table_name': 'v_journal', 'base_name': Journal_Base}
obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'base_name': Journal_Entry_Base} obj_type_li['journal_entry'] = {'table_name': 'v_journal_entry', 'base_name': Journal_Entry_Base}
#obj_type_li['log'] = {'table_name': 'log', 'base_name': Log_Base} #'v_log' #obj_type_li['log'] = {'table_name': 'log', 'base_name': Log_Base} #'v_log'
#obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base} #obj_type_li['log_client_viewing'] = {'table_name': 'log_client_viewing', 'base_name': Log_Client_Viewing_Base}

View File

@@ -5,9 +5,9 @@ from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging from app.lib_general import log, logging
from app.config import settings from app.config import settings
from app.db_sql import * from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.contact_methods import load_contact_obj, update_contact_obj from app.methods.contact_methods import load_contact_obj, update_contact_obj

View File

@@ -3,7 +3,7 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, stat
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union from typing import Dict, List, Optional, Set, Union
from app.lib_general import * from app.lib_general import log, logging
from app.config import settings from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random

View File

@@ -5,7 +5,7 @@ from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging from app.lib_general import log, logging
from app.config import settings from app.config import settings
from app.db_sql import * from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template

View File

@@ -4,12 +4,11 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, stat
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union from typing import Dict, List, Optional, Set, Union
from app.lib_general import * from app.lib_general import log, logging
from ..log import *
from app.config import settings from app.config import settings
from app.db_sql import * from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.journal_models import Journal_Base from app.models.journal_models import Journal_Base
from app.models.response_models import * from app.models.response_models import *

View File

@@ -4,12 +4,11 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, stat
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union from typing import Dict, List, Optional, Set, Union
from app.lib_general import * from app.lib_general import log, logging
from ..log import *
from app.config import settings from app.config import settings
from app.db_sql import * from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.journal_entry_models import Journal_Entry_Base from app.models.journal_entry_models import Journal_Entry_Base
from app.models.response_models import * from app.models.response_models import *