Working finally getting this to interact with the actual front end.

This commit is contained in:
Scott Idem
2021-03-13 02:17:24 -05:00
parent 46c562871f
commit 4ba34d594d
10 changed files with 353 additions and 63 deletions

View File

@@ -18,7 +18,7 @@ from .lib_general import *
from .log import * from .log import *
# Import the routers here first: # 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 from .db_sql import db
@@ -213,6 +213,14 @@ app.include_router(
#dependencies=[Depends(get_account_header)], #dependencies=[Depends(get_account_header)],
#responses={404: {'description': 'Not found'}}, #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( app.include_router(
user.router, user.router,
prefix='/user', prefix='/user',

View File

@@ -5,8 +5,7 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
from ..lib_general import * 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 .order_model import Order_Base
#from .person_model import Person_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() ### # ### END ### API Order Model ### save_order_obj() ###
# ### BEGIN ### API Order Model ### get_order_obj() ### # ### BEGIN ### API Order Model ### load_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): 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.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) 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()) log.error(e.json())
return order_obj return order_obj
# ### END ### API Order Model ### get_order_obj() ### # ### END ### API Order Model ### load_order_obj() ###

View File

@@ -8,6 +8,7 @@ from ..lib_general import *
from ..log import * from ..log import *
from .common_field_schema import base_fields, default_num_bytes 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): class Site_Domain_Base(BaseModel):
@@ -30,13 +31,15 @@ class Site_Domain_Base(BaseModel):
# restrict_access: Optional[bool] # restrict_access: Optional[bool]
access_key: Optional[str] access_key: Optional[str]
required_referrer: Optional[bool] required_referrer: Optional[str]
valid_for: Optional[int] # number of hours valid_for: Optional[int] # number of hours
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) #@validator('site_domain_id_random', always=True)

View File

@@ -8,6 +8,7 @@ from ..lib_general import *
from ..log import * from ..log import *
from .common_field_schema import base_fields, default_num_bytes 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): class Site_Base(BaseModel):
@@ -50,14 +51,14 @@ class Site_Base(BaseModel):
background_bg_color: Optional[str] background_bg_color: Optional[str]
path_html_menu: Optional[str] path_html_menu: Optional[str]
title: Optional[str] title: Optional[str] = None
html_menu: Optional[str] html_menu: Optional[str] = None
html_header: Optional[str] html_header: Optional[str] = None
html_header_h1: Optional[str] html_header_h1: Optional[str] = None
html_header_h2: Optional[str] html_header_h2: Optional[str] = None
html_banner: Optional[str] html_banner: Optional[str] = None
html_root_body: Optional[str] html_root_body: Optional[str] = None
html_tagline: Optional[str] html_tagline: Optional[str] = None
logo_filename: Optional[str] logo_filename: Optional[str]
banner_image_filename: Optional[str] banner_image_filename: Optional[str]
@@ -78,6 +79,8 @@ 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()
_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) #@validator('site_id_random', always=True)

View File

@@ -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 .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.response_model import *
from ..models.address_model import Address_Base
router = APIRouter() router = APIRouter()
@@ -23,7 +23,10 @@ async def post_address_obj(
x_account_id: str = Header(...), x_account_id: str = Header(...),
return_obj: Optional[bool] = True, return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())
@@ -47,7 +50,10 @@ async def patch_address_obj(
x_account_id: Optional[str] = Header(..., ), x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True, return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())
@@ -73,7 +79,10 @@ async def get_address_obj_li(
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())
@@ -94,7 +103,10 @@ async def get_address_obj(
obj_id: str = Query(..., min_length=1, max_length=22), obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())

View File

