This commit is contained in:
Scott Idem
2022-07-15 13:09:07 -04:00
parent 8fa438336f
commit ed6ae8c93e
6 changed files with 108 additions and 128 deletions

View File

@@ -1,16 +1,18 @@
import datetime
#from datetime import datetime, time, timedelta
import datetime, pytz, secrets, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
from app.lib_general import log, logging, common_route_params, Common_Route_Params
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.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.response_models import *
from app.methods.site_methods import get_site_rec_list, load_site_obj
from app.models.common_field_schema import default_num_bytes
from app.models.response_models import Resp_Body_Base, mk_resp
from app.models.site_models import Site_Base
from app.models.site_domain_models import Site_Domain_Base
@@ -18,7 +20,7 @@ from app.models.site_domain_models import Site_Domain_Base
router = APIRouter()
@router.post('', response_model=Resp_Body_Base)
@router.post('/site', response_model=Resp_Body_Base)
async def post_site_obj(
obj: Site_Base,
x_account_id: str = Header(...),
@@ -42,7 +44,7 @@ async def post_site_obj(
return result
@router.patch('/{obj_id}', response_model=Resp_Body_Base)
@router.patch('/site/{obj_id}', response_model=Resp_Body_Base)
async def patch_site_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
obj: Site_Base = None,
@@ -70,7 +72,7 @@ async def patch_site_obj(
return result
@router.get('/list', response_model=Resp_Body_Base)
@router.get('/site/list', response_model=Resp_Body_Base)
async def get_site_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),
@@ -93,7 +95,7 @@ async def get_site_obj_li(
return result
@router.get('/{obj_id}', response_model=Resp_Body_Base)
@router.get('/site/{obj_id}', response_model=Resp_Body_Base)
async def get_site_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
@@ -114,7 +116,7 @@ async def get_site_obj(
return result
@router.delete('/{obj_id}', response_model=Resp_Body_Base)
@router.delete('/site/{obj_id}', response_model=Resp_Body_Base)
async def delete_site_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
@@ -131,45 +133,50 @@ async def delete_site_obj(
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,
# response: Response = Response,
# ):
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.debug(locals())
# ### BEGIN ### API Site ### get_account_site_obj_li() ###
# Updated 2021-12-13
@router.get('/account/{account_id}/site/list', response_model=Resp_Body_Base)
async def get_account_site_obj_li(
account_id: str = Query(..., min_length=11, max_length=22),
# data = {}
# data['fqdn'] = fqdn
# data['domain_access_key'] = access_key
# data['required_referrer'] = referrer
inc_site_domain_list: bool = False,
# 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'
commons: Common_Route_Params = Depends(common_route_params),
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# sql = """
# SELECT *
# FROM `v_site_domain` AS site_domain
# WHERE site_domain.fqdn = :fqdn
# {sql_domain_access_key}
# {sql_referrer}
# ;
# """
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: return mk_resp(data=None, status_code=404, response=commons.response)
# 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, response=response)
# Updated 2021-12-13
if site_rec_list_result := get_site_rec_list(
account_id = account_id,
# hidden = 'all', # hidden, not_hidden, all
enabled = commons.enabled,
limit = commons.limit,
offset = commons.offset,
):
site_result_list = []
for site_rec in site_rec_list_result:
if load_site_result := load_site_obj(
site_id = site_rec.get('site_id', None),
enabled = commons.enabled,
# hidden = hidden,
limit = commons.limit,
offset = commons.offset,
inc_site_domain_list = inc_site_domain_list,
):
site_result_list.append(load_site_result)
else:
site_result_list.append(None)
response_data = site_result_list
elif isinstance(site_rec_list_result, list) or site_rec_list_result is None: # Empty list or None
log.info('No results')
return mk_resp(data=False, status_code=404, response=commons.response) # Not Found
else:
log.warning('Likely bad request')
return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request
return mk_resp(data=response_data, response=commons.response)
# ### END ### API Site ### get_account_site_obj_li() ###