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

703 lines
31 KiB
Python

import datetime, json
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, get_id_random, 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_session_methods import create_event_session_obj, create_update_event_session_obj_v4, load_event_session_obj, get_event_session_rec_list, update_event_session_obj_v3, update_event_session_obj
from app.models.event_session_models import Event_Session_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
# ### BEGIN ### API Event Session ### post_event_session_obj_new_v4() ###
# Updated 2021-08-25
@router.post('/event/session/new_v4', response_model=Resp_Body_Base)
async def post_event_session_obj_new_v4(
event_session_obj: Event_Session_Base,
create_sub_obj: bool = False,
fail_any: bool = True, # Fail if any thing goes wrong for sub objects
inc_event_presentation_list: bool = False,
inc_event_presenter_list: bool = False,
x_account_id: str = Header(...),
return_obj: bool = True,
limit: int = 500,
enabled: str = 'enabled',
by_alias: bool = True,
exclude_unset: bool = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# There should probably be a check for the event ID before calling the create function?
if create_event_session_obj_result := create_update_event_session_obj_v4(
event_session_dict_obj = event_session_obj,
event_id = event_session_obj.event_id,
create_sub_obj = create_sub_obj,
fail_any = fail_any,
return_outline = False,
): pass
else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.')
if isinstance(create_event_session_obj_result, int):
event_session_id = create_event_session_obj_result
if return_obj:
if load_event_session_obj_result := load_event_session_obj(
event_session_id = event_session_id,
inc_event_presentation_list = inc_event_presentation_list,
inc_event_presenter_list = inc_event_presenter_list,
):
data = load_event_session_obj_result
else:
data = False
else:
event_session_id = event_session_id
event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session')
data = {}
data['event_session_id'] = event_session_id
data['event_session_id_random'] = event_session_id_random
return mk_resp(data=data, response=response, status_message='The event session was created.')
else:
return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.')
# ### END ### API Event Session ### post_event_session_obj_new_v4() ###
# ### BEGIN ### API Event Session ### patch_event_session_obj_exist_v4() ###
# Updated 2021-08-25
@router.patch('/event/session/{event_session_id}/exist_v4', response_model=Resp_Body_Base)
async def patch_event_session_obj_exist_v4(
event_session_obj: Event_Session_Base,
event_session_id: str = Query(..., min_length=11, max_length=22),
create_sub_obj: bool = False,
fail_any: bool = True, # Fail if any thing goes wrong for sub objects
inc_event_presentation_list: bool = False,
inc_event_presenter_list: bool = False,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass
else: return mk_resp(data=None, status_code=404, response=response)
if update_event_session_obj_result := create_update_event_session_obj_v4(
event_session_dict_obj = event_session_obj,
event_session_id = event_session_id,
event_id = event_session_obj.event_id,
create_sub_obj = create_sub_obj,
fail_any = fail_any,
return_outline = False,
): pass
else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.')
if update_event_session_obj_result:
if return_obj:
if load_event_session_obj_result := load_event_session_obj(
event_session_id = event_session_id,
inc_event_presentation_list = inc_event_presentation_list,
inc_event_presenter_list = inc_event_presenter_list,
):
data = load_event_session_obj_result
else:
data = False
else:
event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session')
data = {}
data['event_session_id'] = event_session_id
data['event_session_id_random'] = event_session_id_random
return mk_resp(data=data, response=response, status_message='The event session was created.')
else:
return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.')
# ### END ### API Event Session ### patch_event_session_obj_exist_v4() ###
@router.post('/event/session', response_model=Resp_Body_Base)
async def post_event_session_obj(
obj: Event_Session_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_session'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type=obj_type,
data=obj_data_dict,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
# ### BEGIN ### API Event Session ### post_event_session_obj_new_v3() ###
# Updated 2021-08-21 (all new)
@router.post('/event/session/new_v3', response_model=Resp_Body_Base)
async def post_event_session_obj_new_v3(
event_session_obj: Event_Session_Base,
create_sub_obj: bool = False,
fail_any: bool = True, # Fail if any thing goes wrong for sub objects
x_account_id: str = Header(...),
return_obj: bool = True,
by_alias: bool = True,
exclude_unset: bool = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# There should probably be a check for the event ID before calling the create function?
if create_event_session_obj_result := create_event_session_obj(
event_id = event_session_obj.event_id,
event_session_obj_new = event_session_obj,
create_sub_obj = create_sub_obj,
fail_any = fail_any
): pass
else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.')
if isinstance(create_event_session_obj_result, int):
event_session_id = create_event_session_obj_result
if return_obj:
if load_event_session_obj_result := load_event_session_obj(event_session_id=event_session_id):
data = load_event_session_obj_result
else:
data = False
else:
event_session_id = create_event_session_obj_result
event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session')
data = {}
data['event_session_id'] = event_session_id
data['event_session_id_random'] = event_session_id_random
return mk_resp(data=data, response=response, status_message='The event session was created.')
else:
return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.')
# ### BEGIN ### API Event Session ### post_event_session_obj_new_v3() ###
# ### BEGIN ### API Event Session ### patch_event_session_obj_exist_v3() ###
# Updated 2021-08-24
@router.patch('/event/session/{event_session_id}/exist_v3', response_model=Resp_Body_Base)
async def patch_event_session_obj_exist_v3(
event_session_obj: Event_Session_Base,
event_session_id: str = Query(..., min_length=11, max_length=22),
create_sub_obj: bool = False,
fail_any: bool = True, # Fail if any thing goes wrong for sub objects
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass
else: return mk_resp(data=None, status_code=404, response=response)
if update_event_session_obj_result := update_event_session_obj_v3(
event_session_id = event_session_id,
event_session_obj_exist = event_session_obj,
create_sub_obj = create_sub_obj,
fail_any = fail_any,
): pass
else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.')
if update_event_session_obj_result:
if return_obj:
if load_event_session_obj_result := load_event_session_obj(event_session_id=event_session_id):
data = load_event_session_obj_result
else:
data = False
else:
event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session')
data = {}
data['event_session_id'] = event_session_id
data['event_session_id_random'] = event_session_id_random
return mk_resp(data=data, response=response, status_message='The event session was created.')
else:
return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.')
# ### END ### API Event Session ### patch_event_session_obj_exist_v3() ###
@router.patch('/event/session/{obj_id}', response_model=Resp_Body_Base)
async def patch_event_session_obj(
obj: Event_Session_Base,
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_session'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
log.debug(obj_data_dict)
log.debug(type(obj_data_dict.get('proposal_json', None)))
if 'proposal_json' in obj_data_dict and isinstance(obj_data_dict['proposal_json'], dict):
log.debug('Need to convert to JSON string')
obj_data_dict['proposal_json'] = json.dumps(obj_data_dict['proposal_json'])
log.debug(obj_data_dict)
obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type)
obj_data_dict['id_random'] = obj_id
result = patch_obj_template(
obj_type=obj_type,
data=obj_data_dict,
obj_id=obj_id,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
# ### BEGIN ### API Event Session ### patch_event_session_json() ###
@router.patch('/event/session/{event_session_id}/json', response_model=Resp_Body_Base)
async def patch_event_session_json(
event_session_obj: Event_Session_Base,
event_session_id: str = Query(..., min_length=1, max_length=22),
create_sub_obj: bool = False,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
include: Optional[list] = [],
exclude: Optional[list] = [],
exclude_unset: Optional[bool] = True,
exclude_none: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass
else:
return mk_resp(data=None, status_code=404, response=response)
if event_session_obj_up_result := update_event_session_obj(
event_session_id = event_session_id,
event_session_obj_up = event_session_obj,
create_sub_obj = create_sub_obj,
):
log.debug(event_session_obj_up_result)
if return_obj:
event_session_obj = load_event_session_obj(event_session_id=event_session_id)
event_session_dict = event_session_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=event_session_dict, response=response)
else:
return mk_resp(data=event_session_obj_up_result, response=response)
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
# ### END ### API Event Session ### patch_event_session_json() ###
# @router.get('/list', response_model=Resp_Body_Base)
# async def get_event_session_obj_li(
# for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
# for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
# 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())
# obj_type = 'event_session'
# result = get_obj_li_template(
# obj_type=obj_type,
# for_obj_type=for_obj_type,
# for_obj_id=for_obj_id,
# by_alias=True,
# exclude_unset=True,
# )
# return result
@router.get('/event/session/list', response_model=Resp_Body_Base)
async def get_event_session_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), # account
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
enabled: str = 'enabled', # enabled, disabled, all
from_datetime: Optional[datetime.datetime] = None, # based on start_datetime
to_datetime: Optional[datetime.datetime] = None, # based on start_datetime
limit: int = 500,
inc_event_abstract_list: bool = False,
inc_event_badge_list: bool = False,
inc_event_device_list: bool = False,
inc_event_file_list: bool = False,
inc_event_location: bool = False,
inc_event_person_list: bool = False,
inc_event_presentation_list: bool = False,
inc_event_presenter_list: bool = False,
inc_event_registration_list: bool = False,
inc_event_track: bool = False,
inc_poc_event_person: bool = False,
# inc_poc_person: bool = False,
# inc_user: bool = False,
x_account_id: str = Header(...),
by_alias: bool = True,
exclude_unset: bool = True,
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
data = {}
if for_obj_type == 'account' and for_obj_id:
data['account_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='account')
sql_for_obj_type_id = f'`event`.account_id = :account_id'
elif for_obj_type == 'event' and for_obj_id:
data['event_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event')
sql_for_obj_type_id = f'`event_session`.event_id = :event_id'
elif for_obj_type == 'event_location' and for_obj_id:
data['event_location_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event_location')
sql_for_obj_type_id = f'`event_session`.event_location_id = :event_location_id'
elif for_obj_type == 'event_track' and for_obj_id:
data['event_track_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event_track')
sql_for_obj_type_id = f'`event_session`.event_track_id = :event_track_id'
else:
sql_for_obj_type_id = ''
return mk_resp(data=False, status_code=400, response=response)
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `event_session`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `event_session`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
else:
return mk_resp(data=False, status_code=400, response=response)
if from_datetime and to_datetime:
data['from_datetime'] = from_datetime
data['to_datetime'] = to_datetime
sql_from_to_datetime = f'AND `event_session`.start_datetime >= :from_datetime AND `event_session`.start_datetime <= :to_datetime'
elif from_datetime:
data['from_datetime'] = from_datetime
sql_from_to_datetime = f'AND `event_session`.start_datetime >= :from_datetime'
elif to_datetime:
data['to_datetime'] = to_datetime
sql_from_to_datetime = f'AND `event_session`.start_datetime <= :to_datetime'
else:
sql_from_to_datetime = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `event_session`.id AS 'event_session_id', `event_session`.id_random AS 'event_session_id_random'
FROM `event_session` AS `event_session`
WHERE {sql_for_obj_type_id}
{sql_enabled}
{sql_from_to_datetime}
ORDER BY `event_session`.created_on DESC, `event_session`.updated_on DESC
{sql_limit};
"""
if event_session_li_result := sql_select(data=data, sql=sql, as_list=True):
log.debug(event_session_li_result)
event_session_li = []
for event_session in event_session_li_result:
event_session_id = event_session.get('event_session_id', None)
if event_session_obj := load_event_session_obj(
event_session_id = event_session_id,
enabled = enabled,
inc_event_abstract_list = inc_event_abstract_list,
inc_event_badge_list = inc_event_badge_list,
inc_event_device_list = inc_event_device_list,
inc_event_file_list = inc_event_file_list,
inc_event_location = inc_event_location,
inc_event_person_list = inc_event_person_list,
inc_event_presentation_list = inc_event_presentation_list,
inc_event_presenter_list = inc_event_presenter_list,
inc_event_registration_list = inc_event_registration_list,
inc_event_track = inc_event_track,
inc_poc_event_person = inc_poc_event_person,
# inc_poc_person = inc_poc_person,
# inc_user = inc_user,
):
data = event_session_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
event_session_li.append(data)
return mk_resp(data=event_session_li, response=response)
else:
log.debug(event_session_li_result)
return mk_resp(data=False, status_code=404, response=response)
# ### BEGIN ### API Event Session ### get_event_session_obj() ###
# Updated 2021-09-28
@router.get('/event/session/{event_session_id}', response_model=Resp_Body_Base)
async def get_event_session_obj(
event_session_id: str = Query(..., min_length=11, max_length=22),
enabled: str = 'enabled', # For now this covers any included objects or object lists
limit: int = 500, # For now this covers any included objects or object lists
inc_address: bool = False, # Under contact
inc_contact: bool = False, # Under person
inc_event_abstract_list: bool = False,
inc_event_badge_list: bool = False,
inc_event_device_list: bool = False,
inc_event_file_list: bool = False,
inc_event_location: bool = False,
inc_event_person: bool = False, # Under event_presenter
inc_event_person_profile: bool = False, # Under event_person
inc_event_person_list: bool = False,
inc_event_presentation_list: bool = False,
inc_event_presenter_cat: bool = False,
inc_event_presenter_list: bool = False,
inc_event_registration_list: bool = False,
inc_event_track: bool = False,
inc_poc_event_person: bool = False,
inc_person: bool = False, # Under event_person
inc_user: bool = False, # Under event_person
review: str = 'ready', # ready, not_ready, all
approved: str = 'approved', # approved, not_approved, all
hidden: str = 'not_hidden', # hidden, not_hidden, all
inc_file_count: bool = False, # NOTE: file counts are from separate views
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass
else: return mk_resp(data=None, status_code=404, response=response)
if event_session_obj := load_event_session_obj(
event_session_id = event_session_id,
enabled = enabled,
# review = review,
# approved = approved,
hidden = hidden,
inc_file_count = inc_file_count,
limit = limit,
inc_address = inc_address,
inc_contact = inc_contact,
inc_event_abstract_list = inc_event_abstract_list,
inc_event_badge_list = inc_event_badge_list,
inc_event_device_list = inc_event_device_list,
inc_event_file_list = inc_event_file_list,
inc_event_location = inc_event_location,
inc_event_person = inc_event_person,
inc_event_person_profile = inc_event_person_profile,
inc_event_person_list = inc_event_person_list,
inc_event_presentation_list = inc_event_presentation_list,
inc_event_presenter_cat = inc_event_presenter_cat,
inc_event_presenter_list = inc_event_presenter_list,
inc_event_registration_list = inc_event_registration_list,
inc_event_track = inc_event_track,
inc_poc_event_person = inc_poc_event_person,
inc_person = inc_person,
inc_user = inc_user,
):
event_session_dict = event_session_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
pass
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=event_session_dict, response=response)
#return mk_resp(data=event_session_obj)
# ### END ### API Event Session ### get_event_session_obj() ###
# ### BEGIN ### API Event Session ### get_event_event_session_obj_li() ###
# Updated 2021-08-26
@router.get('/event/{event_id}/event/session/list', response_model=Resp_Body_Base)
async def get_event_event_session_obj_li(
event_id: str = Query(..., min_length=11, max_length=22),
enabled: str = 'enabled', # enabled, disabled, all
limit: int = 50,
# inc_address: bool = False,
# inc_contact: bool = False,
inc_event_file_list: bool = False,
inc_event_presentation_list: bool = False,
inc_event_presenter_cat: bool = False,
inc_event_presenter_list: bool = False,
inc_event_person: bool = False, # Intended for event_presenter
# inc_event_person_list: bool = False,
inc_person: bool = False, # Intended for event_presenter > event_person
inc_poc_event_person: bool = False,
review: str = 'all', # ready, not_ready, all
approved: str = 'all', # approved, not_approved, all
hidden: str = 'not_hidden', # hidden, not_hidden, all
inc_file_count: bool = False, # NOTE: file counts are from separate views
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
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, response=response)
# Updated 2021-12-13
if event_session_rec_list_result := get_event_session_rec_list(
event_id = event_id,
review = review, # ready, not_ready, all
approved = approved, # approve(d), not_approved, all
hidden = hidden, # hidden, not_hidden, all
enabled = enabled,
limit = limit,
):
event_session_result_list = []
for event_session_rec in event_session_rec_list_result:
if load_event_session_result := load_event_session_obj(
event_session_id = event_session_rec.get('event_session_id', None),
enabled = enabled,
# review = review,
# approved = approved,
hidden = hidden,
inc_file_count = inc_file_count,
limit = limit,
inc_event_file_list = inc_event_file_list,
inc_event_presentation_list = inc_event_presentation_list,
inc_event_presenter_cat = inc_event_presenter_cat,
inc_event_presenter_list = inc_event_presenter_list,
inc_person = inc_person,
inc_poc_event_person = inc_poc_event_person,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
):
event_session_result_list.append(load_event_session_result)
else:
event_session_result_list.append(None)
response_data = event_session_result_list
elif event_session_rec_list_result is None:
log.info('No results')
return mk_resp(data=False, status_code=404, response=response) # Not Found
else:
log.warning('Likely bad request')
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=response_data, response=response)
# ### END ### API Event Session ### get_event_event_session_obj_li() ###
# ### BEGIN ### API Event Session ### search_event_session_obj_li() ###
# Updated 2021-09-21
@router.get('/event/{event_id}/session/search', response_model=Resp_Body_Base)
async def search_event_session_obj_li(
# account_id: str = Query(None, min_length=11, max_length=22),
event_id: str = Query(None, min_length=11, max_length=22),
event_session_id: str = Query('%', max_length=22),
event_session_code: str = Query('%', max_length=50),
event_session_name: str = Query('%', max_length=50),
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.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
data = {}
data['account_id_random'] = x_account_id
data['event_id_random'] = event_id
data['event_session_id'] = '%'+event_session_id+'%'
data['event_session_code'] = '%'+event_session_code+'%'
data['event_session_name'] = '%'+event_session_name+'%' # Adding the % symbol here because it turns certain combinations into special characters
# data['from_datetime'] = from_datetime
# data['to_datetime'] = to_datetime
log.debug(data)
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `event_session`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `event_session`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT *
FROM `v_event_session` AS event_session
WHERE event_session.account_id = :account_id
AND event_session.event_id = :event_id
AND (event_session.event_session_code LIKE :event_session_code OR event_session.event_session_code IS NULL)
AND event_session.name LIKE :event_session_name
{sql_enabled}
ORDER BY event_session.start_datetime ASC, event_session.name ASC, event_session.created_on DESC, event_session.updated_on DESC
{sql_limit};
"""
log.debug(sql)
if sql_result := sql_select(data=data, sql=sql, as_list=True, rm_id_random=True):
resp_data_li = []
for record in sql_result:
resp_data = Event_Session_Base(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset)
resp_data_li.append(resp_data)
return mk_resp(data=resp_data_li, response=response)
else:
log.debug(sql_result)
return mk_resp(data=False, status_code=404, response=response)
# ### END ### API Event Session ### search_event_session_obj_li() ###
@router.delete('/event/session/{obj_id}', response_model=Resp_Body_Base)
async def delete_event_session_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
response: Response = Response,
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_session'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result