From be788fc5e67565beb75d76f79a9ed45a562f3304 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 29 Sep 2021 14:18:34 -0400 Subject: [PATCH] Code clean up. Better debugging. Work on event session, presentation, and presenter. --- app/db_sql.py | 39 ++++--- app/lib_general.py | 9 +- app/log.py | 19 ++++ app/methods/event_location_methods.py | 93 +++++++++++++++-- app/methods/event_methods.py | 121 +++++++++------------- app/methods/event_presentation_methods.py | 19 ++-- app/methods/event_presenter_methods.py | 20 +++- app/methods/event_session_methods.py | 32 +++--- app/models/event_session_models.py | 2 + app/routers/event.py | 58 ++++++----- 10 files changed, 253 insertions(+), 159 deletions(-) diff --git a/app/db_sql.py b/app/db_sql.py index 01971b6..0ea5a0b 100644 --- a/app/db_sql.py +++ b/app/db_sql.py @@ -3,7 +3,7 @@ import datetime, pytz, redis, secrets from timeit import default_timer as timer from app.config import settings -from app.log import log, logging +from app.log import log, logging, logger_reset from sqlalchemy import create_engine, text, Time from sqlalchemy.exc import IntegrityError, OperationalError @@ -26,6 +26,7 @@ db = engine.connect() # ### BEGIN ### Core Help CRUD ### sql_insert() ### # Updated 2021-09-07 +@logger_reset def sql_insert( sql: str|None = None, data: dict|None = None, @@ -33,7 +34,7 @@ def sql_insert( rm_id_random: bool = False, id_random_length: int = 8, ): - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if sql: @@ -157,6 +158,7 @@ def sql_insert( # ### BEGIN ### Core Help CRUD ### sql_update() ### # Updated 2021-09-07 +@logger_reset def sql_update( sql: str|None = None, data: dict|None = None, @@ -166,7 +168,7 @@ def sql_update( rm_id_random: bool = False, id_random_length: None|int = None ): - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if sql: @@ -290,6 +292,7 @@ def sql_update( # The catch all SQL INSERT or UPDATE function - STI 2021-02-17 # This one does it all for SQL INSERT and UPDATE queries # Updated 2021-09-07 +@logger_reset def sql_insert_or_update( sql: str|None = None, data: dict|None = None, @@ -297,7 +300,7 @@ def sql_insert_or_update( rm_id_random: bool = False, id_random_length: int|None = None, ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) #if sql: pass @@ -426,6 +429,7 @@ def sql_insert_or_update( # The catch all SQL SELECT function - STI 2021-02-17 # This one does it all for SQL SELECT queries # Updated 2021-09-07 +@logger_reset def sql_select( table_name: str|None = None, record_id: int|None = None, @@ -439,7 +443,6 @@ def sql_select( as_list: bool|None = False, max_count: int = 100000, ): - current_log_level = log.level log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -625,13 +628,11 @@ def sql_select( #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(record_li) - log.setLevel(current_log_level) # Reset log level; should be decorator return record_li # Successful else: #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(record) - log.setLevel(current_log_level) # Reset log level; should be decorator return record # Successful elif result.rowcount > 1: log.info(f'Found {result.rowcount} records. as_dict={as_dict}, as_list={as_list}') @@ -651,13 +652,11 @@ def sql_select( record_li = result.fetchall() log.debug(record_li) - log.setLevel(current_log_level) # Reset log level; should be decorator return record_li # Successful else: log.info('No records found. Returning None.') log.debug(result) - log.setLevel(current_log_level) # Reset log level; should be decorator return None # Successful # ### END ### Core Help CRUD ### sql_select() ### @@ -666,6 +665,7 @@ def sql_select( # The catch all SQL DELETE function - STI 2021-02-17 # This one does it all for SQL DELETE queries # Updated 2021-09-07 +@logger_reset def sql_delete( table_name: str|None = None, record_id: int|None = None, @@ -675,7 +675,7 @@ def sql_delete( sql: str|None = None, data: dict|None = None ): - # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if table_name and (record_id or record_id_random) and not (field_name or field_value or sql or data): @@ -822,11 +822,11 @@ def sql_delete( # If success then return the ID number # If not success and there is a table_name then check the database table passed # If found in database table then store in Redis and return the ID number +@logger_reset def redis_lookup_id_random( record_id_random: int|str, table_name: str, ): - current_log_level = log.level log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -834,7 +834,6 @@ def redis_lookup_id_random( elif isinstance(record_id_random, int): return record_id_random else: log.info(f'Unexpected data type or string format: {str(type(record_id_random))} Expected type is a string 11 or 22 characters long.') - log.setLevel(current_log_level) # Reset log level; should be decorator return False if record_id_random and table_name: @@ -867,7 +866,7 @@ def redis_lookup_id_random( if record_id: log.info('The record ID was found using the record_id_random value.') log.info(f'TTL for: {key_name} : {str(record_id)} is {str(r.ttl(key_name))} seconds') - log.setLevel(current_log_level) # Reset log level; should be decorator + return int(record_id) elif table_name: data = { 'id_random': record_id_random } @@ -878,30 +877,25 @@ def redis_lookup_id_random( """ if select_results := sql_select(sql=sql, data=data): - #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(select_results) log.debug(type(select_results)) if isinstance(select_results, dict): log.info(f"""Record ID random found: {str(select_results['id'])}""") if record_id := select_results.get('id'): r.setex(key_name, datetime.timedelta(minutes=90), value=record_id) - log.setLevel(current_log_level) # Reset log level; should be decorator + return int(record_id) else: - # log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.error('The SQL result was not what was expected.') return False else: - # log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.error('More than one record may have been found. There may be a duplicate id_random.') log.error(select_results) return False else: - #log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.info('Record ID random was not found') return None - # log.setLevel(logging.ERROR) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.error('We should not be here. Something unexpected happened.') return False # Just in case # ### END ### API DB SQL ### redis_lookup_id_random() ### @@ -910,11 +904,12 @@ def redis_lookup_id_random( # ### BEGIN ### API DB SQL ### get_id_random() ### # Changed name from lookup_id_random() to get_id_random() # Updated 2021-08-23 +@logger_reset def get_id_random( record_id: int, table_name: str ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) data = { 'id': record_id } @@ -952,10 +947,11 @@ def get_id_random( # 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. +@logger_reset def lookup_id_random_pop( obj_data: dict ): - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if 'account_id_random' in obj_data: @@ -1182,6 +1178,7 @@ def lookup_id_random_pop( # ### BEGIN ### API DB SQL Methods ### get_account_id_w_for_type_id() ### # Updated 2021-08-24 +@logger_reset def get_account_id_w_for_type_id( for_type: str, for_id: int|str, diff --git a/app/lib_general.py b/app/lib_general.py index 2409841..64fd8c9 100644 --- a/app/lib_general.py +++ b/app/lib_general.py @@ -2,12 +2,11 @@ from __future__ import annotations import datetime, jwt, pytz, redis, time from passlib.hash import argon2 -#from datetime import datetime, time, timedelta from fastapi import APIRouter, Depends, Header, HTTPException, Response, status from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union -from app.log import log, logging +from app.log import log, logging, logger_reset from app.db_sql import redis_lookup_id_random, sql_select @@ -57,7 +56,9 @@ def verify_secure_hash_string(string:str, string_hash:str): return False +# ### BEGIN ### API Lib General ### sign_jwt() ### # Updated 2021-07-14 +@logger_reset def sign_jwt( secret_key: str, # Secret/Private/Password public_key: str, # Will be part of the token. Use to look up secret when verifying. @@ -86,9 +87,12 @@ def sign_jwt( log.debug(token) return token +# ### END ### API Lib General ### sign_jwt() ### +# ### BEGIN ### API Lib General ### decode_jwt() ### # Updated 2021-07-14 +@logger_reset def decode_jwt( secret_key: str, token: str, @@ -106,3 +110,4 @@ def decode_jwt( else: return False except: return None +# ### END ### API Lib General ### decode_jwt() ### diff --git a/app/log.py b/app/log.py index 4b1f79a..87173b0 100644 --- a/app/log.py +++ b/app/log.py @@ -6,3 +6,22 @@ log.setLevel(logging.ERROR) # DEBUG > INFO > WARNING > ERROR > CRITICAL logging.basicConfig( format='[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s' ) + + +# ### BEGIN ### Log ### logger_reset() ### +# Updated 2021-09-29 +def logger_reset(func): + # log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.debug(locals()) + + def wrapper(*args, **kwargs): + log.info(f'Saving logger level... Log level: {log.level}') + init_log_level = log.level + func(*args, **kwargs) + log.info(f'Resetting logger level... Log level: {log.level}') + log.setLevel(init_log_level) + log.info(f'Reset logger level. Log level: {log.level}') + return func(*args, **kwargs) + + return wrapper +# ### END ### Log ### logger_reset() ### \ No newline at end of file diff --git a/app/methods/event_location_methods.py b/app/methods/event_location_methods.py index c6c2b9b..b2f3238 100644 --- a/app/methods/event_location_methods.py +++ b/app/methods/event_location_methods.py @@ -22,11 +22,15 @@ from app.models.event_location_models import Event_Location_Base def load_event_location_obj( event_location_id: int|str, enabled: str = 'enabled', # enabled, disabled, all - limit: int = 1000, 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, + limit: int = 1000, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, ) -> Event_Location_Base|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -35,22 +39,19 @@ def load_event_location_obj( else: return False if event_location_rec := sql_select(table_name='v_event_location', record_id=event_location_id): pass - else: - return False + else: return False - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(event_location_rec) try: + log.info('Try to apply event location record data to Event_Location_Base...') event_location_obj = Event_Location_Base(**event_location_rec) log.debug(event_location_obj) except ValidationError as e: log.error(e.json()) return False - # event_location_obj = Event_Location_Base(**event_location_rec) - # log.debug(event_location_obj) - #account_id = event_location_rec.get('account_id', None) event_id = event_location_rec.get('event_id', None) @@ -116,4 +117,80 @@ def load_event_location_obj( if inc_event_presenter_list: pass - return event_location_obj \ No newline at end of file + if model_as_dict: + return event_location_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member + else: + return event_location_obj + + return event_location_obj + + +# ### BEGIN ### API Event Location Methods ### get_event_location_rec_list() ### +def get_event_location_rec_list( + event_id: str, + enabled: str = 'enabled', # enabled, disabled, all + hidden: str = 'hidden', # hidden, not_hidden, 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['event_id'] = event_id + + if event_id: + sql_where_event_id = f'`event_location`.event_id = :event_id' + else: sql_where_event_id = '' + + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `event_location`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `event_location`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + + if hidden in ['hidden', 'not_hidden', 'all']: + if hidden == 'hidden': + data['hide'] = True + sql_hidden = f'AND `event_location`.hide = :hide' + elif hidden == 'not_hidden': + data['hide'] = False + sql_hidden = f'AND `event_location`.hide = :hide' + elif hidden == 'all': + sql_hidden = '' + + if limit: + data['limit'] = limit + sql_limit = f'LIMIT :limit' + else: + sql_limit = '' + + sql = f""" + SELECT `event_location`.id AS 'event_location_id', `event_location`.id_random AS 'event_location_id_random' + FROM `event_location` AS `event_location` + WHERE + {sql_where_event_id} + {sql_enabled} + {sql_hidden} + ORDER BY `event_location`.created_on DESC, `event_location`.updated_on DESC + {sql_limit}; + """ + + if event_location_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + + event_location_rec_li = event_location_rec_li_result + else: + event_location_rec_li = [] + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_location_rec_li_result) + log.debug(type(event_location_rec_li)) + log.debug(len(event_location_rec_li)) + + return event_location_rec_li +# ### END ### API Event Location Methods ### get_event_location_rec_list() ### diff --git a/app/methods/event_methods.py b/app/methods/event_methods.py index bb6c1b0..aa69ac2 100644 --- a/app/methods/event_methods.py +++ b/app/methods/event_methods.py @@ -10,6 +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 create_update_event_cfg_obj_v4, load_event_cfg_obj +from app.methods.event_location_methods import get_event_location_rec_list, load_event_location_obj from app.methods.event_session_methods import get_event_session_rec_list, load_event_session_obj from app.methods.person_methods import create_update_person_obj_v4b, load_person_obj from app.methods.user_methods import create_user_obj, load_user_obj, update_user_obj @@ -22,11 +23,10 @@ from app.models.event_cfg_models import Event_Cfg_Base # ### BEGIN ### API Event Methods ### load_event_obj() ### def load_event_obj( event_id: int|str, - limit: int = 1000, - by_alias: bool = True, - exclude_unset: bool = True, - model_as_dict: bool = False, enabled: str = 'enabled', # enabled, disabled, all + approved: str = 'all', # approved, not_approved, all + hidden: str = 'not_hidden', # hidden, not_hidden, all + review: str = 'all', # ready, not_ready, all inc_address: bool = False, # Loads address_location and under contact(s) # inc_address_location: bool = False, inc_contact: bool = False, # Loads all 3 contacts @@ -57,8 +57,12 @@ def load_event_obj( inc_product: bool = False, inc_product_list: bool = False, inc_user: bool = False, + limit: int = 1000, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, ) -> Event_Base|bool: - #log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + 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 @@ -165,22 +169,59 @@ def load_event_obj( if inc_event_device_list: pass if inc_event_exhibit_list: pass if inc_event_file_list: pass - if inc_event_location_list: pass + + # Updated 2021-09-29 + if inc_event_location_list: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.info('Need to include event location list...') + + if event_location_rec_list_result := get_event_location_rec_list( + event_id = event_id, + enabled = enabled, # enabled, disabled, all + hidden = 'all', # hidden, not_hidden, all + 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), + enabled = enabled, + 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, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, + ): + event_location_result_list.append(load_event_location_result) + else: + event_location_result_list.append(None) + log.debug(event_location_result_list) + event_obj.event_location_list = event_location_result_list + elif isinstance(event_location_rec_list_result, list): + event_obj.event_location_list = [] + else: + event_obj.event_location_list = None + if inc_event_person_list: pass if inc_event_presentation_list: pass if inc_event_presenter_list: pass # if inc_event_registration_cfg: pass if inc_event_registration_list: pass + # Updated 2021-09-28 if inc_event_session_list: log.info('Need to include event session list...') log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL if event_session_rec_list_result := get_event_session_rec_list( event_id = event_id, - review = 'all', # ready, not_ready, all + enabled = enabled, # enabled, disabled, all approved = 'all', # approve(d), not_approved, all - enabled = enabled, + hidden = 'not_hidden', # hidden, not_hidden, all + review = 'all', # ready, not_ready, all limit = limit, ): event_session_result_list = [] @@ -209,70 +250,6 @@ def load_event_obj( else: event_obj.event_session_list = None - # 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 = '' - # else: - # sql_enabled = f'AND `event_session`.enable = :enable' - # # else: event_obj['event_session'] = None - - # 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 if inc_poc_event_person: diff --git a/app/methods/event_presentation_methods.py b/app/methods/event_presentation_methods.py index 56365ba..4db107d 100644 --- a/app/methods/event_presentation_methods.py +++ b/app/methods/event_presentation_methods.py @@ -25,10 +25,6 @@ def load_event_presentation_obj( enabled: str = 'enabled', # enabled, disabled, all hidden: str = 'not_hidden', # hidden, not_hidden, all inc_file_count: bool = False, # NOTE: file counts are from separate views - limit: int = 1000, - by_alias: bool = True, - exclude_unset: bool = True, - model_as_dict: bool = False, event_file_file_purpose_id: int = None, event_file_file_purpose: str = None, event_file_priority: bool = None, @@ -49,6 +45,10 @@ def load_event_presentation_obj( inc_event_session: bool = False, inc_person: bool = False, inc_user: bool = False, + limit: int = 1000, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, ) -> Event_Presentation_Base|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -75,9 +75,6 @@ def load_event_presentation_obj( log.error(e.json()) return False - # event_presentation_obj = Event_Presentation_Base(**event_presentation_rec) - # log.debug(event_presentation_obj) - # account_id = event_presentation_rec.get('account_id', None) event_id = event_presentation_rec.get('event_id', None) event_abstract_id = event_presentation_rec.get('event_abstract_id', None) @@ -99,11 +96,11 @@ def load_event_presentation_obj( if hidden in ['hidden', 'not_hidden', 'all']: if hidden == 'hidden': - data['hidden'] = True - sql_hidden = f'AND `event_presenter`.hidden = :hidden' + data['hide'] = True + sql_hidden = f'AND `event_presenter`.hide = :hide' elif hidden == 'not_hidden': - data['hidden'] = False - sql_hidden = f'AND `event_presenter`.hidden = :hidden' + data['hide'] = False + sql_hidden = f'AND `event_presenter`.hide = :hide' elif hidden == 'all': sql_hidden = '' diff --git a/app/methods/event_presenter_methods.py b/app/methods/event_presenter_methods.py index 0ba0b85..db62b3c 100644 --- a/app/methods/event_presenter_methods.py +++ b/app/methods/event_presenter_methods.py @@ -21,10 +21,6 @@ def load_event_presenter_obj( enabled: str = 'enabled', # enabled, disabled, all hidden: str = 'not_hidden', # hidden, not_hidden, all inc_file_count: bool = False, # NOTE: file counts are from separate views - limit: int = 1000, - by_alias: bool = True, - exclude_unset: bool = True, - model_as_dict: bool = False, event_file_file_purpose_id: int = None, event_file_file_purpose: str = None, event_file_priority: bool = None, @@ -43,6 +39,10 @@ def load_event_presenter_obj( inc_event_session: bool = False, inc_person: bool = False, # Using load_event_person_obj inc_user: bool = False, # Using load_event_person_obj + limit: int = 1000, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, ) -> Event_Presenter_Base|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -191,6 +191,7 @@ def load_event_presenter_obj( def get_event_presenter_rec_list( event_person_id: str = None, event_presentation_id: str = None, + hidden: str = 'not_hidden', # hidden, not_hidden, all enabled: str = 'enabled', # enabled, disabled, all limit: int = 100, ) -> list|bool: @@ -211,6 +212,16 @@ def get_event_presenter_rec_list( sql_where_event_presentation_id = f'`event_presenter`.event_presentation_id = :event_presentation_id' else: sql_where_event_presentation_id = '' + if hidden in ['hidden', 'not_hidden', 'all']: + if hidden == 'hidden': + data['hide'] = True + sql_hidden = f'AND `event_presenter`.hide = :hide' + elif hidden == 'not_hidden': + data['hide'] = False + sql_hidden = f'AND `event_presenter`.hide = :hide' + elif hidden == 'all': + sql_hidden = '' + if enabled in ['enabled', 'disabled', 'all']: if enabled == 'enabled': data['enable'] = True @@ -233,6 +244,7 @@ def get_event_presenter_rec_list( WHERE {sql_where_event_person_id} {sql_where_event_presentation_id} + {sql_hidden} {sql_enabled} ORDER BY `event_presenter`.created_on DESC, `event_presenter`.updated_on DESC {sql_limit}; diff --git a/app/methods/event_session_methods.py b/app/methods/event_session_methods.py index 4137d10..b3f23f9 100644 --- a/app/methods/event_session_methods.py +++ b/app/methods/event_session_methods.py @@ -22,10 +22,6 @@ from app.models.event_session_models import Event_Session_Base # ### BEGIN ### API Event Session Methods ### load_event_session_obj() ### def load_event_session_obj( event_session_id: int|str, - limit: int = 1000, - by_alias: bool = True, - exclude_unset: bool = True, - model_as_dict: bool = False, enabled: str = 'enabled', # enabled, disabled, all hidden: str = 'not_hidden', # hidden, not_hidden, all inc_file_count: bool = False, # NOTE: file counts are from separate views @@ -52,6 +48,10 @@ def load_event_session_obj( inc_poc_event_person: bool = False, inc_person: bool = False, inc_user: bool = False, + limit: int = 1000, + by_alias: bool = True, + exclude_unset: bool = True, + model_as_dict: bool = False, ) -> Event_Session_Base|bool: log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) @@ -159,11 +159,11 @@ def load_event_session_obj( if hidden in ['hidden', 'not_hidden', 'all']: if hidden == 'hidden': - data['hidden'] = True - sql_hidden = f'AND `event_presentation`.hidden = :hidden' + data['hide'] = True + sql_hidden = f'AND `event_presentation`.hide = :hide' elif hidden == 'not_hidden': - data['hidden'] = False - sql_hidden = f'AND `event_presentation`.hidden = :hidden' + data['hide'] = False + sql_hidden = f'AND `event_presentation`.hide = :hide' elif hidden == 'all': sql_hidden = '' @@ -271,10 +271,10 @@ def 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 - hidden: str = 'hidden', # hidden, not_hidden, all enabled: str = 'enabled', # enabled, disabled, all + approved: str = 'all', # approved, not_approved, all + hidden: str = 'not_hidden', # hidden, not_hidden, all + review: str = 'all', # ready, not_ready, all limit: int = 100, ) -> list|bool: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -310,11 +310,11 @@ def get_event_session_rec_list( if hidden in ['hidden', 'not_hidden', 'all']: if hidden == 'hidden': - data['hidden'] = True - sql_hidden = f'AND `event_session`.hidden = :hidden' + data['hide'] = True + sql_hidden = f'AND `event_session`.hide = :hide' elif hidden == 'not_hidden': - data['hidden'] = False - sql_hidden = f'AND `event_session`.hidden = :hidden' + data['hide'] = False + sql_hidden = f'AND `event_session`.hide = :hide' elif hidden == 'all': sql_hidden = '' @@ -347,6 +347,8 @@ def get_event_session_rec_list( {sql_limit}; """ + log.debug(sql) + if event_session_rec_li_result := sql_select(data=data, sql=sql, as_list=True): event_session_rec_li = event_session_rec_li_result diff --git a/app/models/event_session_models.py b/app/models/event_session_models.py index 8853849..bf236f0 100644 --- a/app/models/event_session_models.py +++ b/app/models/event_session_models.py @@ -77,6 +77,8 @@ class Event_Session_Base(BaseModel): presentation_file_path: Optional[str] presentation_file_size: Optional[str] + enable_event_file_approval_option: Optional[bool] + file_count: Optional[int] status: Optional[int] diff --git a/app/routers/event.py b/app/routers/event.py index bfeea80..44ad161 100644 --- a/app/routers/event.py +++ b/app/routers/event.py @@ -174,25 +174,25 @@ async def get_event_obj_li( for event_obj in event_obj_li_result: event_id = event_obj.get('event_id', None) if event_obj := load_event_obj( - event_id=event_id, - enabled=enabled, - inc_event_abstract_list=inc_event_abstract_list, - inc_event_badge_list=inc_event_badge_list, - inc_event_device_list=inc_event_device_list, - inc_event_exhibit_list=inc_event_exhibit_list, - inc_event_file_list=inc_event_file_list, - inc_event_location_list=inc_event_location_list, - inc_event_person_list=inc_event_person_list, - inc_event_presentation_list=inc_event_presentation_list, - inc_event_presenter_list=inc_event_presenter_list, - inc_event_registration_list=inc_event_registration_list, - inc_event_session_list=inc_event_session_list, - inc_event_track_list=inc_event_track_list, - inc_event_cfg=inc_event_cfg, - inc_event_registration_cfg=inc_event_registration_cfg, - inc_poc_event_person=inc_poc_event_person, - # inc_poc_person=inc_poc_person, - inc_user=inc_user, + event_id = event_id, + enabled = enabled, + inc_event_abstract_list = inc_event_abstract_list, + inc_event_badge_list = inc_event_badge_list, + inc_event_device_list = inc_event_device_list, + inc_event_exhibit_list = inc_event_exhibit_list, + inc_event_file_list = inc_event_file_list, + inc_event_location_list = inc_event_location_list, + inc_event_person_list = inc_event_person_list, + inc_event_presentation_list = inc_event_presentation_list, + inc_event_presenter_list = inc_event_presenter_list, + inc_event_registration_list = inc_event_registration_list, + inc_event_session_list = inc_event_session_list, + inc_event_track_list = inc_event_track_list, + inc_event_cfg = inc_event_cfg, + inc_event_registration_cfg = inc_event_registration_cfg, + inc_poc_event_person = inc_poc_event_person, + # inc_poc_person = inc_poc_person, + inc_user = inc_user, ): data = event_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) # pylint: disable=no-member @@ -209,8 +209,10 @@ async def get_event_obj_li( @router.get('/event/{event_id}', response_model=Resp_Body_Base) async def get_event_obj( event_id: str = Query(..., min_length=1, max_length=22), - enabled: str = 'enabled', # For now this covers any included objects or object lists - limit: int = 500, # For now this covers any included objects or object lists + enabled: str = 'enabled', # enabled, disabled, all + approved: str = 'all', # approve(d), not_approved, all + hidden: str = 'not_hidden', # hidden, not_hidden, all + review: str = 'all', # ready, not_ready, all inc_address: bool = False, # Under event and under contact # inc_address_location: bool = False, inc_contact: bool = False, @@ -241,11 +243,12 @@ async def get_event_obj( inc_product_list: bool = False, inc_user: bool = False, x_account_id: str = Header(...), + limit: int = 500, # For now this covers any included objects or object lists by_alias: Optional[bool] = True, exclude_unset: 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 event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass @@ -254,11 +257,10 @@ async def get_event_obj( if event_obj := load_event_obj( event_id = event_id, - limit = limit, - by_alias = by_alias, - exclude_unset = exclude_unset, - # model_as_dict = model_as_dict, enabled = enabled, + approved = approved, + hidden = hidden, + review = review, inc_address = inc_address, # inc_address_location = inc_address_location, inc_contact = inc_contact, @@ -287,6 +289,10 @@ async def get_event_obj( # inc_product = inc_product, # inc_product_list = inc_product_list, inc_user = inc_user, + limit = limit, + by_alias = by_alias, + exclude_unset = exclude_unset, + # model_as_dict = model_as_dict, ): # event_dict = event_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) pass