From 4ba34d594dbf629e37408eb9b8d66ec678fe9d64 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Sat, 13 Mar 2021 02:17:24 -0500 Subject: [PATCH] Working finally getting this to interact with the actual front end. --- app/main.py | 10 +- app/models/order_methods.py | 9 +- app/models/site_domain_model.py | 5 +- app/models/site_model.py | 19 ++-- app/routers/address.py | 14 ++- app/routers/api_crud.py | 27 ++++- app/routers/contact.py | 2 +- app/routers/order.py | 91 ++++++++------- app/routers/site.py | 48 +++++++- app/routers/site_domain.py | 191 ++++++++++++++++++++++++++++++++ 10 files changed, 353 insertions(+), 63 deletions(-) create mode 100644 app/routers/site_domain.py diff --git a/app/main.py b/app/main.py index fdf9684..56337a7 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from .lib_general import * from .log import * # Import the routers here first: -from .routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_registration, event_session, membership, order, order_cart, organization, page, person, post, post_comment, product, site, user, websockets # , items, journals +from .routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_registration, event_session, membership, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, websockets # , items, journals from .db_sql import db @@ -213,6 +213,14 @@ app.include_router( #dependencies=[Depends(get_account_header)], #responses={404: {'description': 'Not found'}}, ) +app.include_router( + site_domain.router, + prefix='/site/domain', + tags=['Site Domain'], + #dependencies=[Depends(get_token_header)], + #dependencies=[Depends(get_account_header)], + #responses={404: {'description': 'Not found'}}, +) app.include_router( user.router, prefix='/user', diff --git a/app/models/order_methods.py b/app/models/order_methods.py index e115037..9558145 100644 --- a/app/models/order_methods.py +++ b/app/models/order_methods.py @@ -5,8 +5,7 @@ from typing import Dict, List, Optional, Set, Union from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from ..lib_general import * -from ..log import * -from .db_sql import sql_select +from ..db_sql import sql_select from .order_model import Order_Base #from .person_model import Person_Base @@ -160,8 +159,8 @@ def save_order_obj(order_obj_new:Order_Base=None, repl_order_line_list:bool=Fals # ### END ### API Order Model ### save_order_obj() ### -# ### BEGIN ### API Order Model ### get_order_obj() ### -def get_order_obj(order_id=None, inc_order_line_li=None, inc_order_cfg=None, inc_person_obj=None, inc_user_obj=None): +# ### BEGIN ### API Order Model ### load_order_obj() ### +def load_order_obj(order_id=None, inc_order_line_li=None, inc_order_cfg=None, inc_person_obj=None, inc_user_obj=None): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -205,4 +204,4 @@ def get_order_obj(order_id=None, inc_order_line_li=None, inc_order_cfg=None, inc log.error(e.json()) return order_obj -# ### END ### API Order Model ### get_order_obj() ### +# ### END ### API Order Model ### load_order_obj() ### diff --git a/app/models/site_domain_model.py b/app/models/site_domain_model.py index 493e3b4..8029881 100644 --- a/app/models/site_domain_model.py +++ b/app/models/site_domain_model.py @@ -8,6 +8,7 @@ from ..lib_general import * from ..log import * from .common_field_schema import base_fields, default_num_bytes +#from .site_model import Site_Base as Site_Base_2 class Site_Domain_Base(BaseModel): @@ -30,13 +31,15 @@ class Site_Domain_Base(BaseModel): # restrict_access: Optional[bool] access_key: Optional[str] - required_referrer: Optional[bool] + required_referrer: Optional[str] valid_for: Optional[int] # number of hours created_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) #@validator('site_domain_id_random', always=True) diff --git a/app/models/site_model.py b/app/models/site_model.py index 1cfeb29..0349c3d 100644 --- a/app/models/site_model.py +++ b/app/models/site_model.py @@ -8,6 +8,7 @@ from ..lib_general import * from ..log import * from .common_field_schema import base_fields, default_num_bytes +from .site_domain_model import Site_Domain_Base as Site_Domain_Base_2 class Site_Base(BaseModel): @@ -50,14 +51,14 @@ class Site_Base(BaseModel): background_bg_color: Optional[str] path_html_menu: Optional[str] - title: Optional[str] - html_menu: Optional[str] - html_header: Optional[str] - html_header_h1: Optional[str] - html_header_h2: Optional[str] - html_banner: Optional[str] - html_root_body: Optional[str] - html_tagline: Optional[str] + title: Optional[str] = None + html_menu: Optional[str] = None + html_header: Optional[str] = None + html_header_h1: Optional[str] = None + html_header_h2: Optional[str] = None + html_banner: Optional[str] = None + html_root_body: Optional[str] = None + html_tagline: Optional[str] = None logo_filename: Optional[str] banner_image_filename: Optional[str] @@ -78,6 +79,8 @@ class Site_Base(BaseModel): created_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None + site_domain: Optional[Site_Domain_Base_2] = Site_Domain_Base_2() + _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) #@validator('site_id_random', always=True) diff --git a/app/routers/address.py b/app/routers/address.py index 085be5e..43bde0b 100644 --- a/app/routers/address.py +++ b/app/routers/address.py @@ -10,8 +10,8 @@ from app.db_sql import * from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template -from ..models.address_model import Address_Base from ..models.response_model import * +from ..models.address_model import Address_Base router = APIRouter() @@ -23,7 +23,10 @@ async def post_address_obj( x_account_id: str = Header(...), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -47,7 +50,10 @@ async def patch_address_obj( x_account_id: Optional[str] = Header(..., ), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -73,7 +79,10 @@ async def get_address_obj_li( for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), x_account_id: str = Header(...), by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -94,7 +103,10 @@ async def get_address_obj( obj_id: str = Query(..., min_length=1, max_length=22), x_account_id: str = Header(...), by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) diff --git a/app/routers/api_crud.py b/app/routers/api_crud.py index 24681dd..bb2262f 100644 --- a/app/routers/api_crud.py +++ b/app/routers/api_crud.py @@ -8,6 +8,8 @@ from ..lib_general import * from app.config import settings from app.db_sql import * +from ..models.response_model import * + from ..models.account_model import * from ..models.account_cfg_model import * from ..models.address_model import * @@ -30,7 +32,6 @@ from ..models.site_model import * from ..models.site_domain_model import * from ..models.user_model import * from ..models.user_role_model import * -from ..models.response_model import * obj_type_li = {} @@ -131,7 +132,10 @@ async def get_obj_li( for_obj_id: Optional[str] = Query(None, max_length=22), x_account_id: str = Header(...), by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -207,7 +211,10 @@ async def get_obj( qry_str: Optional[str] = Query(None, max_length=50), qry_int: Optional[int] = None, by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): """ Simple select object type with an ID: @@ -286,8 +293,6 @@ async def delete_obj( obj_type_l3: str=None, obj_id: str=None, x_account_id: str = Header(...), - by_alias: Optional[bool] = True, - exclude_unset: Optional[bool] = True, ): """ Simple delete object type with an ID: @@ -352,7 +357,10 @@ def post_obj_template( data:dict=None, return_obj:bool=True, by_alias:bool=True, - exclude_unset:bool=True + include: Optional[list] = [], + exclude: Optional[list] = [], + exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -389,7 +397,10 @@ def patch_obj_template( obj_id:str=None, return_obj:bool=True, by_alias:bool=True, - exclude_unset:bool=True + include: Optional[list] = [], + exclude: Optional[list] = [], + exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -430,7 +441,10 @@ def get_obj_li_template( for_obj_type: Optional[str] = Query(None, max_length=50), for_obj_id: Optional[Union[int,str]] = None, by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -466,7 +480,10 @@ def get_obj_template( obj_type: str = Query(None, max_length=50), obj_id: Optional[Union[int,str]] = None, by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, ): log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) diff --git a/app/routers/contact.py b/app/routers/contact.py index aad8813..16d992a 100644 --- a/app/routers/contact.py +++ b/app/routers/contact.py @@ -10,8 +10,8 @@ from app.db_sql import * from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template -from ..models.contact_model import Contact_Base from ..models.response_model import * +from ..models.contact_model import Contact_Base router = APIRouter() diff --git a/app/routers/order.py b/app/routers/order.py index 309faf1..9ff1709 100644 --- a/app/routers/order.py +++ b/app/routers/order.py @@ -11,8 +11,9 @@ from app.db_sql import * from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template -from ..models.order_model import Order_Base from ..models.response_model import * +from ..models.order_model import Order_Base +from ..models.order_methods import load_order_obj, save_order_obj router = APIRouter() @@ -73,6 +74,13 @@ async def get_order_obj_li( for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), order_status: Optional[str] = 'complete', + from_datetime: Optional[datetime.datetime] = None, + to_datetime: Optional[datetime.datetime] = None, + limit: Optional[int] = None, + inc_order_line_li: Optional[bool] = False, + inc_order_cfg: Optional[bool] = False, + inc_person_obj: Optional[bool] = False, + inc_user_obj: Optional[bool] = False, x_account_id: str = Header(...), by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, @@ -80,45 +88,49 @@ async def get_order_obj_li( log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - obj_type = 'order' - result = get_obj_li_template( - obj_type=obj_type, - for_obj_type=for_obj_type, - for_obj_id=for_obj_id, - by_alias=True, - exclude_unset=True, - ) - return result - - person_id = redis_lookup_id_random(record_id_random=person_id_random, table_name='person') + # obj_type = 'order' + # result = get_obj_li_template( + # obj_type=obj_type, + # for_obj_type=for_obj_type, + # for_obj_id=for_obj_id, + # by_alias=True, + # exclude_unset=True, + # ) + # return result data = {} - data['person_id'] = person_id - - if obj_type == 'person': # and check there is an ID as well! + if for_obj_type == 'account' and for_obj_id: + data['account_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='account') + sql_account_person_user = f"""`order`.account_id = :account_id""" + elif for_obj_type == 'person' and for_obj_id: + data['person_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='person') sql_account_person_user = f"""`order`.person_id = :person_id""" + elif for_obj_type == 'user' and for_obj_id: + data['user_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='user') + sql_account_person_user = f"""`order`.user_id = :user_id""" + else: + sql_account_person_user = '' - if order_status: + if order_status in ['canceled', 'complete', 'in progress', 'started']: data['status'] = order_status sql_status = f"""AND `order`.status = :status""" else: sql_status = '' + if from_datetime and to_datetime: + data['from_datetime'] = from_datetime + data['to_datetime'] = to_datetime + sql_from_to_datetime = f"""AND `order`.created_on >= :from_datetime AND `order`.created_on <= :to_datetime""" + elif from_datetime: + data['from_datetime'] = from_datetime + sql_from_to_datetime = f"""AND `order`.created_on >= :from_datetime""" + elif to_datetime: + data['to_datetime'] = to_datetime + sql_from_to_datetime = f"""AND `order`.created_on <= :to_datetime""" + else: + sql_from_to_datetime = '' - # if from_datetime and to_datetime: - # data['from_datetime'] = from_datetime - # data['to_datetime'] = to_datetime - # sql_from_to_datetime = f"""AND `order`.created_on >= :from_datetime AND `order`.created_on <= :to_datetime""" - # elif from_datetime: - # data['from_datetime'] = from_datetime - # sql_from_to_datetime = f"""AND `order`.created_on >= :from_datetime""" - # elif to_datetime: - # data['to_datetime'] = to_datetime - # sql_from_to_datetime = f"""AND `order`.created_on <= :to_datetime""" - # else: - # sql_from_to_datetime = '' - - if limit := request.args.get('limit', default=None, type=int): + if limit: data['limit'] = limit sql_limit = f"""LIMIT :limit""" else: @@ -129,20 +141,21 @@ async def get_order_obj_li( FROM `order` AS `order` WHERE {sql_account_person_user} {sql_status} - /*{sql_from_to_datetime}*/ + {sql_from_to_datetime} ORDER BY `order`.created_on DESC, `order`.updated_on DESC {sql_limit}; """ - if sql_result := sql_select(data=data, sql=sql, as_list=True): - resp_data_li = [] - for record in sql_result: - resp_data = base_name(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset) - resp_data_li.append(resp_data) - - return mk_resp(data=resp_data_li) + if order_obj_li_result := sql_select(data=data, sql=sql, as_list=True): + order_obj_li = [] + for order_obj in order_obj_li_result: + order_id = order_obj.get('order_id', None) + if order_obj := load_order_obj(order_id=order_id, inc_order_line_li=inc_order_line_li, inc_order_cfg=inc_order_cfg, inc_person_obj=inc_person_obj, inc_user_obj=inc_user_obj): + data = order_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) + order_obj_li.append(data) + return mk_resp(data=order_obj_li) else: - log.debug(sql_result) + log.debug(order_obj_li_result) return mk_resp(data=False, status_code=404) diff --git a/app/routers/site.py b/app/routers/site.py index 609a307..ddd8fde 100644 --- a/app/routers/site.py +++ b/app/routers/site.py @@ -11,8 +11,9 @@ from app.db_sql import * from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template -from ..models.site_model import Site_Base from ..models.response_model import * +from ..models.site_model import Site_Base +from ..models.site_domain_model import Site_Domain_Base router = APIRouter() @@ -123,4 +124,47 @@ async def delete_site_obj( obj_type=obj_type, obj_id=obj_id, ) - return result \ No newline at end of file + return result + + +# @router.get('/domain/lookup_fqdn', response_model=Resp_Body_Base) +# async def get_site_obj( +# fqdn: str, +# access_key: Optional[str] = None, +# referrer: Optional[str] = None, +# x_account_id: str = Header(...), +# by_alias: Optional[bool] = True, +# exclude_unset: Optional[bool] = True, +# ): +# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL +# log.debug(locals()) + +# data = {} +# data['fqdn'] = fqdn +# data['domain_access_key'] = access_key +# data['required_referrer'] = referrer + +# if access_key: +# sql_domain_access_key = 'AND site_domain.domain_access_key = :domain_access_key' +# if referrer: +# sql_referrer = 'AND site_domain.required_referrer = :required_referrer' + +# sql = """ +# SELECT * +# FROM `v_site_domain` AS site_domain +# WHERE site_domain.fqdn = :fqdn +# {sql_domain_access_key} +# {sql_referrer} +# ; +# """ + +# if site_domain_obj_result := sql_select(data=data, sql=sql): +# try: +# site_domain_obj = Site_Domain_Base(**site_domain_obj_result) +# log.debug(order_obj) +# except ValidationError as e: +# log.error(e.json()) +# return mk_resp(data=order_obj_li) +# else: +# log.debug(order_obj_li_result) +# return mk_resp(data=False, status_code=404) diff --git a/app/routers/site_domain.py b/app/routers/site_domain.py new file mode 100644 index 0000000..45fdc25 --- /dev/null +++ b/app/routers/site_domain.py @@ -0,0 +1,191 @@ +import datetime +#from datetime import datetime, time, timedelta +from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, status +from pydantic import BaseModel, EmailStr, Field +from typing import Dict, List, Optional, Set, Union + +from ..lib_general import * +from app.config import settings +from app.db_sql import * + +from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template + +from ..models.response_model import * +from ..models.site_model import Site_Base +from ..models.site_domain_model import Site_Domain_Base + + +router = APIRouter() + + +@router.post('', response_model=Resp_Body_Base) +async def post_site_domain_obj( + obj: Site_Domain_Base, + x_account_id: str = Header(...), + return_obj: Optional[bool] = True, + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'site_domain' + obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) + result = post_obj_template( + obj_type=obj_type, + data=obj_data_dict, + return_obj=True, + by_alias=True, + exclude_unset=True, + ) + return result + + +@router.patch('/{obj_id}', response_model=Resp_Body_Base) +async def patch_site_domain_obj( + obj_id: str = Query(..., min_length=1, max_length=22), + obj: Site_Domain_Base = None, + x_account_id: Optional[str] = Header(..., ), + return_obj: Optional[bool] = True, + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'site_domain' + obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) + obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type) + obj_data_dict['id_random'] = obj_id + result = patch_obj_template( + obj_type=obj_type, + data=obj_data_dict, + obj_id=obj_id, + return_obj=True, + by_alias=True, + exclude_unset=True, + ) + return result + + +@router.get('/lookup_fqdn', response_model=Resp_Body_Base) +async def get_site_domain_obj( + fqdn: str, + access_key: Optional[str] = None, + referrer: Optional[str] = None, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + include: Optional[list] = [], + exclude: Optional[list] = [], + exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, + ): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + data = {} + data['fqdn'] = fqdn + data['domain_access_key'] = access_key + data['required_referrer'] = referrer + + if access_key: + #sql_domain_access_key = 'AND site_domain.domain_access_key = :domain_access_key' + + sql_domain_access_key = """ + AND (site_domain.domain_access_key = :domain_access_key AND (site_domain.required_referrer IS NULL OR site_domain.required_referrer = '')) + OR (site_domain.domain_access_key = :domain_access_key AND site_domain.required_referrer = :required_referrer) + """ + else: + sql_domain_access_key = 'AND site_domain.domain_access_key IS NULL' + #if referrer: + # sql_referrer = 'AND site_domain.required_referrer = :required_referrer' + + sql = f""" + SELECT *, site_enable_from AS 'enable_from', site_enable_to AS 'enable_to' + FROM `v_site_domain` AS site_domain + WHERE site_domain.fqdn = :fqdn + {sql_domain_access_key} + ; + """ + log.debug(sql) + + if site_domain_obj_result := sql_select(data=data, sql=sql): + try: + site_obj = Site_Base(**site_domain_obj_result).dict(by_alias=by_alias, exclude_unset=exclude_unset, exclude_none=exclude_none) + log.debug(site_obj) + except ValidationError as e: + log.error(e.json()) + try: + site_domain_obj = Site_Domain_Base(**site_domain_obj_result).dict(by_alias=by_alias, exclude_unset=exclude_unset, exclude_none=exclude_none) + log.debug(site_domain_obj) + except ValidationError as e: + log.error(e.json()) + + site_domain_obj['site'] = site_obj + log.debug(site_domain_obj) + + return mk_resp(data=site_domain_obj) + else: + log.debug(site_domain_obj_result) + return mk_resp(data=False, status_code=404) + + +@router.get('/list', response_model=Resp_Body_Base) +async def get_site_domain_obj_li( + for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), + for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'site_domain' + result = get_obj_li_template( + obj_type=obj_type, + for_obj_type=for_obj_type, + for_obj_id=for_obj_id, + by_alias=True, + exclude_unset=True, + ) + return result + + +@router.get('/{obj_id}', response_model=Resp_Body_Base) +async def get_site_domain_obj( + obj_id: str = Query(..., min_length=1, max_length=22), + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + exclude_none: Optional[bool] = True, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'site_domain' + result = get_obj_template( + obj_type=obj_type, + obj_id=obj_id, + by_alias=True, + exclude_unset=True, + ) + return result + + +@router.delete('/{obj_id}', response_model=Resp_Body_Base) +async def delete_site_domain_obj( + obj_id: str = Query(..., min_length=1, max_length=22), + x_account_id: str = Header(...), + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'site_domain' + result = delete_obj_template( + obj_type=obj_type, + obj_id=obj_id, + ) + return result