A lot of work on event related modules. Also a lot of clean up

This commit is contained in:
Scott Idem
2021-06-07 16:48:55 -04:00
parent 979e0c2174
commit 33ec6a4acb
14 changed files with 423 additions and 66 deletions

View File

@@ -3,7 +3,7 @@ import datetime, pytz, redis, secrets
from timeit import default_timer as timer
from app.config import settings
from .log import *
from app.log import log, logging
#from .lib_general import lookup_id_random_pop
from sqlalchemy import create_engine, text, Time
@@ -741,6 +741,7 @@ def redis_lookup_id_random(record_id_random:int|str, table_name:str):
# ### BEGIN ### API Lib General ### lookup_id_random_pop() ###
# Look up and resolve id_random values to their id
# Remove the unneeded *_id_random key from the dict
# This really needs to be simplified... Use a list of dicts instead. Can store as JSON in the DB.
def lookup_id_random_pop(obj_data:dict):
#log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
@@ -769,14 +770,66 @@ def lookup_id_random_pop(obj_data:dict):
obj_data['event_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_id_random', None), table_name='event')
obj_data.pop('event_id_random')
if 'event_abstract_id_random' in obj_data:
obj_data['event_abstract_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_abstract_id_random', None), table_name='event_abstract')
obj_data.pop('event_abstract_id_random')
if 'event_badge_id_random' in obj_data:
obj_data['event_badge_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_badge_id_random', None), table_name='event_badge')
obj_data.pop('event_badge_id_random')
if 'event_exhibit_id_random' in obj_data:
obj_data['event_exhibit_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_exhibit_id_random', None), table_name='event_exhibit')
obj_data.pop('event_exhibit_id_random')
if 'event_file_id_random' in obj_data:
obj_data['event_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_file_id_random', None), table_name='event_file')
obj_data.pop('event_file_id_random')
if 'event_location_id_random' in obj_data:
obj_data['event_location_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_location_id_random', None), table_name='event_location')
obj_data.pop('event_location_id_random')
if 'event_person_id_random' in obj_data:
obj_data['event_person_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_person_id_random', None), table_name='event_person')
obj_data.pop('event_person_id_random')
if 'event_presentation_id_random' in obj_data:
obj_data['event_presentation_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_presentation_id_random', None), table_name='event_presentation')
obj_data.pop('event_presentation_id_random')
if 'event_presenter_id_random' in obj_data:
obj_data['event_presenter_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_presenter_id_random', None), table_name='event_presenter')
obj_data.pop('event_presenter_id_random')
if 'event_registration_id_random' in obj_data:
obj_data['event_registration_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_registration_id_random', None), table_name='event_registration')
obj_data.pop('event_registration_id_random')
if 'event_session_id_random' in obj_data:
obj_data['event_session_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_session_id_random', None), table_name='event_session')
obj_data.pop('event_session_id_random')
if 'event_track_id_random' in obj_data:
obj_data['event_track_id'] = redis_lookup_id_random(record_id_random=obj_data.get('event_track_id_random', None), table_name='event_track')
obj_data.pop('event_track_id_random')
if 'hosted_file_id_random' in obj_data:
obj_data['hosted_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('hosted_file_id_random', None), table_name='hosted_file')
obj_data.pop('hosted_file_id_random')
if 'journal_file_id_random' in obj_data:
obj_data['journal_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('journal_file_id_random', None), table_name='journal_file')
obj_data.pop('journal_file_id_random')
if 'journal_entry_file_id_random' in obj_data:
obj_data['journal_entry_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('journal_entry_file_id_random', None), table_name='journal_entry_file')
obj_data.pop('journal_entry_file_id_random')
if 'membership_entry_file_id_random' in obj_data:
obj_data['membership_entry_file_id'] = redis_lookup_id_random(record_id_random=obj_data.get('membership_entry_file_id_random', None), table_name='membership_entry_file')
obj_data.pop('membership_entry_file_id_random')
if 'order_id_random' in obj_data:
obj_data['order_id'] = redis_lookup_id_random(record_id_random=obj_data.get('order_id_random', None), table_name='order')
obj_data.pop('order_id_random')
@@ -797,10 +850,22 @@ def lookup_id_random_pop(obj_data:dict):
obj_data['organization_id'] = redis_lookup_id_random(record_id_random=obj_data.get('organization_id_random', None), table_name='organization')
obj_data.pop('organization_id_random')
if 'page_id_random' in obj_data:
obj_data['page_id'] = redis_lookup_id_random(record_id_random=obj_data['page_id_random'], table_name='page')
obj_data.pop('page_id_random')
if 'person_id_random' in obj_data:
obj_data['person_id'] = redis_lookup_id_random(record_id_random=obj_data['person_id_random'], table_name='person')
obj_data.pop('person_id_random')
if 'poc_event_person_id_random' in obj_data:
obj_data['poc_event_person_id'] = redis_lookup_id_random(record_id_random=obj_data['poc_event_person_id_random'], table_name='event_person')
obj_data.pop('poc_event_person_id_random')
if 'poc_person_id_random' in obj_data:
obj_data['poc_person_id'] = redis_lookup_id_random(record_id_random=obj_data['poc_person_id_random'], table_name='person')
obj_data.pop('poc_person_id_random')
if 'post_id_random' in obj_data:
obj_data['post_id'] = redis_lookup_id_random(record_id_random=obj_data.get('post_id_random', None), table_name='post')
obj_data.pop('post_id_random')
@@ -809,6 +874,10 @@ def lookup_id_random_pop(obj_data:dict):
obj_data['product_id'] = redis_lookup_id_random(record_id_random=obj_data['product_id_random'], table_name='product')
obj_data.pop('product_id_random')
if 'site_id_random' in obj_data:
obj_data['site_id'] = redis_lookup_id_random(record_id_random=obj_data['site_id_random'], table_name='site')
obj_data.pop('site_id_random')
if 'user_id_random' in obj_data:
obj_data['user_id'] = redis_lookup_id_random(record_id_random=obj_data['user_id_random'], table_name='user')
obj_data.pop('user_id_random')

View File

@@ -7,8 +7,8 @@ from fastapi import APIRouter, Depends, Header, HTTPException, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from .log import *
from .db_sql import sql_select
from app.log import *
from app.db_sql import sql_select
# ### BEGIN ### API Lib General ### async get_token_header() ###

View File

@@ -14,13 +14,13 @@ from sqlalchemy import create_engine, text
from sqlalchemy.exc import IntegrityError, OperationalError
from . import config
from .lib_general import *
from .log import *
from app.lib_general import *
from app.log import log
# Import the routers here first:
from .routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_person, event_person_detail, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, lookup, membership, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals
from app.routers import api_crud, api, account, address, archive, archive_content, contact, event, event_exhibit, event_person, event_person_detail, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, lookup, membership, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets # , items, journals
from .db_sql import db
from app.db_sql import db
print('### **** *** ** * The Aether FastAPI API app is loading... * ** *** **** ###')
@@ -142,6 +142,14 @@ app.include_router(
#dependencies=[Depends(get_account_header)],
#responses={404: {'description': 'Not found'}},
)
app.include_router(
event_presenter.router,
prefix='/event/presenter',
tags=['Event Presenter'],
#dependencies=[DependPresenter(get_token_header)],
#dependencies=[Depends(get_account_header)],
#responses={404: {'description': 'Not found'}},
)
app.include_router(
event_registration.router,
prefix='/event/registration',

View File

@@ -11,10 +11,10 @@ from app.lib_general import log, logging
# from app.methods.event_badge_methods import load_event_badge_obj
# from app.methods.event_exhibit_methods import load_event_exhibit_obj
# from app.methods.event_file_methods import load_event_file_obj
from app.methods.event_presentation_methods import load_event_presentation_obj
from app.methods.event_presenter_methods import load_event_presenter_obj
# from app.methods.event_presentation_methods import load_event_presentation_obj
# from app.methods.event_presenter_methods import load_event_presenter_obj
# from app.methods.event_registration_methods import load_event_registration_obj
from app.methods.event_session_methods import load_event_session_obj
# from app.methods.event_session_methods import load_event_session_obj
# from app.methods.event_track_methods import load_event_track_obj
from app.methods.person_methods import load_person_obj
from app.methods.user_methods import load_user_obj

View File

@@ -8,6 +8,7 @@ from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_updat
from app.lib_general import log, logging
# from app.methods.event_file_methods import load_event_file_obj
from app.methods.event_person_methods import load_event_person_obj
# from app.methods.event_presenter_methods import load_event_presenter_obj
# from app.methods.person_methods import load_person_obj
# from app.methods.user_methods import load_user_obj
@@ -20,15 +21,18 @@ def load_event_presenter_obj(
event_presenter_id: int|str,
enabled: str = 'enabled', # enabled, disabled, all
limit: int = 1000,
inc_event_abstract_list: bool = False,
inc_event_badge: bool = False,
inc_event_device_list: bool = False,
inc_event_file_list: bool = False,
inc_event_person: bool = False,
inc_person: bool = False,
inc_user: bool = False,
inc_event_abstract_list: bool = False, # For event_presenter and using load_event_person_obj
inc_event_badge: bool = False, # Using load_event_person_obj
inc_event_device_list: bool = False, # For event_presenter and using load_event_person_obj
inc_event_file_list: bool = False, # For event_presenter and using load_event_person_obj
inc_event_person: bool = False, # Using load_event_person_obj
# inc_event_presentation: bool = False,
inc_event_registration: bool = False, # Using load_event_person_obj
# inc_event_session: bool = False,
inc_person: bool = False, # Using load_event_person_obj
inc_user: bool = False, # Using load_event_person_obj
) -> Event_Presenter_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if event_presenter_id := redis_lookup_id_random(record_id_random=event_presenter_id, table_name='event_presenter'): pass
@@ -48,10 +52,6 @@ def load_event_presenter_obj(
# event_presenter_obj = Event_Presenter_Base(**event_presenter_rec)
# log.debug(event_presenter_obj)
return False
# *** ** * Everything below needs to be reviewed * ** ***
#account_id = event_presenter_rec.get('account_id', None)
event_id = event_presenter_rec.get('event_id', None)
event_abstract_id = event_presenter_rec.get('event_abstract_id', None)
@@ -61,17 +61,21 @@ def load_event_presenter_obj(
person_id = event_presenter_rec.get('person_id', None)
user_id = event_presenter_rec.get('user_id', None)
#if inc_event: pass
# if inc_event: pass
if inc_event_abstract_list: pass
#if inc_event_badge_list: pass
if inc_event_device_list: pass
if inc_event_file_list: pass
if inc_event_person:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
if event_person_obj := load_event_person_obj(
event_person_id=event_person_id,
enabled=enabled
enabled=enabled,
inc_event_badge=inc_event_badge,
inc_event_registration=inc_event_registration,
inc_person=inc_person,
inc_user=inc_user,
):
log.debug(event_person_obj)
event_presenter_obj.event_person = event_person_obj
@@ -79,20 +83,21 @@ def load_event_presenter_obj(
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(event_person_obj)
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
if inc_person:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
if person_obj := load_person_obj(
person_id=person_id,
enabled=enabled
):
log.debug(person_obj)
presenter_obj.person = person_obj
else:
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(person_obj)
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
#if inc_user: pass
# if inc_person:
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# if person_obj := load_person_obj(
# person_id=person_id,
# enabled=enabled
# ):
# log.debug(person_obj)
# presenter_obj.person = person_obj
# else:
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.debug(person_obj)
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# if inc_user: pass
else:
return False

View File

@@ -35,7 +35,7 @@ def load_event_session_obj(
inc_event_registration_list: bool = False,
inc_event_track: bool = False,
inc_poc_event_person: bool = False,
inc_poc_person: bool = False,
# inc_poc_person: bool = False,
# inc_user: bool = False,
) -> Event_Session_Base|bool:
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL

View File

@@ -7,7 +7,7 @@ from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationEr
from app.db_sql import redis_lookup_id_random
from app.lib_general import *
from .common_field_schema import base_fields, default_num_bytes
from app.common_field_schema import base_fields, default_num_bytes
class Core_Object_Base(BaseModel):

View File

@@ -9,12 +9,13 @@ from app.lib_general import log, logging
from .common_field_schema import base_fields, default_num_bytes
#from .event_models import Event_Base
# from .event_models import Event_Base
from .event_abstract_models import Event_Abstract_Base
from .event_person_models import Event_Person_Base
from .event_presentation_models import Event_Presentation_Base
from .event_session_models import Event_Session_Base
from .person_models import Person_Base
# from .person_models import Person_Base
# from .user_models import User_Base
class Event_Presenter_Base(BaseModel):
@@ -94,17 +95,18 @@ class Event_Presenter_Base(BaseModel):
updated_on: Optional[datetime.datetime] = None
# Including other related objects
#event: Optional[Event_Base]
# event: Optional[Event_Base]
event_abstract: Optional[Event_Abstract_Base]
event_abstract_list: Optional[list] # Optional[Event_Abstract_Base] Is more than one abstract allowed per presenter?
#event_device_list: Optional[list] # Optional[Event_Device_Base]
# event_device_list: Optional[list] # Optional[Event_Device_Base]
event_file_list: Optional[list] # Optional[Event_File_Base]
#event_location: Optional[Event_Location_Base]
# event_location: Optional[Event_Location_Base]
event_person: Optional[Event_Person_Base]
event_presentation: Optional[Event_Presentation_Base]
event_session: Optional[Event_Session_Base]
#event_track: Optional[Event_Track_Base]
person: Optional[Person_Base]
# event_track: Optional[Event_Track_Base]
# person: Optional[Person_Base] # This is under event_person
# user: Optional[User_Base] # This is under event_person
_processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now)

View File

@@ -17,10 +17,17 @@ from app.models.archive_models import *
from app.models.archive_content_models import *
from app.models.contact_models import *
from app.models.event_models import *
from app.models.event_abstract_models import *
from app.models.event_badge_models import *
from app.models.event_exhibit_models import *
#from app.models.event_file_models import *
from app.models.event_location_models import *
from app.models.event_person_models import *
from app.models.event_presentation_models import *
from app.models.event_presenter_models import *
from app.models.event_registration_models import *
from app.models.event_session_models import *
from app.models.event_track_models import *
from app.models.journal_entry_models import *
from app.models.membership_models import *
from app.models.order_models import *
@@ -54,18 +61,19 @@ obj_type_li['archive_content'] = {'table_name': 'v_archive_content', 'base_name'
obj_type_li['contact'] = {'table_name': 'v_contact', 'base_name': Contact_Base}
#obj_type_li['cont_edu_cert'] = {'table_name': 'cont_edu_cert', 'base_name': Cont_Edu_Cert_Base}
obj_type_li['event'] = {'table_name': 'v_event', 'base_name': Event_Base}
#obj_type_li['event_badge'] = {'table_name': 'event_badge', 'base_name': Event_Badge_Base}
obj_type_li['event_badge'] = {'table_name': 'event_badge', 'base_name': Event_Badge_Base}
#obj_type_li['event_badge_log'] = {'table_name': 'event_badge_log', 'base_name': Event_Badge_Log_Base}
#obj_type_li['event_badge_template'] = {'table_name': 'event_badge_template', 'base_name': Event_Badge_Template_Base}
#obj_type_li['event_device'] = {'table_name': 'event_device', 'base_name': Event_Device_Base}
obj_type_li['event_exhibit'] = {'table_name': 'v_event_exhibit', 'base_name': Event_Exhibit_Base} # NOTE check view name: *_detail?
#obj_type_li['event_file'] = {'table_name': 'v_event_file', 'base_name': Event_File_Base} # Should this eventually be changed to event_hosted_file
obj_type_li['event_location'] = {'table_name': 'v_event_location', 'base_name': Event_Location_Base}
#obj_type_li['event_presentation'] = {'table_name': 'v_event_presentation', 'base_name': Event_Presentation_Base}
#obj_type_li['event_presenter'] = {'table_name': 'v_event_presenter', 'base_name': Event_Presenter_Base}
obj_type_li['event_person'] = {'table_name': 'v_event_person', 'base_name': Event_Person_Base}
obj_type_li['event_presentation'] = {'table_name': 'v_event_presentation', 'base_name': Event_Presentation_Base}
obj_type_li['event_presenter'] = {'table_name': 'v_event_presenter', 'base_name': Event_Presenter_Base}
obj_type_li['event_registration'] = {'table_name': 'v_event_registration', 'base_name': Event_Registration_Base}
#obj_type_li['event_session'] = {'table_name': 'v_event_session', 'base_name': Event_Session_Base}
#obj_type_li['event_track'] = {'table_name': 'v_event_track', 'base_name': Event_Track_Base}
obj_type_li['event_session'] = {'table_name': 'v_event_session', 'base_name': Event_Session_Base}
obj_type_li['event_track'] = {'table_name': 'v_event_track', 'base_name': Event_Track_Base}
#obj_type_li['hosted_file'] = {'table_name': 'hosted_file', 'base_name': Hosted_File_Base}
#obj_type_li['hosted_file_link'] = {'table_name': 'hosted_file_link', 'base_name': Hosted_File_Link_Base}
#obj_type_li['journal'] = {'table_name': 'v_journal', 'base_name': Journal_Base}

View File

@@ -5,11 +5,11 @@ from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
# from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
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_methods import load_event_obj

View File

@@ -24,6 +24,11 @@ from app.models.user_models import User_New_Base, User_Base
router = APIRouter()
# ### BEGIN ### API Event Person Route ### post_event_person_new() ###
# Initialize/create a new event person
# Create a person record (with a contact record and an address for the contact record)
# Create a user record
# Create an event_person record with the new person and user IDs
@router.post('/new', response_model=Resp_Body_Base)
async def post_event_person_new(
event_person_new_init: Event_Person_New_Base,
@@ -97,8 +102,6 @@ async def post_event_person_new(
log.debug('A new person was not created')
return mk_resp(data=False)
#return mk_resp(data=person_obj)
# New user
user_new = {}
user_new['account_id_random'] = account_id_random
@@ -124,8 +127,6 @@ async def post_event_person_new(
log.debug('A new user was not created')
return mk_resp(data=False)
#return mk_resp(data=user_obj)
# New event person
event_person_new = {}
event_person_new['account_id_random'] = account_id_random
@@ -158,12 +159,15 @@ async def post_event_person_new(
event_person_obj.user = user_obj
log.debug(event_person_obj)
event_person_dict = event_person_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
pass
else:
log.debug('A new event_person was not created')
return mk_resp(data=False)
log.debug(event_person_obj)
return mk_resp(data=event_person_obj)
return mk_resp(data=event_person_dict)
#return mk_resp(data=event_person_obj)
# ### BEGIN ### API Event Person Route ### post_event_person_new() ###
# ### BEGIN ### API Event Person ### get_event_person_obj() ###

View File

@@ -9,7 +9,7 @@ from app.lib_general import log, logging
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.event_person_detail_models import Event_Person_Detail_Base
from app.models.response_models import *

View File

@@ -0,0 +1,261 @@
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 .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.event_presenter_methods import load_event_presenter_obj
from app.models.event_presenter_models import Event_Presenter_Base
from app.models.response_models import *
router = APIRouter()
@router.post('', response_model=Resp_Body_Base)
async def post_event_presenter_obj(
obj: Event_Presenter_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_presenter'
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_presenter_obj(
obj: Event_Presenter_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_presenter'
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('/list', response_model=Resp_Body_Base)
async def get_event_presenter_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
limit: int = 500,
inc_event_abstract_list: bool = False, # Part of event_presenter and under event_person obj
inc_event_badge: bool = False, # Under event_person obj
inc_event_device_list: bool = False, # Part of event_presenter and under event_person obj
inc_event_file_list: bool = False, # Part of event_presenter and under event_person obj
inc_event_person: bool = False,
inc_event_registration: bool = False, # Under event_person obj
inc_person: bool = False, # Under event_person obj
inc_user: bool = False, # Under event_person obj
x_account_id: str = Header(...),
by_alias: bool = True,
exclude_unset: bool = True,
):
log.setLevel(logging.DEBUG) # 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_presenter`.event_id = :event_id'
elif for_obj_type == 'event_location' and for_obj_id: # NOTE: This needs to be checked and probably changed
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_presenter`.event_location_id = :event_location_id'
elif for_obj_type == 'event_presentation' and for_obj_id:
data['event_presentation_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event_presentation')
sql_for_obj_type_id = f'`event_presenter`.event_presentation_id = :event_presentation_id'
elif for_obj_type == 'event_session' and for_obj_id:
data['event_session_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event_session')
sql_for_obj_type_id = f'`event_presenter`.event_session_id = :event_session_id'
elif for_obj_type == 'event_track' and for_obj_id: # NOTE: This needs to be checked and probably changed
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_presenter`.event_track_id = :event_track_id'
else:
sql_for_obj_type_id = ''
return mk_resp(data=False, status_code=400)
if enabled in ['enabled', 'disabled', 'all']:
if enabled == 'enabled':
data['enable'] = True
sql_enabled = f'AND `event_presenter`.enable = :enable'
elif enabled == 'disabled':
data['enable'] = False
sql_enabled = f'AND `event_presenter`.enable = :enable'
elif enabled == 'all':
sql_enabled = ''
else:
return mk_resp(data=False, status_code=400)
if limit:
data['limit'] = limit
sql_limit = f'LIMIT :limit'
else:
sql_limit = ''
sql = f"""
SELECT `event_presenter`.id AS 'event_presenter_id', `event_presenter`.id_random AS 'event_presenter_id_random'
FROM `event_presenter` AS `event_presenter`
WHERE {sql_for_obj_type_id}
{sql_enabled}
ORDER BY `event_presenter`.created_on DESC, `event_presenter`.updated_on DESC
{sql_limit};
"""
if event_presenter_li_result := sql_select(data=data, sql=sql, as_list=True):
log.debug(event_presenter_li_result)
event_presenter_li = []
for event_presenter in event_presenter_li_result:
event_presenter_id = event_presenter.get('event_presenter_id', None)
if event_presenter_obj := load_event_presenter_obj(
event_presenter_id=event_presenter_id,
enabled=enabled,
inc_event_abstract_list=inc_event_abstract_list,
inc_event_badge_list=inc_event_badge,
inc_event_device_list=inc_event_device_list,
inc_event_file_list=inc_event_file_list,
inc_event_person=inc_event_person,
#inc_event_presentation_list=inc_event_presentation_list,
#inc_event_presenter_list=inc_event_presenter_list,
inc_event_registration_list=inc_event_registration,
#inc_event_track=inc_event_track,
inc_person=inc_person,
inc_user=inc_user,
):
data = event_presenter_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
event_presenter_li.append(data)
return mk_resp(data=event_presenter_li)
else:
log.debug(event_presenter_li_result)
return mk_resp(data=False, status_code=404)
# @router.get('/{obj_id}', response_model=Resp_Body_Base)
# async def get_event_presenter_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,
# ):
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.debug(locals())
# obj_type = 'event_presenter'
# result = get_obj_template(
# obj_type=obj_type,
# obj_id=obj_id,
# by_alias=True,
# exclude_unset=True,
# )
# return result
# ### BEGIN ### API Event Presenter ### get_event_presenter_obj() ###
# Working well as of 2021-06-07. Using as a template for other routes.
@router.get('/{event_presenter_id}', response_model=Resp_Body_Base)
async def get_event_presenter_obj(
event_presenter_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, # Part of event_presenter and under event_person obj
inc_event_badge: bool = False, # Under event_person obj
inc_event_device_list: bool = False, # Part of event_presenter and under event_person obj
inc_event_file_list: bool = False, # Part of event_presenter and under event_person obj
inc_event_person: bool = False,
# inc_event_presentation: bool = False, # NOTE: Placehold for future?
# inc_event_presentation_list: bool = False, # NOTE: Placehold for future?
# inc_event_presenter_list: bool = False, # NOTE: Placehold for future?
inc_event_registration: bool = False, # Under event_person obj
# inc_event_session: bool = False, # NOTE: Placehold for future?
# inc_event_session_list: bool = False, # NOTE: Placehold for future?
inc_person: bool = False, # Under event_person obj
inc_user: bool = False, # Under event_person obj
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_presenter_id := redis_lookup_id_random(record_id_random=event_presenter_id, table_name='event_presenter'): pass
else:
return mk_resp(data=None, status_code=404)
if event_presenter_obj := load_event_presenter_obj(
event_presenter_id=event_presenter_id,
enabled=enabled,
limit=limit,
inc_event_abstract_list=inc_event_abstract_list,
inc_event_badge=inc_event_badge,
inc_event_device_list=inc_event_device_list,
inc_event_file_list=inc_event_file_list,
inc_event_person=inc_event_person,
# inc_event_presentation=inc_event_presentation,
inc_event_registration=inc_event_registration,
# inc_event_session=inc_event_session,
inc_person=inc_person,
inc_user=inc_user,
):
event_presenter_dict = event_presenter_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_presenter_dict)
#return mk_resp(data=event_presenter_obj)
# ### END ### API Event ### get_event_presenter_obj() ###
@router.delete('/{obj_id}', response_model=Resp_Body_Base)
async def delete_event_presenter_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_presenter'
result = delete_obj_template(
obj_type=obj_type,
obj_id=obj_id,
)
return result

View File

@@ -99,7 +99,7 @@ async def get_event_session_obj_li(
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 = None,
limit: int = 500,
inc_event_abstract_list: bool = False,
inc_event_badge_list: bool = False,
inc_event_device_list: bool = False,
@@ -111,8 +111,8 @@ async def get_event_session_obj_li(
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,
# inc_poc_person: bool = False,
# inc_user: bool = False,
x_account_id: str = Header(...),
by_alias: bool = True,
exclude_unset: bool = True,
@@ -197,8 +197,8 @@ async def get_event_session_obj_li(
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,
# 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)