Work on badge templates

This commit is contained in:
Scott Idem
2022-07-20 17:52:46 -04:00
parent af3ad559a1
commit 7b6baa14c4
2 changed files with 86 additions and 5 deletions

View File

@@ -1,11 +1,10 @@
from __future__ import annotations
import datetime import datetime
from typing import Dict, List, Optional, Set, Union 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 app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update from app.db_sql import redis_lookup_id_random, sql_enable_part, sql_insert, sql_limit_offset_part, sql_select, sql_update
from app.lib_general import log, logging from app.lib_general import log, logging, logger_reset
from app.models.event_badge_template_models import Event_Badge_Template_Base from app.models.event_badge_template_models import Event_Badge_Template_Base
@@ -13,7 +12,9 @@ from app.models.event_badge_template_models import Event_Badge_Template_Base
# ### BEGIN ### API Event Badge Template Methods ### load_event_badge_template_obj() ### # ### BEGIN ### API Event Badge Template Methods ### load_event_badge_template_obj() ###
def load_event_badge_template_obj( def load_event_badge_template_obj(
event_badge_template_id: int|str, event_badge_template_id: int|str,
inc_event_badge_list: bool = False,
limit: int = 1000, limit: int = 1000,
offset: int = 0,
by_alias: bool = True, by_alias: bool = True,
exclude_unset: bool = True, exclude_unset: bool = True,
model_as_dict: bool = False, model_as_dict: bool = False,
@@ -40,3 +41,46 @@ def load_event_badge_template_obj(
else: else:
return event_badge_template_obj return event_badge_template_obj
# ### END ### API Event Badge Template Methods ### load_event_badge_template_obj() ### # ### END ### API Event Badge Template Methods ### load_event_badge_template_obj() ###
# ### BEGIN ### API Event Badge Template Methods ### get_event_badge_template_rec_list() ###
# Updated 2022-07-20
@logger_reset
def get_event_badge_template_rec_list(
event_id: str,
enabled: str = 'enabled', # enabled, disabled, all
limit: int = 25,
offset: int = 0,
) -> list|bool:
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 False
data = {}
data['event_id'] = event_id
sql_enabled, data['enable'] = sql_enable_part(table_name='event_badge_template', enabled=enabled) # Reasonably safe return str and bool
sql_limit = sql_limit_offset_part(limit=limit, offset=offset) # Reasonably safe return str
sql = f"""
SELECT `event_badge_template`.id AS 'event_badge_template_id', `event_badge_template`.id_random AS 'event_badge_template_id_random'
FROM `v_event_badge_template` AS `event_badge_template`
WHERE
`event_badge_template`.event_id = :event_id
{sql_enabled}
ORDER BY event_badge_template.name ASC, `event_badge_template`.created_on DESC, `event_badge_template`.updated_on DESC
{sql_limit};
"""
log.debug(sql)
if event_badge_template_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
event_badge_template_rec_li = event_badge_template_rec_li_result
else: # [] or False
event_badge_template_rec_li = event_badge_template_rec_li_result
log.debug(event_badge_template_rec_li_result)
return event_badge_template_rec_li
# ### END ### API Event Badge Template Methods ### get_event_badge_template_rec_list() ###

View File

@@ -9,7 +9,7 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select,
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template 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.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.event_badge_template_models import Event_Badge_Template_Base
from app.models.response_models import Resp_Body_Base, mk_resp from app.models.response_models import Resp_Body_Base, mk_resp
@@ -24,14 +24,51 @@ router = APIRouter()
@router.get('/event/{event_id}/badge/template/list', response_model = Resp_Body_Base) @router.get('/event/{event_id}/badge/template/list', response_model = Resp_Body_Base)
async def get_event_event_badge_template_obj_list( async def get_event_event_badge_template_obj_list(
event_id: str = Query(None, min_length=11, max_length=22), 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), commons: Common_Route_Params = Depends(common_route_params),
): ):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass 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) 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 = {}
data['event_id'] = event_id data['event_id'] = event_id
log.debug(data) log.debug(data)