Work on things related to event_person, tracking, badges, sessions, etc

This commit is contained in:
Scott Idem
2021-09-21 17:30:20 -04:00
parent 200ee82b9d
commit 0f87f69077
13 changed files with 661 additions and 27 deletions

View File

@@ -119,7 +119,7 @@ async def get_event_badge_obj_li(
resp_data = base_name(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset)
resp_data_li.append(resp_data)
return mk_resp(data=resp_data_li)
return mk_resp(data=resp_data_li, response=response)
else:
log.debug(sql_result)
return mk_resp(data=False, status_code=404, response=response)
@@ -212,7 +212,7 @@ async def search_event_badge_obj_li(
resp_data = Event_Badge_Base(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset)
resp_data_li.append(resp_data)
return mk_resp(data=resp_data_li)
return mk_resp(data=resp_data_li, response=response)
else:
log.debug(sql_result)
return mk_resp(data=False, status_code=404, response=response)
@@ -236,7 +236,7 @@ async def get_event_badge_obj(
log.debug(locals())
if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): pass
else: return mk_resp(data=None, status_code=404)
else: return mk_resp(data=None, status_code=404, response=response)
event_badge_obj = load_event_badge_obj(
event_badge_id = event_badge_id,
@@ -248,7 +248,7 @@ async def get_event_badge_obj(
inc_event_badge_template = inc_event_badge_template,
)
event_badge_dict = event_badge_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
return mk_resp(data=event_badge_dict)
return mk_resp(data=event_badge_dict, response=response)
# ### END ### API Event Badge ### get_event_badge_obj() ###
@@ -269,7 +269,7 @@ async def get_account_obj_event_badge_list(
log.debug(locals())
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: return mk_resp(data=None, status_code=404)
else: return mk_resp(data=None, status_code=404, response=response)
response_data = None
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
@@ -298,7 +298,7 @@ async def get_account_obj_event_badge_list(
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=response_data)
return mk_resp(data=response_data, response=response)
# ### END ### API Event Badge ### get_account_obj_event_badge_list() ###
@@ -318,7 +318,7 @@ async def get_event_obj_event_badge_list(
log.debug(locals())
if event_badge_id := redis_lookup_id_random(record_id_random=event_badge_id, table_name='event_badge'): pass
else: return mk_resp(data=None, status_code=404)
else: return mk_resp(data=None, status_code=404, response=response)
response_data = None
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
@@ -346,7 +346,7 @@ async def get_event_obj_event_badge_list(
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=response_data)
return mk_resp(data=response_data, response=response)
# ### END ### API Event Badge ### get_event_obj_event_badge_list() ###

View File

@@ -407,8 +407,7 @@ async def get_event_person_obj(
log.debug(locals())
if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass
else:
return mk_resp(data=None, status_code=404)
else: return mk_resp(data=None, status_code=404, response=response)
if event_person_obj := load_event_person_obj(
event_person_id = event_person_id,
@@ -436,10 +435,172 @@ async def get_event_person_obj(
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=event_person_obj)
return mk_resp(data=event_person_obj, response=response)
# ### END ### API Event Person ### get_event_person_obj() ###
# ### BEGIN ### API Event Person ### search_event_person_obj_li() ###
# Updated 2021-09-21
@router.get('/event/{event_id}/person/search', response_model=Resp_Body_Base)
async def search_event_person_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_person_id: str = Query('', max_length=50),
external_id: str = Query('', max_length=50),
given_name: str = Query('', max_length=25),
family_name: str = Query('', max_length=25),
email: 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.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if account_id := redis_lookup_id_random(record_id_random=x_account_id, table_name='account'): pass
else: return mk_resp(data=None, status_code=404, response=response)
if event_id:
log.info(f'Looking up Event ID based on Event ID Random: {event_id}')
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)
if event_person_id:
log.info(f'Looking up Event Person ID based on Event ID Random: {event_person_id}')
if event_person_id := redis_lookup_id_random(record_id_random=event_person_id, table_name='event_person'): pass
else: return mk_resp(data=None, status_code=404, response=response)
data = {}
data['account_id'] = account_id
data['event_id'] = event_id
data['event_person_id'] = event_person_id
data['external_id'] = '%'+external_id+'%'
data['given_name'] = '%'+given_name+'%'
data['family_name'] = '%'+family_name+'%'
data['email'] = '%'+email+'%' # 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_person`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `event_person`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
if event_person_id:
log.info('Looking up Event Person based on event_person_id')
sql = f"""
SELECT *
FROM `v_event_person` AS event_person
WHERE event_person.account_id = :account_id
AND event_person.event_id = :event_id
AND event_person.event_person_id LIKE :event_person_id
{sql_enabled}
ORDER BY event_person.event_person_family_name ASC, event_person.event_person_given_name ASC, event_person.created_on DESC, event_person.updated_on DESC
{sql_limit};
"""
elif external_id:
log.info('Looking up Event Person based on external_id')
sql = f"""
SELECT *
FROM `v_event_person` AS event_person
WHERE event_person.account_id = :account_id
AND event_person.event_id = :event_id
AND event_person.external_id LIKE :external_id
{sql_enabled}
ORDER BY event_person.event_person_family_name ASC, event_person.event_person_given_name ASC, event_person.created_on DESC, event_person.updated_on DESC
{sql_limit};
"""
elif given_name and family_name and email:
log.info('Looking up Event Person based on given_name, family_name, and email')
sql = f"""
SELECT *
FROM `v_event_person` AS event_person
WHERE event_person.account_id = :account_id
AND event_person.event_id = :event_id
AND (event_person.event_person_given_name LIKE :given_name OR event_person.person_given_name LIKE :given_name)
AND (event_person.event_person_family_name LIKE :family_name OR event_person.person_family_name LIKE :family_name)
AND (event_person.event_person_email LIKE :email OR event_person.user_email LIKE :email)
{sql_enabled}
ORDER BY event_person.event_person_family_name ASC, event_person.event_person_given_name ASC, event_person.created_on DESC, event_person.updated_on DESC
{sql_limit};
"""
elif given_name and family_name:
log.info('Looking up Event Person based on given_name and family_name')
sql = f"""
SELECT *
FROM `v_event_person` AS event_person
WHERE event_person.account_id = :account_id
AND event_person.event_id = :event_id
AND (event_person.event_person_given_name LIKE :given_name OR event_person.person_given_name LIKE :given_name)
AND (event_person.event_person_family_name LIKE :family_name OR event_person.person_family_name LIKE :family_name)
AND (event_person.event_person_email IS NULL OR event_person.event_person_email LIKE :email OR event_person.user_email LIKE :email)
{sql_enabled}
ORDER BY event_person.event_person_family_name ASC, event_person.event_person_given_name ASC, event_person.created_on DESC, event_person.updated_on DESC
{sql_limit};
"""
elif given_name or family_name:
log.info('Looking up Event Person based on given_name or family_name')
sql = f"""
SELECT *
FROM `v_event_person` AS event_person
WHERE event_person.account_id = :account_id
AND event_person.event_id = :event_id
AND (event_person.event_person_given_name IS NULL OR event_person.event_person_given_name LIKE :given_name OR event_person.person_given_name LIKE :given_name)
AND (event_person.event_person_family_name IS NULL OR event_person.event_person_family_name LIKE :family_name OR event_person.person_family_name LIKE :family_name)
AND (event_person.event_person_email IS NULL OR event_person.event_person_email LIKE :email OR event_person.user_email LIKE :email)
{sql_enabled}
ORDER BY event_person.event_person_family_name ASC, event_person.event_person_given_name ASC, event_person.created_on DESC, event_person.updated_on DESC
{sql_limit};
"""
elif email:
log.info('Looking up Event Person based on email')
sql = f"""
SELECT *
FROM `v_event_person` AS event_person
WHERE event_person.account_id = :account_id
AND event_person.event_id = :event_id
AND (event_person.event_person_given_name IS NULL OR event_person.event_person_given_name LIKE :given_name OR event_person.person_given_name LIKE :given_name)
AND (event_person.event_person_family_name IS NULL OR event_person.event_person_family_name LIKE :family_name OR event_person.person_family_name LIKE :family_name)
AND (event_person.event_person_email LIKE :email OR event_person.user_email LIKE :email)
{sql_enabled}
ORDER BY event_person.event_person_family_name ASC, event_person.event_person_given_name ASC, event_person.created_on DESC, event_person.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_Person_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 Person ### search_event_person_obj_li() ###
# ### BEGIN ### API Event Person Methods ### get_event_registration_event_person_obj_li() ###
# Similar to event_registration.py: /event/registration/<id> inc_event_person_list
# Updated 2021-08-17

View File

@@ -0,0 +1,185 @@
import datetime
#from datetime import datetime, time, timedelta
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 ..log import *
from app.config import settings
from app.db_sql import *
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_person_tracking_methods import get_event_person_tracking_rec_list, load_event_person_tracking_obj
from app.models.event_person_tracking_models import Event_Person_Tracking_Base
from app.models.response_models import *
router = APIRouter()
@router.post('/event/person/tracking', response_model=Resp_Body_Base)
async def post_event_person_tracking_obj(
obj: Event_Person_Tracking_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.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_person_tracking'
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
@router.patch('/event/person/tracking/{obj_id}', response_model=Resp_Body_Base)
async def patch_event_person_tracking_obj(
obj: Event_Person_Tracking_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.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_person_tracking'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
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
@router.get('/event/person/tracking/list', response_model=Resp_Body_Base)
async def get_event_person_tracking_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_person_tracking'
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/person/tracking/{obj_id}', response_model=Resp_Body_Base)
async def get_event_person_tracking_obj(
obj_id: str = Query(..., 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_person_tracking'
result = get_obj_template(
obj_type=obj_type,
obj_id=obj_id,
by_alias=True,
exclude_unset=True,
)
return result
# ### BEGIN ### API Event Person Tracking ### get_event_session_obj_event_person_tracking_list() ###
# Updated 2021-09-21
@router.get('/event/session/{event_session_id}/event/person/tracking/list', response_model=Resp_Body_Base)
async def get_event_session_obj_event_person_tracking_list(
event_session_id: str = Query(..., min_length=11, max_length=22),
limit: int = 500, # For now this covers any included objects or object lists
enabled: str = 'enabled', # For now this covers any included objects or object lists
inc_event_person: bool = False,
inc_event_session: bool = False,
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)
# Updated 2021-09-21
if event_person_tracking_rec_list_result := get_event_person_tracking_rec_list(
for_obj_type = 'event_session',
for_obj_id = event_session_id,
enabled = enabled,
limit = limit,
):
event_person_tracking_result_list = []
for event_person_tracking_rec in event_person_tracking_rec_list_result:
if load_event_person_tracking_result := load_event_person_tracking_obj(
event_person_tracking_id = event_person_tracking_rec.get('event_person_tracking_id', None),
enabled = enabled,
limit = limit,
inc_event_person = inc_event_person,
inc_event_session = inc_event_session,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
):
event_person_tracking_result_list.append(load_event_person_tracking_result)
else:
event_person_tracking_result_list.append(None)
response_data = event_person_tracking_result_list
elif isinstance(event_person_tracking_rec_list_result, list):
return mk_resp(data=False, status_code=404, response=response) # Not Found
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=response_data, response=response)
# ### END ### API Event Person Tracking ### get_event_session_obj_event_person_tracking_list() ###
@router.delete('/event/person/tracking/{obj_id}', response_model=Resp_Body_Base)
async def delete_event_person_tracking_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'event_person_tracking'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result

View File

@@ -96,7 +96,7 @@ async def patch_event_session_obj_exist_v4(
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)
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,
@@ -218,7 +218,7 @@ async def patch_event_session_obj_exist_v3(
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)
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,
@@ -301,7 +301,7 @@ async def patch_event_session_json(
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)
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,
@@ -313,9 +313,9 @@ async def patch_event_session_json(
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)
return mk_resp(data=event_session_dict, response=response)
else:
return mk_resp(data=event_session_obj_up_result)
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() ###
@@ -455,7 +455,7 @@ async def get_event_session_obj_li(
):
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)
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)
@@ -496,7 +496,7 @@ async def get_event_session_obj(
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)
return mk_resp(data=None, status_code=404, response=response)
if event_session_obj := load_event_session_obj(
event_session_id = event_session_id,
@@ -526,7 +526,7 @@ async def get_event_session_obj(
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=event_session_dict)
return mk_resp(data=event_session_dict, response=response)
#return mk_resp(data=event_session_obj)
# ### END ### API Event Session ### get_event_session_obj() ###
@@ -558,8 +558,8 @@ async def get_event_event_session_obj_li(
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='person'): pass
else: return mk_resp(data=None, status_code=404)
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-08-26
if event_session_rec_list_result := get_event_session_rec_list(
@@ -594,10 +594,81 @@ async def get_event_event_session_obj_li(
else:
return mk_resp(data=False, status_code=400, response=response) # Bad Request
return mk_resp(data=response_data)
return mk_resp(data=response_data, response=response)
# ### END ### API Event Session Methods ### 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.DEBUG) # 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),