Files
OSIT-AE-API-FastAPI/app/routers/event_badge_template.py
2022-07-20 17:52:46 -04:00

145 lines
6.1 KiB
Python

import datetime
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, 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.methods.event_badge_template_methods import get_event_badge_template_rec_list, load_event_badge_template_obj
from app.models.event_badge_template_models import Event_Badge_Template_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
# ### BEGIN ### API Event Badge ### get_event_event_badge_template_obj() ###
# NOTE: This should probably return a list in the future :NOTE
# Updated 2022-06-22
@router.get('/event/{event_id}/badge/template/list', response_model = Resp_Body_Base)
async def get_event_event_badge_template_obj_list(
event_id: str = Query(None, min_length=11, max_length=22),
inc_event_badge_list: bool = False,
commons: Common_Route_Params = Depends(common_route_params),
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass
else: return mk_resp(data=None, status_code=404)
# Updated 2022-07-20
if event_badge_template_rec_list_result := get_event_badge_template_rec_list(
event_id = event_id,
# hidden = 'all', # hidden, not_hidden, all
enabled = commons.enabled,
limit = commons.limit,
offset = commons.offset,
):
event_badge_template_result_list = []
for event_badge_template_rec in event_badge_template_rec_list_result:
if load_event_badge_template_result := load_event_badge_template_obj(
event_badge_template_id = event_badge_template_rec.get('event_badge_template_id', None),
enabled = commons.enabled,
# hidden = hidden,
limit = commons.limit,
offset = commons.offset,
inc_event_badge_list = inc_event_badge_list,
):
event_badge_template_result_list.append(load_event_badge_template_result)
else:
event_badge_template_result_list.append(None)
response_data = event_badge_template_result_list
elif isinstance(event_badge_template_rec_list_result, list) or event_badge_template_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)
data = {}
data['event_id'] = event_id
log.debug(data)
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `event_badge`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `event_badge`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT *
FROM `event_badge_template` AS event_badge_template
WHERE event_badge_template.event_id = :event_id
{sql_limit};
"""
log.debug(sql)
if sql_result := sql_select(data=data, sql=sql): # NOTE: This will probably need to be a list in the future. Force return of list.
resp_data = Event_Badge_Template_Base(**sql_result).dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=resp_data)
# resp_data_li = []
# for record in sql_result:
# resp_data = Event_Badge_Template_Base(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset)
# resp_data_li.append(resp_data)
# return mk_resp(data=resp_data_li)
else:
log.debug(sql_result)
return mk_resp(data=False, status_code=404, response=commons.response)
# ### END ### API Event Badge ### get_event_event_badge_template_obj() ###
# ### BEGIN ### API Event Badge ### get_event_badge_template_obj() ###
# Updated 2021-09-08
@router.get('/event/badge/template/{event_badge_template_id}', response_model=Resp_Body_Base)
async def get_event_badge_template_obj(
event_badge_template_id: str = Query(..., min_length=11, max_length=22),
limit: int = 5, # For now this covers any included objects or object lists
enabled: str = 'enabled', # For now this covers any included objects or object lists
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())
if event_badge_template_id := redis_lookup_id_random(record_id_random=event_badge_template_id, table_name='event_badge_template'): pass
else: return mk_resp(data=None, status_code=404)
event_badge_template_obj = load_event_badge_template_obj(
event_badge_template_id = event_badge_template_id,
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
enabled = enabled,
)
event_badge_template_dict = event_badge_template_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=event_badge_template_dict)
# ### END ### API Event Badge ### get_event_badge_template_obj() ###