Files
OSIT-AE-API-FastAPI/app/routers/event_badge_template.py

113 lines
4.5 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
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 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 2021-09-08
@router.get('/event/{event_id}/badge/template', response_model=Resp_Body_Base)
async def get_event_event_badge_template_obj(
event_id: str = Query(None, min_length=11, max_length=22),
limit: int = 50,
enabled: str = 'enabled',
x_account_id: str = Header(...),
by_alias: bool = True,
exclude_unset: bool = True,
response: Response = Response,
):
log.setLevel(logging.DEBUG) # 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)
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=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() ###