From b7f6a5ee2a458f2d2d8b06db013b8179338434ed Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Mon, 7 Jun 2021 17:32:50 -0400 Subject: [PATCH] A lot of work on event related modules. Also a lot of clean up. --- app/routers/event_presentation.py | 144 ++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 app/routers/event_presentation.py diff --git a/app/routers/event_presentation.py b/app/routers/event_presentation.py new file mode 100644 index 0000000..46f26ae --- /dev/null +++ b/app/routers/event_presentation.py @@ -0,0 +1,144 @@ +import datetime +#from datetime import datetime, time, timedelta +from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, 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_presentation_methods import load_event_presentation_obj + +from app.models.event_presentation_models import Event_Presentation_Base +from app.models.response_models import * + + +router = APIRouter() + + +@router.post('', response_model=Resp_Body_Base) +async def post_event_presentation_obj( + obj: Event_Presentation_Base, + x_account_id: str = Header(...), + return_obj: Optional[bool] = True, + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'event_presentation' + 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('/{obj_id}', response_model=Resp_Body_Base) +async def patch_event_presentation_obj( + obj: Event_Presentation_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, + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'event_presentation' + 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 + + + + +# ### BEGIN ### API Event Presentation ### get_event_presentation_obj() ### +# Working well as of 2021-06-07. Using as a template for other routes. +@router.get('/{event_presentation_id}', response_model=Resp_Body_Base) +async def get_event_presentation_obj( + event_presentation_id: str = Query(..., min_length=1, max_length=22), + enabled: str = 'enabled', # enabled, disabled, all; For now this covers any included objects or object lists + limit: int = 500, # For now this covers any included objects or object lists + inc_event_abstract_list: bool = False, + inc_event_badge: bool = False, + inc_event_badge_list: bool = False, + inc_event_device_list: bool = False, + inc_event_file_list: bool = False, + inc_event_person_list: bool = False, + inc_event_presenter_list: bool = False, + inc_event_registration: bool = False, + inc_event_registration_list: bool = False, + # inc_event_session: bool = False, # NOTE: Placehold for future? + inc_person: bool = False, + inc_user: bool = False, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + ): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if event_presentation_id := redis_lookup_id_random(record_id_random=event_presentation_id, table_name='event_presentation'): pass + else: + return mk_resp(data=None, status_code=404) + + if event_presentation_obj := load_event_presentation_obj( + event_presentation_id=event_presentation_id, + enabled=enabled, + limit=limit, + inc_event_abstract_list=inc_event_abstract_list, + inc_event_badge=inc_event_badge, + # 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_person_list=inc_event_person_list, + inc_event_presenter_list=inc_event_presenter_list, + inc_event_registration=inc_event_registration, + # inc_event_registration_list=inc_event_registration_list, + inc_person=inc_person, + inc_user=inc_user, + ): + event_presentation_dict = event_presentation_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) + pass + else: + return mk_resp(data=False, status_code=400) # Bad Request + + return mk_resp(data=event_presentation_dict) + #return mk_resp(data=event_presentation_obj) +# ### END ### API Event ### get_event_presentation_obj() ### + + +@router.delete('/{obj_id}', response_model=Resp_Body_Base) +async def delete_event_presentation_obj( + obj_id: str = Query(..., min_length=1, max_length=22), + x_account_id: str = Header(...), + ): + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + obj_type = 'event_presentation' + result = delete_obj_template( + obj_type=obj_type, + obj_id=obj_id, + ) + return result \ No newline at end of file