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, common_route_params, Common_Route_Params 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_exhibit_tracking_methods import get_event_exhibit_tracking_rec_list, load_event_exhibit_tracking_obj from app.models.event_exhibit_tracking_models import Event_Exhibit_Tracking_Base from app.models.response_models import * router = APIRouter() @router.post('/event/exhibit/tracking', response_model=Resp_Body_Base) async def post_event_exhibit_tracking_obj( event_exhibit_tracking_obj: Event_Exhibit_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_exhibit_tracking' event_exhibit_tracking_obj_data_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_unset=True) result = post_obj_template( obj_type = obj_type, data = event_exhibit_tracking_obj_data_dict, return_obj = True, by_alias = True, exclude_unset = True, ) return result @router.patch('/event/exhibit/tracking/{event_exhibit_tracking_id}', response_model=Resp_Body_Base) async def patch_event_exhibit_tracking_obj( event_exhibit_tracking_obj: Event_Exhibit_Tracking_Base, event_exhibit_tracking_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_exhibit_tracking' event_exhibit_tracking_obj_data_dict = event_exhibit_tracking_obj.dict(by_alias=False, exclude_unset=True) event_exhibit_tracking_obj_data_dict['id'] = redis_lookup_id_random(record_id_random=event_exhibit_tracking_id, table_name=obj_type) event_exhibit_tracking_obj_data_dict['id_random'] = event_exhibit_tracking_id result = patch_obj_template( obj_type = obj_type, data = event_exhibit_tracking_obj_data_dict, obj_id = event_exhibit_tracking_id, return_obj = True, by_alias = True, exclude_unset = True, ) return result @router.get('/event/exhibit/tracking/list', response_model=Resp_Body_Base) async def get_event_exhibit_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_exhibit_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/exhibit/tracking/{obj_id}', response_model=Resp_Body_Base) async def get_event_exhibit_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_exhibit_tracking' result = get_obj_template( obj_type=obj_type, obj_id=obj_id, by_alias=True, exclude_unset=True, ) return result # ### BEGIN ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ### # Updated 2022-02-14 @router.get('/event/exhibit/{event_exhibit_id}/tracking/list', response_model=Resp_Body_Base) async def get_event_exhibit_obj_tracking_list( event_exhibit_id: str = Query(..., min_length=11, max_length=22), event_person_id: str = Query(None, min_length=11, max_length=22), inc_event_exhibit: bool = False, inc_event_person: bool = False, commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_exhibit_id := redis_lookup_id_random(record_id_random=event_exhibit_id, table_name='event_exhibit'): pass else: return mk_resp(data=None, status_code=404, response=commons.response) if 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=commons.response) # Updated 2022-02-14 if event_exhibit_tracking_rec_list_result := get_event_exhibit_tracking_rec_list( event_exhibit_id = event_exhibit_id, event_person_id = event_person_id, enabled = commons.enabled, limit = commons.limit, ): event_exhibit_tracking_result_list = [] for event_exhibit_tracking_rec in event_exhibit_tracking_rec_list_result: if load_event_exhibit_tracking_result := load_event_exhibit_tracking_obj( event_exhibit_tracking_id = event_exhibit_tracking_rec.get('event_exhibit_tracking_id', None), enabled = commons.enabled, limit = commons.limit, inc_event_exhibit = inc_event_exhibit, inc_event_person = inc_event_person, by_alias = commons.by_alias, exclude_unset = commons.exclude_unset, # model_as_dict = commons.model_as_dict, ): event_exhibit_tracking_result_list.append(load_event_exhibit_tracking_result) else: event_exhibit_tracking_result_list.append(None) response_data = event_exhibit_tracking_result_list elif isinstance(event_exhibit_tracking_rec_list_result, list): return mk_resp(data=False, status_code=404, response=commons.response) # Not Found else: return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request return mk_resp(data=commons.response_data, response=commons.response) # ### END ### API Event Exhibit Tracking ### get_event_exhibit_obj_tracking_list() ### @router.delete('/event/exhibit/tracking/{obj_id}', response_model=Resp_Body_Base) async def delete_event_exhibit_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_exhibit_tracking' result = delete_obj_template( obj_type=obj_type, obj_id=obj_id, ) return result