From f5f09f0516c72a32cfb170c3576f37540d772958 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Sun, 10 Oct 2021 01:21:59 -0400 Subject: [PATCH] Work on event launcher and related --- app/main.py | 7 +- app/methods/event_location_methods.py | 56 ++++++++++--- app/methods/event_session_methods.py | 19 +++-- app/routers/event_location.py | 114 ++++++++++++++++++++++++++ app/routers/hosted_file.py | 12 +-- 5 files changed, 184 insertions(+), 24 deletions(-) create mode 100644 app/routers/event_location.py diff --git a/app/main.py b/app/main.py index 182658b..6464a58 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from app.lib_general import log, logging from app.log import log # Import the routers here first: -from app.routers import api_crud, api, importing, account, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, event, event_badge, event_badge_template, event_exhibit, event_file, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_group_person, membership_person, membership_person_profile, membership_type, membership_type_person, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets#, e_impexium +from app.routers import api_crud, api, importing, account, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, event, event_badge, event_badge_template, event_exhibit, event_file, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_group_person, membership_person, membership_person_profile, membership_type, membership_type_person, order, order_cart, organization, page, person, post, post_comment, product, site, site_domain, user, user_person, websockets#, e_impexium from app.db_sql import db @@ -132,6 +132,11 @@ app.include_router( prefix='/event/file', tags=['Event File'], ) +app.include_router( + event_location.router, + # prefix='/event/location', + tags=['Event Location'], +) app.include_router( event_person.router, # prefix='/event/person', diff --git a/app/methods/event_location_methods.py b/app/methods/event_location_methods.py index b2f3238..d2c55ff 100644 --- a/app/methods/event_location_methods.py +++ b/app/methods/event_location_methods.py @@ -12,7 +12,6 @@ from app.lib_general import log, logging # 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_session_methods import load_event_session_obj # from app.methods.event_track_methods import load_event_track_obj from app.models.event_location_models import Event_Location_Base @@ -21,12 +20,13 @@ from app.models.event_location_models import Event_Location_Base # ### BEGIN ### API Event Location Methods ### load_event_location_obj() ### def load_event_location_obj( event_location_id: int|str, - enabled: str = 'enabled', # enabled, disabled, all inc_event_device_list: bool = False, inc_event_file_list: bool = False, inc_event_presentation_list: bool = False, inc_event_presenter_list: bool = False, inc_event_session_list: bool = False, + enabled: str = 'enabled', # enabled, disabled, all + hidden: str = 'hidden', # hidden, not_hidden, all limit: int = 1000, by_alias: bool = True, exclude_unset: bool = True, @@ -55,15 +55,6 @@ def load_event_location_obj( #account_id = event_location_rec.get('account_id', None) event_id = event_location_rec.get('event_id', None) - # if inc_event and event_id: - # if event_obj := load_event_obj( - # event_id=event_id, - # enabled=enabled, - # ): - # event_location_obj.event = event_obj.dict(by_alias=True, exclude_unset=True) - # else: - # event_location_obj.event = None - # if inc_event_device_list: pass # if inc_event_file_list: pass @@ -117,6 +108,47 @@ def load_event_location_obj( if inc_event_presenter_list: pass + # Updated 2021-10-09 + if inc_event_session_list: + log.info('Need to include event session list...') + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + from app.methods.event_session_methods import get_event_session_rec_list, load_event_session_obj + + if event_session_rec_list_result := get_event_session_rec_list( + event_location_id = event_location_id, + enabled = enabled, # enabled, disabled, all + approved = 'all', # approve(d), not_approved, all + hidden = hidden, # hidden, not_hidden, all + review = 'all', # ready, not_ready, all + limit = limit, + ): + event_session_result_list = [] + for event_session_rec in event_session_rec_list_result: + if load_event_session_result := load_event_session_obj( + event_session_id = event_session_rec.get('event_session_id', None), + enabled = enabled, + limit = limit, + # inc_event_file_list = inc_event_file_list, + # inc_event_presentation_list = inc_event_presentation_list, + # inc_event_presenter_cat = inc_event_presenter_cat, + # inc_event_presenter_list = inc_event_presenter_list, + # inc_person = inc_person, + # inc_poc_event_person = inc_poc_event_person, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + ): + event_session_result_list.append(load_event_session_result) + else: + event_session_result_list.append(None) + log.debug(event_session_result_list) + event_location_obj.event_session_list = event_session_result_list + elif isinstance(event_session_rec_list_result, list): + event_location_obj.event_session_list = [] + else: + event_location_obj.event_session_list = None + if model_as_dict: return event_location_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member else: @@ -129,7 +161,7 @@ def load_event_location_obj( def get_event_location_rec_list( event_id: str, enabled: str = 'enabled', # enabled, disabled, all - hidden: str = 'hidden', # hidden, not_hidden, all + hidden: str = 'not_hidden', # hidden, not_hidden, all limit: int = 100, ) -> list|bool: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL diff --git a/app/methods/event_session_methods.py b/app/methods/event_session_methods.py index b3f23f9..0b137df 100644 --- a/app/methods/event_session_methods.py +++ b/app/methods/event_session_methods.py @@ -270,7 +270,9 @@ def load_event_session_obj( # ### BEGIN ### API Event Session Methods ### get_event_session_rec_list() ### def get_event_session_rec_list( - event_id: str, + event_id: str = None, + event_location_id: str = None, + event_track_id: str = None, enabled: str = 'enabled', # enabled, disabled, all approved: str = 'all', # approved, not_approved, all hidden: str = 'not_hidden', # hidden, not_hidden, all @@ -281,12 +283,19 @@ def get_event_session_rec_list( log.debug(locals()) if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass - else: return False + # else: return False + + if event_location_id := redis_lookup_id_random(record_id_random=event_location_id, table_name='event_location'): pass + # else: return False data = {} - data[f'event_id'] = event_id - sql_where_event_id = f'`event_session`.event_id = :event_id' + if event_id: + data[f'event_id'] = event_id + sql_where_type_id = f'`event_session`.event_id = :event_id' + elif event_location_id: + data[f'event_location_id'] = event_location_id + sql_where_type_id = f'`event_session`.event_location_id = :event_location_id' if review in ['ready', 'not_ready', 'all']: if review == 'ready': @@ -338,7 +347,7 @@ def get_event_session_rec_list( SELECT `event_session`.id AS 'event_session_id', `event_session`.id_random AS 'event_session_id_random' FROM `event_session` AS `event_session` WHERE - {sql_where_event_id} + {sql_where_type_id} {sql_review} {sql_approved} {sql_hidden} diff --git a/app/routers/event_location.py b/app/routers/event_location.py new file mode 100644 index 0000000..dc9defe --- /dev/null +++ b/app/routers/event_location.py @@ -0,0 +1,114 @@ +import datetime +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 app.config import settings +from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, 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_location_methods import get_event_location_rec_list, load_event_location_obj + +from app.models.event_location_models import Event_Location_Base +from app.models.response_models import Resp_Body_Base, mk_resp + + +router = APIRouter() + + + + +# ### BEGIN ### API Event Location ### get_event_location_obj() ### +# Updated 2021-10-09 +@router.get('/event/location/{event_location_id}', response_model=Resp_Body_Base) +async def get_event_location_obj( + event_location_id: str = Query(..., min_length=11, max_length=22), + inc_event_file_list: bool = False, + inc_event_presentation_list: bool = False, + inc_event_presenter_list: bool = False, + inc_event_session_list: bool = False, + enabled: str = 'enabled', # enabled, disabled, all + hidden: str = 'not_hidden', # hidden, not_hidden, all + limit: int = 500, + 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_location_id := redis_lookup_id_random(record_id_random=event_location_id, table_name='event_location'): pass + else: return mk_resp(data=None, status_code=404, response=response) + + if event_location_obj := load_event_location_obj( + event_location_id = event_location_id, + inc_event_file_list = inc_event_file_list, + inc_event_presentation_list = inc_event_presentation_list, + inc_event_presenter_list = inc_event_presenter_list, + inc_event_session_list = inc_event_session_list, + enabled = enabled, + hidden = hidden, + limit = limit, + ): + event_location_dict = event_location_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) + pass + else: + return mk_resp(data=False, status_code=400, response=response) # Bad Request + + return mk_resp(data=event_location_dict, response=response) + #return mk_resp(data=event_location_obj) +# ### END ### API Event Location ### get_event_location_obj() ### + + + +# ### BEGIN ### API Event Location ### get_event_obj_event_location_list() ### +# Updated 2021-10-09 +@router.get('/event/{event_id}/event/location/list', response_model=Resp_Body_Base) +async def get_event_obj_event_location_list( + event_id: str = Query(..., min_length=11, max_length=22), + enabled: str = 'enabled', + hidden: str = 'not_hidden', + limit: int = 500, + x_account_id: str = Header(...), + by_alias: Optional[bool] = True, + exclude_unset: Optional[bool] = True, + response: Response = Response, + ): + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + 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) + + response_data = None + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + # Updated 2021-07-28 + if event_location_rec_list_result := get_event_location_rec_list( + event_id = event_id, + enabled = enabled, + hidden = hidden, + limit = limit, + ): + event_location_result_list = [] + for event_location_rec in event_location_rec_list_result: + if load_event_location_result := load_event_location_obj( + event_location_id = event_location_rec.get('event_location_id', None), + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + enabled = enabled, + ): + event_location_result_list.append(load_event_location_result) + else: + event_location_result_list.append(None) + response_data = event_location_result_list + else: + return mk_resp(data=False, status_code=400, response=response) # Bad Request + + return mk_resp(data=response_data, response=response) +# ### END ### API Event Location ### get_event_obj_event_location_list() ### diff --git a/app/routers/hosted_file.py b/app/routers/hosted_file.py index abd1c43..ff156e6 100644 --- a/app/routers/hosted_file.py +++ b/app/routers/hosted_file.py @@ -45,13 +45,13 @@ async def upload_files( account_id_random = account_id # This is for the account random str ID if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass else: - return mk_resp(data=None, status_code=400) + return mk_resp(data=None, status_code=400, response=response) link_to_type = link_to_type link_to_id_random = link_to_id # This is for the object random str ID if link_to_id := redis_lookup_id_random(record_id_random=link_to_id, table_name=link_to_type): pass else: - return mk_resp(data=None, status_code=400) + return mk_resp(data=None, status_code=400, response=response) hosted_file_list = [] for file_obj in file_list: @@ -145,7 +145,7 @@ async def upload_files( log.debug('The hosted_file_link was probably created fine though.') log.debug(hosted_file_list) - return mk_resp(data=hosted_file_list) + return mk_resp(data=hosted_file_list, response=response) # ### END ### API Hosted File Route ### upload_files() ### @@ -359,7 +359,7 @@ async def upload_files_fake( log.debug('The hosted_file_link was probably created fine though.') log.debug(hosted_file_list) - return mk_resp(data=hosted_file_list) + return mk_resp(data=hosted_file_list, response=response) # ### END ### API Hosted File Route ### upload_files_fake() ### @@ -407,7 +407,7 @@ async def get_hosted_file_obj( if hosted_file_id := redis_lookup_id_random(record_id_random=hosted_file_id, table_name='hosted_file'): pass else: - return mk_resp(data=None, status_code=404) + return mk_resp(data=None, status_code=404, response=response) if hosted_file_obj := load_hosted_file_obj( hosted_file_id = hosted_file_id, @@ -418,6 +418,6 @@ async def get_hosted_file_obj( else: return mk_resp(data=False, status_code=400, response=response) # Bad Request - return mk_resp(data=hosted_file_dict) + return mk_resp(data=hosted_file_dict, response=response) #return mk_resp(data=hosted_file_obj) # ### END ### API Hosted File ### get_hosted_file_obj() ###