Updated badge template and related badge endpoints and methods

This commit is contained in:
Scott Idem
2022-06-23 17:06:06 -04:00
parent 7f437ed685
commit 728fcc05cc
8 changed files with 142 additions and 44 deletions

View File

@@ -398,6 +398,7 @@ origins = [
'http://dev-ishlt.localhost:5000', # Using localhost 'http://dev-ishlt.localhost:5000', # Using localhost
'http://ishlt.localhost:5000', # Using localhost 'http://ishlt.localhost:5000', # Using localhost
'http://npa.localhost:5000', # Using localhost
'https://dev-api.oneskyit.com', 'https://dev-api.oneskyit.com',
'https://ishlt.oneskyit.com', 'https://ishlt.oneskyit.com',

View File

@@ -4,7 +4,7 @@ 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, logger_reset, send_email from app.lib_general import log, logging, logger_reset, send_email
# from app.methods.account_cfg_methods import load_account_cfg_obj # from app.methods.account_cfg_methods import load_account_cfg_obj
@@ -20,6 +20,7 @@ from app.models.event_badge_models import Event_Badge_Base, Event_Badge_Basic_Ba
@logger_reset @logger_reset
def load_event_badge_obj( def load_event_badge_obj(
event_badge_id: int|str, event_badge_id: int|str,
badge_only: bool = False, # Changes the SQL view used
limit: int = 1000, limit: int = 1000,
by_alias: bool = True, by_alias: bool = True,
exclude_unset: bool = True, exclude_unset: bool = True,
@@ -34,8 +35,12 @@ def load_event_badge_obj(
if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): pass if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): pass
else: return False else: return False
if event_badge_rec := sql_select(table_name='v_event_badge', record_id=event_badge_id): pass if badge_only:
else: return False if event_badge_rec := sql_select(table_name='v_event_badge_only', record_id=event_badge_id): pass
else: return False
else:
if event_badge_rec := sql_select(table_name='v_event_badge', record_id=event_badge_id): pass
else: return False
if return_basic_model: if return_basic_model:
try: try:
@@ -75,6 +80,70 @@ def load_event_badge_obj(
# ### END ### API Event Badge Methods ### load_event_badge_obj() ### # ### END ### API Event Badge Methods ### load_event_badge_obj() ###
# ### BEGIN ### API Event Badge Methods ### get_event_badge_rec_list() ###
# Updated 2022-06-14
@logger_reset
def get_event_badge_rec_list(
event_id: str,
badge_only: bool = False, # Changes the SQL view used
badge_type_code: str = None, # guest, member, non-member, staff, volunteer, custom per event
enabled: str = 'enabled', # enabled, disabled, all
limit: int = 250,
offset: int = 0,
) -> list|bool:
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 False
data = {}
data['event_id'] = event_id
if badge_type_code:
data['badge_type_code'] = badge_type_code
sql_badge_type_code = f'AND `event_badge`.badge_type_code = :badge_type_code'
else: sql_badge_type_code = ''
sql_enabled, data['enable'] = sql_enable_part(table_name='event_badge', enabled=enabled) # Reasonably safe return str and bool
sql_limit = sql_limit_offset_part(limit=limit, offset=offset) # Reasonably safe return str
if badge_only:
sql = f"""
SELECT `event_badge`.id AS 'event_badge_id', `event_badge`.id_random AS 'event_badge_id_random'
FROM `v_event_badge_only` AS `event_badge`
WHERE
`event_badge`.event_id = :event_id
{sql_badge_type_code}
{sql_enabled}
ORDER BY `event_badge`.created_on DESC, `event_badge`.updated_on DESC
{sql_limit};
"""
else:
sql = f"""
SELECT `event_badge`.id AS 'event_badge_id', `event_badge`.id_random AS 'event_badge_id_random'
FROM `v_event_badge` AS `event_badge`
WHERE
`event_badge`.event_id = :event_id
{sql_badge_type_code}
{sql_enabled}
ORDER BY `event_badge`.created_on DESC, `event_badge`.updated_on DESC
{sql_limit};
"""
log.debug(sql)
if event_badge_rec_li_result := sql_select(data=data, sql=sql, as_list=True):
event_badge_rec_li = event_badge_rec_li_result
else: # [] or False
event_badge_rec_li = event_badge_rec_li_result
log.debug(event_badge_rec_li_result)
return event_badge_rec_li
# ### END ### API Event Badge Methods ### get_event_badge_rec_list() ###
# ### BEGIN ### API Event Badge Methods ### get_event_badge_template_id_w_event_id() ### # ### BEGIN ### API Event Badge Methods ### get_event_badge_template_id_w_event_id() ###
# Updated 2021-09-14 # Updated 2021-09-14
@logger_reset @logger_reset

View File

@@ -160,9 +160,36 @@ def load_event_obj(
event_obj.contact_3 = contact_3_result event_obj.contact_3 = contact_3_result
else: event_obj.contact_3 = None else: event_obj.contact_3 = None
#if inc_event: pass
if inc_event_abstract_list: pass if inc_event_abstract_list: pass
if inc_event_badge_list: pass
# Updated 2022-06-14
if inc_event_badge_list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Need to include event badge list...')
from app.methods.event_badge_methods import get_event_badge_rec_list, load_event_badge_obj
if event_badge_rec_list_result := get_event_badge_rec_list(
event_id = event_id,
badge_type_code = badge_type_code,
enabled = enabled,
limit = limit,
offset = offset,
):
event_badge_result_list = []
for event_badge_rec in event_badge_rec_list_result:
if load_event_badge_result := load_event_badge_obj(
event_badge_id = event_badge_rec.get('event_badge_id', None),
enabled = enabled,
):
event_badge_result_list.append(load_event_badge_result)
else:
event_badge_result_list.append(None)
log.debug(event_badge_result_list)
event_obj.event_badge_list = event_badge_result_list
elif isinstance(event_badge_rec_list_result, list):
event_obj.event_badge_list = []
else:
event_obj.event_badge_list = None
# Updated 2022-03-09 # Updated 2022-03-09
if inc_event_cfg: if inc_event_cfg:
@@ -179,7 +206,7 @@ def load_event_obj(
# Updated 2022-04-17 # Updated 2022-04-17
if inc_event_device_list: if inc_event_device_list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Need to include event device list...') log.info('Need to include event device list...')
from app.methods.event_device_methods import get_event_device_rec_list, load_event_device_obj from app.methods.event_device_methods import get_event_device_rec_list, load_event_device_obj
@@ -207,7 +234,7 @@ def load_event_obj(
# Updated 2022-03-30 # Updated 2022-03-30
if inc_event_exhibit_list: if inc_event_exhibit_list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Need to include event exhibit list...') log.info('Need to include event exhibit list...')
from app.methods.event_exhibit_methods import get_event_exhibit_rec_list, load_event_exhibit_obj from app.methods.event_exhibit_methods import get_event_exhibit_rec_list, load_event_exhibit_obj
@@ -233,7 +260,7 @@ def load_event_obj(
# Updated 2021-10-21 # Updated 2021-10-21
if inc_event_file_list: if inc_event_file_list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Need to include event file list...') log.info('Need to include event file list...')
from app.methods.event_file_methods import get_event_file_rec_list, load_event_file_obj from app.methods.event_file_methods import get_event_file_rec_list, load_event_file_obj
@@ -269,7 +296,7 @@ def load_event_obj(
# Updated 2021-09-29 # Updated 2021-09-29
if inc_event_location_list: if inc_event_location_list:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Need to include event location list...') log.info('Need to include event location list...')
if event_location_rec_list_result := get_event_location_rec_list( if event_location_rec_list_result := get_event_location_rec_list(
@@ -310,8 +337,8 @@ def load_event_obj(
# Updated 2021-09-28 # Updated 2021-09-28
if inc_event_session_list: if inc_event_session_list:
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.info('Need to include event session list...') log.info('Need to include event session list...')
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
if event_session_rec_list_result := get_event_session_rec_list( if event_session_rec_list_result := get_event_session_rec_list(
event_id = event_id, event_id = event_id,

View File

@@ -3,7 +3,7 @@ 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, logger_reset from app.lib_general import log, logging, logger_reset
# from app.methods.event_methods import load_event_obj # from app.methods.event_methods import load_event_obj

View File

@@ -58,6 +58,9 @@ class Event_Badge_Template_Base(BaseModel):
wireless_ssid: Optional[str] wireless_ssid: Optional[str]
wireless_password: Optional[str] wireless_password: Optional[str]
show_qr_front: Optional[bool]
show_qr_back: Optional[bool]
# Layouts: # Layouts:
# 4x3_pcnametag_N2TIC_tickets, 4.25x6_pcnametag_NS2VWB_badge_only # 4x3_pcnametag_N2TIC_tickets, 4.25x6_pcnametag_NS2VWB_badge_only
# 4x3_custom_receipt_tickets, 4.25x6_custom_receipt_tickets # 4x3_custom_receipt_tickets, 4.25x6_custom_receipt_tickets

View File

@@ -266,7 +266,7 @@ async def get_event_obj(
# inc_address_location = inc_address_location, # inc_address_location = inc_address_location,
inc_contact = inc_contact, inc_contact = inc_contact,
# inc_event_abstract_list = inc_event_abstract_list, # inc_event_abstract_list = inc_event_abstract_list,
# inc_event_badge_list = inc_event_badge_list, inc_event_badge_list = inc_event_badge_list,
inc_event_cfg = inc_event_cfg, inc_event_cfg = inc_event_cfg,
inc_event_device_list = inc_event_device_list, inc_event_device_list = inc_event_device_list,
inc_event_exhibit_list = inc_event_exhibit_list, inc_event_exhibit_list = inc_event_exhibit_list,

View File

@@ -9,7 +9,7 @@ from app.db_sql import sql_enable_part, sql_insert, sql_update, sql_insert_or_up
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_methods import get_event_badge_rec_list, load_event_badge_obj from app.methods.event_badge_methods import get_event_badge_rec_list, load_event_badge_obj
from app.methods.event_badge_methods import email_event_badge_review_url, load_event_badge_obj from app.methods.event_badge_methods import email_event_badge_review_url, load_event_badge_obj
from app.models.event_badge_models import Event_Badge_Base from app.models.event_badge_models import Event_Badge_Base
@@ -373,6 +373,7 @@ async def event_badge_obj_email_review(
@router.get('/event/badge/{event_badge_id}', response_model=Resp_Body_Base) @router.get('/event/badge/{event_badge_id}', response_model=Resp_Body_Base)
async def get_event_badge_obj( async def get_event_badge_obj(
event_badge_id: str = Query(..., min_length=11, max_length=22), event_badge_id: str = Query(..., min_length=11, max_length=22),
badge_only: bool = False,
inc_event_badge_template: bool = True, inc_event_badge_template: bool = True,
commons: Common_Route_Params = Depends(common_route_params), commons: Common_Route_Params = Depends(common_route_params),
@@ -387,6 +388,7 @@ async def get_event_badge_obj(
if event_badge_obj := load_event_badge_obj( if event_badge_obj := load_event_badge_obj(
event_badge_id = event_badge_id, event_badge_id = event_badge_id,
badge_only = badge_only,
inc_event_badge_template = inc_event_badge_template, inc_event_badge_template = inc_event_badge_template,
# limit = commons.limit, # limit = commons.limit,
@@ -428,6 +430,7 @@ async def get_account_obj_event_badge_list(
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# Updated 2021-07-28 # Updated 2021-07-28
# from app.methods.event_badge_methods import get_event_badge_rec_list, load_event_badge_obj
if event_badge_rec_list_result := get_event_badge_rec_list( if event_badge_rec_list_result := get_event_badge_rec_list(
account_id = account_id, account_id = account_id,
limit = limit, limit = limit,
@@ -460,46 +463,46 @@ async def get_account_obj_event_badge_list(
@router.get('/event/{event_id}/event/badge/list', response_model=Resp_Body_Base) @router.get('/event/{event_id}/event/badge/list', response_model=Resp_Body_Base)
async def get_event_obj_event_badge_list( async def get_event_obj_event_badge_list(
event_id: str = Query(..., min_length=11, max_length=22), event_id: str = Query(..., min_length=11, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists badge_only: bool = False,
enabled: str = 'enabled', # For now this covers any included objects or object lists badge_type_code: str = None,
x_account_id: str = Header(...), inc_event_badge_template: bool = False,
by_alias: Optional[bool] = True, inc_event_person: bool = False,
exclude_unset: Optional[bool] = True,
response: Response = Response, commons: Common_Route_Params = Depends(common_route_params),
): ):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): 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, response=response) else: return mk_resp(data=None, status_code=404, response=commons.response)
response_data = None response_data = None
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# Updated 2021-07-28 # Updated 2021-07-28
if event_badge_rec_list_result := get_event_badge_rec_list( if event_badge_rec_list_result := get_event_badge_rec_list(
event_badge_id = event_badge_id, event_id = event_id,
limit = limit, badge_only = badge_only,
enabled = enabled, badge_type_code = badge_type_code,
enabled = commons.enabled,
limit = commons.limit,
offset = commons.offset,
): ):
event_badge_result_list = [] event_badge_result_list = []
for event_badge_rec in event_badge_rec_list_result: for event_badge_rec in event_badge_rec_list_result:
if load_event_badge_result := load_event_badge_obj( if load_event_badge_result := load_event_badge_obj(
event_badge_id = event_badge_rec.get('event_badge_id', None), event_badge_id = event_badge_rec.get('event_badge_id', None),
limit = limit, badge_only = badge_only,
by_alias = by_alias, inc_event_badge_template = inc_event_badge_template,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
enabled = enabled,
): ):
event_badge_result_list.append(load_event_badge_result) event_badge_result_list.append(load_event_badge_result)
else: else:
event_badge_result_list.append(None) event_badge_result_list.append(None)
response_data = event_badge_result_list response_data = event_badge_result_list
else: else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request
return mk_resp(data=response_data, response=response) return mk_resp(data=response_data, response=commons.response)
# ### END ### API Event Badge ### get_event_obj_event_badge_list() ### # ### END ### API Event Badge ### get_event_obj_event_badge_list() ###

View File

@@ -3,7 +3,7 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Resp
from pydantic import BaseModel, EmailStr, Field from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union 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.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.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
@@ -20,16 +20,11 @@ router = APIRouter()
# ### BEGIN ### API Event Badge ### get_event_event_badge_template_obj() ### # ### BEGIN ### API Event Badge ### get_event_event_badge_template_obj() ###
# NOTE: This should probably return a list in the future :NOTE # NOTE: This should probably return a list in the future :NOTE
# Updated 2021-09-08 # Updated 2022-06-22
@router.get('/event/{event_id}/badge/template', 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( 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),
limit: int = 50, commons: Common_Route_Params = Depends(common_route_params),
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.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
@@ -77,7 +72,7 @@ async def get_event_event_badge_template_obj(
# return mk_resp(data=resp_data_li) # return mk_resp(data=resp_data_li)
else: else:
log.debug(sql_result) log.debug(sql_result)
return mk_resp(data=False, status_code=404, response=response) return mk_resp(data=False, status_code=404, response=commons.response)
# ### END ### API Event Badge ### get_event_event_badge_template_obj() ### # ### END ### API Event Badge ### get_event_event_badge_template_obj() ###