diff --git a/app/methods/event_methods.py b/app/methods/event_methods.py index f4e0469..8d5b429 100644 --- a/app/methods/event_methods.py +++ b/app/methods/event_methods.py @@ -71,7 +71,7 @@ def load_event_obj( if inc_event_presenter_list: pass if inc_event_registration_list: pass if inc_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 @@ -101,9 +101,9 @@ def load_event_obj( ORDER BY `event_session`.created_on DESC, `event_session`.updated_on DESC; """ - log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + #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.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: @@ -124,9 +124,9 @@ def load_event_obj( #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.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 + #log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL if inc_event_track_list: pass if inc_event_cfg: pass diff --git a/app/methods/event_presentation_methods.py b/app/methods/event_presentation_methods.py new file mode 100644 index 0000000..f22021d --- /dev/null +++ b/app/methods/event_presentation_methods.py @@ -0,0 +1,142 @@ +from __future__ import annotations +import datetime + +from typing import Dict, List, Optional, Set, Union +from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator + +from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update +from app.lib_general import log, logging + +# from app.methods.event_methods import load_event_obj +# from app.methods.event_file_methods import load_event_file_obj +# from app.methods.event_location_methods import load_event_location_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.person_methods import load_person_obj +# from app.methods.user_methods import load_user_obj + +from app.models.event_presentation_models import Event_Presentation_Base + + +# ### BEGIN ### API Event Presentation Methods ### load_event_presentation_obj() ### +def load_event_presentation_obj( + event_presentation_id: int|str, + enabled: str = 'enabled', # enabled, disabled, all + inc_event_abstract_list: bool = False, + inc_event_badge_list: bool = False, + inc_event_device_list: bool = False, + inc_event_file_list: bool = False, + inc_event_person_list: bool = False, + inc_event_presenter_list: bool = False, + inc_event_cfg: bool = False, + inc_poc_event_person: bool = False, + inc_poc_person: bool = False, + #inc_user: bool = False, + ) -> Event_Presentation_Base|bool: + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + if event_presentation_id := redis_lookup_id_random(record_id_random=event_presentation_id, table_name='event_presentation'): pass + else: return False + + if event_presentation_rec := sql_select(table_name='v_event_presentation', record_id=event_presentation_id): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_presentation_rec) + + try: + event_presentation_obj = Event_Presentation_Base(**event_presentation_rec) + log.debug(event_presentation_obj) + except ValidationError as e: + log.error(e.json()) + return False + + # event_presentation_obj = Event_Presentation_Base(**event_presentation_rec) + # log.debug(event_presentation_obj) + + return False + + # *** ** * Everything below needs to be reviewed * ** *** + + account_id = event_session_rec.get('account_id', None) + event_id = event_session_rec.get('event_id', None) + event_location_id = event_session_rec.get('event_location_id', None) + event_track_id = event_session_rec.get('event_track_id', None) + poc_event_person_id = event_session_rec.get('poc_event_person_id', None) + poc_person_id = event_session_rec.get('poc_person_id', None) + + #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_list: pass + if inc_event_presentation_list: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + data = {} + data['event_session_id'] = event_session_id + + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `event_presentation`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `event_presentation`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + # else: event_obj['event_session'] = None + + # if limit: + # data['limit'] = limit + # sql_limit = f'LIMIT :limit' + # else: + # sql_limit = '' + + sql = f""" + SELECT `event_presentation`.id AS 'event_session_id', `event_presentation`.id_random AS 'event_session_id_random' + FROM `event_presentation` AS `event_presentation` + WHERE `event_presentation`.event_session_id = :event_session_id + {sql_enabled} + ORDER BY `event_presentation`.created_on DESC, `event_presentation`.updated_on DESC; + """ + + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + if event_presentation_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_presentation_obj_li_result) + event_presentation_obj_li = [] + for event_presentation_obj in event_presentation_obj_li_result: + event_presentation_id = event_presentation_obj.get('event_presentation_id', None) + if event_presentation_obj := load_event_presentation_obj( + event_presentation_id=event_presentation_id, + 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_person_list=inc_event_person_list, + inc_event_presentation_list=inc_event_presentation_list, + inc_event_presenter_list=inc_event_presenter_list, + inc_event_track_list=inc_event_track_list, + ): + data = event_presentation_obj.dict(by_alias=True, exclude_unset=True) + event_presentation_obj_li.append(data) + log.debug(event_presentation_obj_li) + event_presentation_obj.event_presentation_list = event_presentation_obj_li + else: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_presentation_obj_li_result) + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + + if inc_event_presenter_list: pass + if inc_poc_event_person: pass + if inc_poc_person: + person_obj = load_person_obj(person_id=poc_person_id) + log.debug(person_obj) + event_presentation_obj.poc_person = person_obj + log.debug(event_presentation_obj) + #if inc_user: pass + else: + return False + + return event_presentation_obj \ No newline at end of file diff --git a/app/methods/event_session_methods.py b/app/methods/event_session_methods.py index 9bacbb3..8a6c537 100644 --- a/app/methods/event_session_methods.py +++ b/app/methods/event_session_methods.py @@ -10,7 +10,7 @@ from app.lib_general import log, logging # from app.methods.event_methods import load_event_obj # from app.methods.event_file_methods import load_event_file_obj # from app.methods.event_location_methods import load_event_location_obj -# from app.methods.event_presentation_methods import load_event_presentation_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.person_methods import load_person_obj # from app.methods.user_methods import load_user_obj @@ -50,8 +50,15 @@ def load_event_session_obj( log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(event_session_rec) - event_session_obj = Event_Session_Base(**event_session_rec) - log.debug(event_session_obj) + try: + event_session_obj = Event_Session_Base(**event_session_rec) + log.debug(event_session_obj) + except ValidationError as e: + log.error(e.json()) + return False + + # event_session_obj = Event_Session_Base(**event_session_rec) + # log.debug(event_session_obj) account_id = event_session_rec.get('account_id', None) event_id = event_session_rec.get('event_id', None) @@ -66,23 +73,73 @@ def load_event_session_obj( if inc_event_device_list: pass if inc_event_file_list: pass if inc_event_person_list: pass - if inc_event_presentation_list: pass + if inc_event_presentation_list: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + data = {} + data['event_session_id'] = event_session_id + + if enabled in ['enabled', 'disabled', 'all']: + if enabled == 'enabled': + data['enable'] = True + sql_enabled = f'AND `event_presentation`.enable = :enable' + elif enabled == 'disabled': + data['enable'] = False + sql_enabled = f'AND `event_presentation`.enable = :enable' + elif enabled == 'all': + sql_enabled = '' + # else: event_obj['event_session'] = None + + # if limit: + # data['limit'] = limit + # sql_limit = f'LIMIT :limit' + # else: + # sql_limit = '' + + sql = f""" + SELECT `event_presentation`.id AS 'event_session_id', `event_presentation`.id_random AS 'event_session_id_random' + FROM `event_presentation` AS `event_presentation` + WHERE `event_presentation`.event_session_id = :event_session_id + {sql_enabled} + ORDER BY `event_presentation`.created_on DESC, `event_presentation`.updated_on DESC; + """ + + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + if event_presentation_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_presentation_obj_li_result) + event_presentation_obj_li = [] + for event_presentation_obj in event_presentation_obj_li_result: + event_presentation_id = event_presentation_obj.get('event_presentation_id', None) + if event_presentation_obj := load_event_presentation_obj( + event_presentation_id=event_presentation_id, + 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_person_list=inc_event_person_list, + inc_event_presentation_list=inc_event_presentation_list, + inc_event_presenter_list=inc_event_presenter_list, + inc_event_track_list=inc_event_track_list, + ): + data = event_presentation_obj.dict(by_alias=True, exclude_unset=True) + event_presentation_obj_li.append(data) + log.debug(event_presentation_obj_li) + event_session_obj.event_presentation_list = event_presentation_obj_li + else: + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(event_presentation_obj_li_result) + log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + + if inc_event_presenter_list: pass if inc_poc_event_person: pass if inc_poc_person: person_obj = load_person_obj(person_id=poc_person_id) log.debug(person_obj) - event_session_rec['poc_person'] = person_obj - log.debug(event_session_rec) + event_session_obj.poc_person = person_obj + log.debug(event_session_obj) #if inc_user: pass else: return False - try: - event_session_obj = Event_Session_Base(**event_session_rec) - log.debug(event_session_obj) - except ValidationError as e: - log.error(e.json()) - return False - return event_session_obj \ No newline at end of file diff --git a/app/models/event_presentation_models.py b/app/models/event_presentation_models.py index ed4c5e2..8330993 100644 --- a/app/models/event_presentation_models.py +++ b/app/models/event_presentation_models.py @@ -10,7 +10,7 @@ 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_abstract_models import Event_Abstract_Base +#from .event_abstract_models import Event_Abstract_Base from .event_session_models import Event_Session_Base @@ -36,6 +36,8 @@ class Event_Presentation_Base(BaseModel): event_session_id: Optional[int] #event_track_id_random: Optional[str] #event_track_id: Optional[int] + poc_event_person: Optional[Event_Person_Base] + poc_person: Optional[Person_Base] for_type: Optional[str] for_id: Optional[int] diff --git a/app/models/event_session_models.py b/app/models/event_session_models.py index 87fa899..4bb55ef 100644 --- a/app/models/event_session_models.py +++ b/app/models/event_session_models.py @@ -12,6 +12,7 @@ from .common_field_schema import base_fields, default_num_bytes #from .event_models import Event_Base from .event_location_models import Event_Location_Base from .event_track_models import Event_Track_Base +from .person_models import Person_Base class Event_Session_Base(BaseModel): @@ -37,6 +38,9 @@ class Event_Session_Base(BaseModel): session_type_id: Optional[int] session_type_code: Optional[str] + poc_event_person: Optional[Event_Person_Base] + poc_person: Optional[Person_Base] + name: Optional[str] description: Optional[str]