diff --git a/app/methods/event_file_methods.py b/app/methods/event_file_methods.py index 08cc53d..ccc8ffd 100644 --- a/app/methods/event_file_methods.py +++ b/app/methods/event_file_methods.py @@ -106,6 +106,7 @@ def get_event_file_rec_list( for_id: int|str, # NOTE: This is not for_obj_id because the field name is actually for_id file_purpose_id: int = None, # NOTE: Not prefixed with lu_ file_purpose: str = None, + internal_use: bool = None, # Default to False instead of None priority: bool = None, group: str = None, # event_id: str = None, @@ -128,6 +129,7 @@ def get_event_file_rec_list( data['for_id'] = for_id data['file_purpose_id'] = file_purpose_id data['file_purpose'] = file_purpose + data['internal_use'] = internal_use data['priority'] = priority # data['sort'] = sort data['group'] = group # Same or similar as file purpose? @@ -144,6 +146,13 @@ def get_event_file_rec_list( else: sql_file_purpose = '' + if internal_use: + sql_internal_use = f'AND `event_file`.internal_use = 1' + elif internal_use is False: + sql_internal_use = f'AND (`event_file`.internal_use IS NULL OR `event_file`.internal_use = 0)' + else: + sql_internal_use = '' + if priority: sql_priority = f'AND `event_file`.priority = :priority' else: @@ -164,6 +173,7 @@ def get_event_file_rec_list( {sql_for_type_id} {sql_file_purpose_id} {sql_file_purpose} + {sql_internal_use} {sql_priority} {sql_group} {sql_enabled} diff --git a/app/methods/event_session_methods.py b/app/methods/event_session_methods.py index 8023a79..4971d44 100644 --- a/app/methods/event_session_methods.py +++ b/app/methods/event_session_methods.py @@ -35,6 +35,7 @@ def load_event_session_obj( inc_event_badge_list: bool = False, inc_event_device_list: bool = False, inc_event_file_list: bool = False, + inc_event_file_internal_use_list: bool = False, inc_event_location: bool = False, inc_event_person: bool = False, inc_event_person_profile: bool = False, @@ -98,6 +99,7 @@ def load_event_session_obj( for_id = event_session_id, file_purpose_id = event_file_file_purpose_id, file_purpose = event_file_file_purpose, + internal_use = False, priority = event_file_priority, group = event_file_group, enabled = enabled, @@ -123,14 +125,41 @@ def load_event_session_obj( else: event_session_obj.event_file_list = None - # if event_file_dict_list := load_event_file_obj_list( - # event_session_id = event_session_id, - # limit = limit, - # model_as_dict = model_as_dict, - # enabled = enabled, - # ): - # event_session_obj.event_file_list = event_file_dict_list - # else: event_session_obj.event_file_list = [] + if inc_event_file_internal_use_list: + log.info('Need to include event file internal use list...') + + from app.methods.event_file_methods import get_event_file_rec_list, load_event_file_obj + if event_file_rec_list_result := get_event_file_rec_list( + for_type = 'event_session', + for_id = event_session_id, + file_purpose_id = event_file_file_purpose_id, + file_purpose = event_file_file_purpose, + internal_use = True, + priority = event_file_priority, + group = event_file_group, + enabled = enabled, + limit = limit, + ): + event_file_result_list = [] + for event_file_rec in event_file_rec_list_result: + if load_event_file_result := load_event_file_obj( + event_file_id = event_file_rec.get('event_file_id', None), + enabled = enabled, + inc_hosted_file = inc_hosted_file, + # model_as_dict = True, + # by_alias = by_alias, + # exclude_unset = False, + ): + event_file_result_list.append(load_event_file_result) + else: + event_file_result_list.append(None) + log.debug(event_file_result_list) + event_session_obj.event_file_internal_use_list = event_file_result_list + elif isinstance(event_file_rec_list_result, list): + event_session_obj.event_file_internal_use_list = [] + else: + event_session_obj.event_file_internal_use_list = None + log.debug(f'Get event location? Include Event Location: {inc_event_location} Event Location ID: {event_location_id}') if inc_event_location and event_location_id: @@ -400,14 +429,14 @@ def create_update_event_session_obj_v4( if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass else: log.error('Missing or invalid Event ID passed. Not required. Ignoring.') - log.info(f'Event ID: {event_id}') + # log.info(f'Event ID: {event_id}') - log.info('Attempting to get Event ID from related object.') - from app.methods.event_methods import get_event_id_w_for_type_id - if event_id := get_event_id_w_for_type_id(for_type='event_session', for_id=event_session_id): pass - else: - log.error('Unable to get Event ID from related object.') - False + # log.info('Attempting to get Event ID from related object.') + # from app.methods.event_methods import get_event_id_w_for_type_id + # if event_id := get_event_id_w_for_type_id(for_type='event_session', for_id=event_session_id): pass + # else: + # log.error('Unable to get Event ID from related object.') + # False else: log.info('No Event Session ID passed. Create new Event Session. Required: Account ID, Event ID') diff --git a/app/models/event_device_models.py b/app/models/event_device_models.py index c7a5eac..0fa5537 100644 --- a/app/models/event_device_models.py +++ b/app/models/event_device_models.py @@ -54,10 +54,10 @@ class Event_Device_Base(BaseModel): trigger_open_filename: Optional[str] # The file hash filename trigger_open_extension: Optional[str] # The file hash extension part - trigger_open_internal_os: Optional[str] # Use internal_os for win vs mac + trigger_open_open_in_os: Optional[str] # Use open_in_os for win vs mac - trigger_open_file_id: Optional[str] # The file ID random; use along with filename, extension, and internal_os - trigger_open_hash_file: Optional[str] # The file hash; use along with filename, extension, and internal_os + trigger_open_file_id: Optional[str] # The file ID random; use along with filename, extension, and open_in_os + trigger_open_hash_file: Optional[str] # The file hash; use along with filename, extension, and open_in_os trigger_open_file_path: Optional[str] # Use along with filename trigger_open_session_id: Optional[str] diff --git a/app/models/event_file_models.py b/app/models/event_file_models.py index 0769d33..67947f5 100644 --- a/app/models/event_file_models.py +++ b/app/models/event_file_models.py @@ -59,12 +59,15 @@ class Event_File_Base(BaseModel): lu_file_purpose_id: Optional[int] file_purpose: Optional[str] + # New internal use fields to help with logistics and planning 2022-09-15 + internal_use: Optional[bool] # Will hide from moderators, presenters, non support people, etc + #### NOTE ***** NOTE - internal_os: Optional[str] + open_in_os: Optional[str] public_use: Optional[bool] = False public: Optional[bool] approve: Optional[bool] - #### internal_os needs to be set + #### open_in_os needs to be set #### Are other important fields missing???? publish_optout: Optional[bool] #### NOTE ^^^^^ NOTE diff --git a/app/models/event_session_models.py b/app/models/event_session_models.py index ca49bfd..801a5ca 100644 --- a/app/models/event_session_models.py +++ b/app/models/event_session_models.py @@ -75,15 +75,25 @@ class Event_Session_Base(BaseModel): rehearsal_phone_passcode: Optional[str] rehearsal_text: Optional[str] - image_path: Optional[str] - presentation_file_path: Optional[str] - presentation_file_size: Optional[str] + image_path: Optional[str] # Not currently in use. For a banner or logo + # presentation_file_path: Optional[str] # No longer used 2022-09-15 + # presentation_file_size: Optional[str] # No longer used 2022-09-15 enable_event_file_approval_option: Optional[bool] # enable_event_file_approval_option: Optional[bool] = Field(default=False) # enable_event_file_approval_option: Optional[bool] = False # Setting a default to try and prevent client side null value issues. + # New internal use fields to help with logistics and planning 2022-09-15 + internal_use: Optional[bool] # Will hide from moderators, presenters, non support people, etc + internal_notes: Optional[str] # general notes + internal_notes_access: Optional[str] # accessibility + internal_notes_av: Optional[str] # audio video + internal_notes_fb: Optional[str] # food and beverage + internal_notes_it: Optional[str] # IT and networking + internal_notes_staff: Optional[str] # staffing and labor + file_count: Optional[int] + internal_use_count: Optional[int] status: Optional[int] review: Optional[bool] @@ -130,6 +140,7 @@ class Event_Session_Base(BaseModel): event_badge_list: Optional[list] # Optional[Event_Abstract_Base] event_device_list: Optional[list] # Optional[Event_Device_Base] event_file_list: Optional[list] # Optional[Event_File_Base] + event_file_internal_use_list: Optional[list] # Optional[Event_File_Base] event_location: Optional[Union[Event_Location_Base, None]] event_person_list: Optional[list] event_presenter_cat: Optional[Union[str, None]] diff --git a/app/routers/api_crud.py b/app/routers/api_crud.py index 368b5b9..a7e8b92 100644 --- a/app/routers/api_crud.py +++ b/app/routers/api_crud.py @@ -4,7 +4,7 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Resp from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union -from app.lib_general import * +from app.lib_general import log, logging, common_route_params, Common_Route_Params, common_route_params_min, Common_Route_Params_Min 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, lookup_id_random_pop diff --git a/app/routers/event_file.py b/app/routers/event_file.py index 0d68787..5cec089 100644 --- a/app/routers/event_file.py +++ b/app/routers/event_file.py @@ -100,7 +100,9 @@ async def create_from_hosted_file( else: event_file_data['extension'] = hosted_file_obj.extension - event_file_data['internal_os'] = event_file_obj.internal_os + event_file_data['open_in_os'] = event_file_obj.open_in_os + + event_file_data['internal_use'] = hosted_file_obj.internal_use # event_file_data['public_use'] = hosted_file_obj.public_use diff --git a/app/routers/event_session.py b/app/routers/event_session.py index 856e38f..76a0268 100644 --- a/app/routers/event_session.py +++ b/app/routers/event_session.py @@ -123,7 +123,7 @@ async def patch_event_session_obj_exist_v4( data = {} data['event_session_id'] = event_session_id data['event_session_id_random'] = event_session_id_random - return mk_resp(data=data, response=response, status_message='The event session was created.') + return mk_resp(data=data, response=response, status_message='The event session was created or updated.') else: return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.') # ### END ### API Event Session ### patch_event_session_obj_exist_v4() ### @@ -474,6 +474,7 @@ async def get_event_session_obj( inc_event_badge_list: bool = False, inc_event_device_list: bool = False, inc_event_file_list: bool = False, + inc_event_file_internal_use_list: bool = False, inc_event_location: bool = False, inc_event_person: bool = False, # Under event_presenter inc_event_person_profile: bool = False, # Under event_person @@ -515,6 +516,7 @@ async def get_event_session_obj( inc_event_badge_list = inc_event_badge_list, inc_event_device_list = inc_event_device_list, inc_event_file_list = inc_event_file_list, + inc_event_file_internal_use_list = inc_event_file_internal_use_list, inc_event_location = inc_event_location, inc_event_person = inc_event_person, inc_event_person_profile = inc_event_person_profile,