From 112f6d4da4f948e4b1f4c1141e02dec8175135b6 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 26 Aug 2021 13:27:01 -0400 Subject: [PATCH] Working on stuff related to session proposals. --- app/methods/event_methods.py | 155 ++++++++++++++++----------- app/methods/event_session_methods.py | 84 +++++++++++++++ app/models/event_session_models.py | 5 + app/routers/event_session.py | 70 +++++++++++- app/routers/person.py | 2 +- 5 files changed, 252 insertions(+), 64 deletions(-) diff --git a/app/methods/event_methods.py b/app/methods/event_methods.py index 4b2cd3d..6f098c6 100644 --- a/app/methods/event_methods.py +++ b/app/methods/event_methods.py @@ -10,7 +10,7 @@ from app.lib_general import log, logging from app.methods.address_methods import load_address_obj from app.methods.contact_methods import load_contact_obj from app.methods.event_cfg_methods import load_event_cfg_obj -from app.methods.event_session_methods import load_event_session_obj +from app.methods.event_session_methods import get_event_session_rec_list, load_event_session_obj from app.methods.person_methods import create_person_obj_v3, load_person_obj, update_person_obj from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj @@ -173,71 +173,104 @@ def load_event_obj( if inc_event_session_list: log.info('Need to include event session list...') - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - data = {} - data['event_id'] = event_id - - if enabled in ['enabled', 'disabled', 'all']: - if enabled == 'enabled': - data['enable'] = True - sql_enabled = f'AND `event_session`.enable = :enable' - elif enabled == 'disabled': - data['enable'] = False - sql_enabled = f'AND `event_session`.enable = :enable' - elif enabled == 'all': - sql_enabled = '' + if event_session_rec_list_result := get_event_session_rec_list( + event_id = event_id, + review = 'all', # ready, not_ready, all + approved = 'all', # approve(d), not_approved, all + enabled = enabled, + 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_obj.event_session_list = event_session_result_list + elif isinstance(event_session_rec_list_result, list): + event_obj.event_session_list = [] else: - sql_enabled = f'AND `event_session`.enable = :enable' - # else: event_obj['event_session'] = None + event_obj.event_session_list = None - if limit: - data['limit'] = limit - sql_limit = f'LIMIT :limit' - else: - sql_limit = '' + # data = {} + # data['event_id'] = event_id - sql = f""" - SELECT `event_session`.id AS 'event_session_id', `event_session`.id_random AS 'event_session_id_random' - FROM `event_session` AS `event_session` - WHERE `event_session`.event_id = :event_id - {sql_enabled} - ORDER BY `event_session`.created_on DESC, `event_session`.updated_on DESC - {sql_limit}; - """ + # if enabled in ['enabled', 'disabled', 'all']: + # if enabled == 'enabled': + # data['enable'] = True + # sql_enabled = f'AND `event_session`.enable = :enable' + # elif enabled == 'disabled': + # data['enable'] = False + # sql_enabled = f'AND `event_session`.enable = :enable' + # elif enabled == 'all': + # sql_enabled = '' + # else: + # sql_enabled = f'AND `event_session`.enable = :enable' + # # else: event_obj['event_session'] = None - #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - if event_session_obj_li_result := sql_select(data=data, sql=sql, as_list=True): - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(event_session_obj_li_result) - event_session_obj_li = [] - for event_session_obj in event_session_obj_li_result: - event_session_id = event_session_obj.get('event_session_id', None) - if event_session_obj := load_event_session_obj( - event_session_id=event_session_id, - limit = limit, - enabled=enabled, - inc_event_abstract_list=inc_event_abstract_list, - inc_event_device_list=inc_event_device_list, - inc_event_file_list=inc_event_file_list, - inc_event_location=inc_event_location, - inc_event_person_list=inc_event_person_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_event_track=inc_event_track, - inc_person=inc_person, - inc_user=inc_user, - ): - data = event_session_obj.dict(by_alias=True, exclude_unset=True) - event_session_obj_li.append(data) - log.debug(event_session_obj_li) - #event_rec['event_session_list'] = event_session_obj_li - event_obj.event_session_list = event_session_obj_li - else: - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL - log.debug(event_session_obj_li_result) - #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # if limit: + # data['limit'] = limit + # sql_limit = f'LIMIT :limit' + # else: + # sql_limit = '' + + # sql = f""" + # SELECT `event_session`.id AS 'event_session_id', `event_session`.id_random AS 'event_session_id_random' + # FROM `event_session` AS `event_session` + # WHERE `event_session`.event_id = :event_id + # {sql_enabled} + # ORDER BY `event_session`.created_on DESC, `event_session`.updated_on DESC + # {sql_limit}; + # """ + + # #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # if event_session_obj_li_result := sql_select(data=data, sql=sql, as_list=True): + # #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.debug(event_session_obj_li_result) + # event_session_obj_li = [] + # for event_session_obj in event_session_obj_li_result: + # event_session_id = event_session_obj.get('event_session_id', None) + # if event_session_obj := load_event_session_obj( + # event_session_id=event_session_id, + # limit = limit, + # enabled=enabled, + # inc_event_abstract_list=inc_event_abstract_list, + # inc_event_device_list=inc_event_device_list, + # inc_event_file_list=inc_event_file_list, + # inc_event_location=inc_event_location, + # inc_event_person_list=inc_event_person_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_event_track=inc_event_track, + # inc_person=inc_person, + # inc_user=inc_user, + # ): + # data = event_session_obj.dict(by_alias=True, exclude_unset=True) + # event_session_obj_li.append(data) + # log.debug(event_session_obj_li) + # #event_rec['event_session_list'] = event_session_obj_li + # event_obj.event_session_list = event_session_obj_li + # else: + # #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.debug(event_session_obj_li_result) + # #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL if inc_event_track_list: pass diff --git a/app/methods/event_session_methods.py b/app/methods/event_session_methods.py index 2ff99f3..2ae9234 100644 --- a/app/methods/event_session_methods.py +++ b/app/methods/event_session_methods.py @@ -201,6 +201,90 @@ def load_event_session_obj( # ### END ### API Event Session Methods ### load_event_session_obj() ### +# ### BEGIN ### API Event Session Methods ### get_event_session_rec_list() ### +def get_event_session_rec_list( + event_id: str, + review: str = 'ready', # ready, not_ready, all + approved: str = 'approved', # approved, not_approved, all + enabled: str = 'enabled', # enabled, disabled, all + limit: int = 100, + ) -> list|bool: + log.setLevel(logging.DEBUG) # 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 False + + data = {} + data[f'event_id'] = event_id + + sql_where_event_id = f'`event_session`.event_id = :event_id' + + if review in ['ready', 'not_ready', 'all']: + if review == 'ready': + data['review'] = True + sql_review = f'AND `event_session`.review = :review' + elif review == 'not_ready': + data['review'] = False + sql_review = f'AND `event_session`.review = :review' + elif review == 'all': + sql_review = '' + + if approved in ['approved', 'not_approved', 'all']: + if approved == 'approved': + data['approve'] = True + sql_approved = f'AND `event_session`.approve = :approve' + elif approved == 'not_approved': + data['approve'] = False + sql_approved = f'AND `event_session`.approve = :approve' + elif approved == 'all': + sql_approved = '' + + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `event_session`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `event_session`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' + + sql = f""" + 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_review} + {sql_approved} + {sql_enabled} + ORDER BY `event_session`.created_on DESC, `event_session`.updated_on DESC + {sql_limit}; + """ + + if event_session_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + + event_session_rec_li = event_session_rec_li_result + else: + event_session_rec_li = [] + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_session_rec_li_result) + log.debug(type(event_session_rec_li)) + log.debug(len(event_session_rec_li)) + + return event_session_rec_li +# ### END ### API Event Session Methods ### get_event_session_rec_list() ### + + + + + # ### BEGIN ### API Event Session Methods ### create_update_event_session_obj_v4() ### diff --git a/app/models/event_session_models.py b/app/models/event_session_models.py index 74cc5e0..25f6e86 100644 --- a/app/models/event_session_models.py +++ b/app/models/event_session_models.py @@ -73,6 +73,11 @@ class Event_Session_Base(BaseModel): presentation_file_path: Optional[str] presentation_file_size: Optional[str] + status: Optional[int] + review: Optional[bool] + approve: Optional[bool] + ready: Optional[bool] + enable: Optional[bool] enable_from: Optional[datetime.datetime] = None enable_to: Optional[datetime.datetime] = None diff --git a/app/routers/event_session.py b/app/routers/event_session.py index 94b0bed..3e47cd4 100644 --- a/app/routers/event_session.py +++ b/app/routers/event_session.py @@ -9,7 +9,7 @@ from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, 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_session_methods import create_event_session_obj, create_update_event_session_obj_v4, load_event_session_obj, update_event_session_obj_v3 +from app.methods.event_session_methods import create_event_session_obj, create_update_event_session_obj_v4, load_event_session_obj, get_event_session_rec_list, update_event_session_obj_v3 from app.models.event_session_models import Event_Session_Base from app.models.response_models import * @@ -18,7 +18,6 @@ from app.models.response_models import * router = APIRouter() - # ### BEGIN ### API Event Session ### post_event_session_obj_new_v4() ### # Updated 2021-08-25 @router.post('/event/session/new_v4', response_model=Resp_Body_Base) @@ -530,6 +529,73 @@ async def get_event_session_obj( # ### END ### API Event ### get_event_session_obj() ### +# ### BEGIN ### API Event Session Methods ### get_event_event_session_obj_li() ### +# Updated 2021-08-26 +@router.get('/event/{event_id}/session/list', response_model=Resp_Body_Base) +async def get_event_event_session_obj_li( + event_id: str = Query(..., min_length=11, max_length=22), + enabled: str = 'enabled', # enabled, disabled, all + limit: int = 50, + # inc_address: bool = False, + # inc_contact: bool = False, + inc_event_file_list: bool = False, + inc_event_presentation_list: bool = False, + inc_event_presenter_cat: bool = False, + inc_event_presenter_list: bool = False, + inc_event_person: bool = False, # Intended for event_presenter + # inc_event_person_list: bool = False, + inc_person: bool = False, # Intended for event_presenter > event_person + inc_poc_event_person: bool = False, + review: str = 'ready', # ready, not_ready, all + approved: str = 'approved', # approved, not_approved, all + 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()) + + if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='person'): pass + else: return mk_resp(data=None, status_code=404) + + # Updated 2021-08-26 + if event_session_rec_list_result := get_event_session_rec_list( + event_id = event_id, + review = review, # ready, not_ready, all + approved = approved, # approve(d), not_approved, all + enabled = enabled, + 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) + response_data = event_session_result_list + elif isinstance(event_session_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) +# ### END ### API Event Session Methods ### get_event_event_session_obj_li() ### + + @router.delete('/event/session/{obj_id}', response_model=Resp_Body_Base) async def delete_event_session_obj( obj_id: str = Query(..., min_length=1, max_length=22), diff --git a/app/routers/person.py b/app/routers/person.py index 4a4dc7b..d96a00d 100644 --- a/app/routers/person.py +++ b/app/routers/person.py @@ -150,7 +150,7 @@ async def patch_person_obj_exist_v3( exclude_none: Optional[bool] = True, response: Response = Response, ): - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if person_id := redis_lookup_id_random(record_id_random=person_id, table_name='person'): pass