@@ -8,6 +8,8 @@ from ..lib_general import *
from app.config import settings from app.config import settings
from app.db_sql import * from app.db_sql import *
from ..models.response_model import *
from ..models.account_model import * from ..models.account_model import *
from ..models.account_cfg_model import * from ..models.account_cfg_model import *
from ..models.address_model import * from ..models.address_model import *
@@ -30,7 +32,6 @@ from ..models.site_model import *
from ..models.site_domain_model import * from ..models.site_domain_model import *
from ..models.user_model import * from ..models.user_model import *
from ..models.user_role_model import * from ..models.user_role_model import *
from ..models.response_model import *
obj_type_li = {} obj_type_li = {}
@@ -131,7 +132,10 @@ async def get_obj_li(
for_obj_id: Optional[str] = Query(None, max_length=22), for_obj_id: Optional[str] = Query(None, max_length=22),
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())
@@ -207,7 +211,10 @@ async def get_obj(
qry_str: Optional[str] = Query(None, max_length=50), qry_str: Optional[str] = Query(None, max_length=50),
qry_int: Optional[int] = None, qry_int: Optional[int] = None,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
""" """
Simple select object type with an ID: Simple select object type with an ID:
@@ -286,8 +293,6 @@ async def delete_obj(
obj_type_l3: str=None, obj_type_l3: str=None,
obj_id: str=None, obj_id: str=None,
x_account_id: str = Header(...), x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
): ):
""" """
Simple delete object type with an ID: Simple delete object type with an ID:
@@ -352,7 +357,10 @@ def post_obj_template(
data:dict=None, data:dict=None,
return_obj:bool=True, return_obj:bool=True,
by_alias: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.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -389,7 +397,10 @@ def patch_obj_template(
obj_id:str=None, obj_id:str=None,
return_obj:bool=True, return_obj:bool=True,
by_alias: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.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -430,7 +441,10 @@ def get_obj_li_template(
for_obj_type: Optional[str] = Query(None, max_length=50), for_obj_type: Optional[str] = Query(None, max_length=50),
for_obj_id: Optional[Union[int,str]] = None, for_obj_id: Optional[Union[int,str]] = None,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())
@@ -466,7 +480,10 @@ def get_obj_template(
obj_type: str = Query(None, max_length=50), obj_type: str = Query(None, max_length=50),
obj_id: Optional[Union[int,str]] = None, obj_id: Optional[Union[int,str]] = None,
by_alias: Optional[bool] = True, by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True, exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
): ):
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())

View File

@@ -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 .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.response_model import *
from ..models.contact_model import Contact_Base
router = APIRouter() router = APIRouter()

View File

@@ -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 .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.response_model import *
from ..models.order_model import Order_Base
from ..models.order_methods import load_order_obj, save_order_obj
router = APIRouter() 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_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
order_status: Optional[str] = 'complete', 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(...), 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,
@@ -80,45 +88,49 @@ async def get_order_obj_li(
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())
obj_type = 'order' # obj_type = 'order'
result = get_obj_li_template( # result = get_obj_li_template(
obj_type=obj_type, # obj_type=obj_type,
for_obj_type=for_obj_type, # for_obj_type=for_obj_type,
for_obj_id=for_obj_id, # for_obj_id=for_obj_id,
by_alias=True, # by_alias=True,
exclude_unset=True, # exclude_unset=True,
) # )
return result # return result
person_id = redis_lookup_id_random(record_id_random=person_id_random, table_name='person')
data = {} data = {}
data['person_id'] = person_id 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')
if obj_type == 'person': # and check there is an ID as well! 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""" 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 data['status'] = order_status
sql_status = f"""AND `order`.status = :status""" sql_status = f"""AND `order`.status = :status"""
else: else:
sql_status = '' 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: if limit:
# 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):
data['limit'] = limit data['limit'] = limit
sql_limit = f"""LIMIT :limit""" sql_limit = f"""LIMIT :limit"""
else: else:
@@ -129,20 +141,21 @@ async def get_order_obj_li(
FROM `order` AS `order` FROM `order` AS `order`
WHERE {sql_account_person_user} WHERE {sql_account_person_user}
{sql_status} {sql_status}
/*{sql_from_to_datetime}*/ {sql_from_to_datetime}
ORDER BY `order`.created_on DESC, `order`.updated_on DESC ORDER BY `order`.created_on DESC, `order`.updated_on DESC
{sql_limit}; {sql_limit};
""" """
if sql_result := sql_select(data=data, sql=sql, as_list=True): if order_obj_li_result := sql_select(data=data, sql=sql, as_list=True):
resp_data_li = [] order_obj_li = []
for record in sql_result: for order_obj in order_obj_li_result:
resp_data = base_name(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset) order_id = order_obj.get('order_id', None)
resp_data_li.append(resp_data) 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)
return mk_resp(data=resp_data_li) order_obj_li.append(data)
return mk_resp(data=order_obj_li)
else: else:
log.debug(sql_result) log.debug(order_obj_li_result)
return mk_resp(data=False, status_code=404) return mk_resp(data=False, status_code=404)

View File

@@ -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 .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.response_model import *
from ..models.site_model import Site_Base
from ..models.site_domain_model import Site_Domain_Base
router = APIRouter() router = APIRouter()
@@ -123,4 +124,47 @@ async def delete_site_obj(
obj_type=obj_type, obj_type=obj_type,
obj_id=obj_id, obj_id=obj_id,
) )
return result 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)

191
app/routers/site_domain.py Normal file
View File

@@ -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