From 7b6baa14c44a527c3097d93fb0a94be1b376c0db Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 20 Jul 2022 17:52:46 -0400 Subject: [PATCH] Work on badge templates --- app/methods/event_badge_template_methods.py | 50 +++++++++++++++++++-- app/routers/event_badge_template.py | 41 ++++++++++++++++- 2 files changed, 86 insertions(+), 5 deletions(-) diff --git a/app/methods/event_badge_template_methods.py b/app/methods/event_badge_template_methods.py index 28eb125..1174f2d 100644 --- a/app/methods/event_badge_template_methods.py +++ b/app/methods/event_badge_template_methods.py @@ -1,11 +1,10 @@ -from __future__ import annotations import datetime from typing import Dict, List, Optional, Set, Union 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.lib_general import log, logging +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, logger_reset 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() ### def load_event_badge_template_obj( event_badge_template_id: int|str, + inc_event_badge_list: bool = False, limit: int = 1000, + offset: int = 0, by_alias: bool = True, exclude_unset: bool = True, model_as_dict: bool = False, @@ -40,3 +41,46 @@ def load_event_badge_template_obj( else: return 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() ### diff --git a/app/routers/event_badge_template.py b/app/routers/event_badge_template.py index cb6e2bc..f3af189 100644 --- a/app/routers/event_badge_template.py +++ b/app/routers/event_badge_template.py @@ -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.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.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) 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.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + 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)