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

@@ -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