From 6cfd76c7888a26676022f5db962e47440b79fb21 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Mon, 10 Oct 2022 11:27:44 -0400 Subject: [PATCH] Minor changes --- app/models/event_location_models.py | 4 ++ app/models/event_presenter_models.py | 2 +- app/routers/event_importing.py | 92 +++++++++++++++++++--------- 3 files changed, 68 insertions(+), 30 deletions(-) diff --git a/app/models/event_location_models.py b/app/models/event_location_models.py index ccf2e2a..2e19070 100644 --- a/app/models/event_location_models.py +++ b/app/models/event_location_models.py @@ -27,6 +27,10 @@ class Event_Location_Base(BaseModel): # alias = 'event_location_code' ) + external_id: Optional[str] = Field( + alias = 'event_location_external_id' + ) + event_id_random: Optional[str] event_id: Optional[int] diff --git a/app/models/event_presenter_models.py b/app/models/event_presenter_models.py index 1334772..8e27b19 100644 --- a/app/models/event_presenter_models.py +++ b/app/models/event_presenter_models.py @@ -109,7 +109,7 @@ class Event_Presenter_Base(BaseModel): hide_event_launcher: Optional[bool] priority: Optional[bool] - sort: Optional[int] + sort: Optional[int] # The presenter number if given group: Optional[str] notes: Optional[str] diff --git a/app/routers/event_importing.py b/app/routers/event_importing.py index dcb9d23..3db0376 100644 --- a/app/routers/event_importing.py +++ b/app/routers/event_importing.py @@ -337,13 +337,16 @@ async def event_importing_program_data( event_id: str = Query(..., min_length=11, max_length=22), file: UploadFile = File(...), + begin_at: int = 0, + end_at: int = 20000, + commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) - allow_inserts = False - allow_updates = False + allow_inserts = True + allow_updates = True account_id = commons.x_account_id event_location_id = None @@ -417,33 +420,36 @@ async def event_importing_program_data( 'Source ID': 'source_id', 'External ID': 'external_id', - 'Title': 'title_names', - 'Title Names': 'title_names', - 'Prefix': 'title_names', - 'Informal_name': 'informal_name', - 'Nickname': 'informal_name', - 'given_name (first)': 'given_name', - 'Given Name': 'given_name', - 'First Name': 'given_name', - 'Middle Name': 'middle_name', - 'family_name (last)': 'family_name', - 'Family Name': 'family_name', - 'Last Name': 'family_name', - 'Designations': 'designations', - 'Suffix': 'designations', + 'Title': 'presenter_title_names', + 'Title Names': 'presenter_title_names', + 'Prefix': 'presenter_title_names', + 'Informal_name': 'presenter_informal_name', + 'Nickname': 'presenter_informal_name', + 'given_name (first)': 'presenter_given_name', + 'Given Name': 'presenter_given_name', + 'First Name': 'presenter_given_name', + 'Middle Name': 'presenter_middle_name', + 'family_name (last)': 'presenter_family_name', + 'Family Name': 'presenter_family_name', + 'Last Name': 'presenter_family_name', + 'Designations': 'presenter_designations', + 'Suffix': 'presenter_designations', - 'Professional Title': 'professional_title', + 'Professional Title': 'presenter_professional_title', - 'Affiliations': 'affiliations', - 'Company': 'affiliations', + 'affiliations': 'presenter_presenter_affiliations', + 'Affiliations': 'presenter_presenter_affiliations', + 'Company': 'presenter_presenter_affiliations', - 'Email': 'email', - 'Email Address': 'email', - 'CC Email Address': 'cc_email', + 'Email': 'presenter_email', + 'Email Address': 'presenter_email', + 'CC Email Address': 'presenter_cc_email', 'location_title': 'location_name', 'Location Code': 'location_code', 'Location Name': 'location_name', + 'session_location': 'location_name', + 'Session Location': 'location_name', 'session_title': 'session_name', 'Session Code': 'session_code', @@ -452,6 +458,10 @@ async def event_importing_program_data( 'presentation_title': 'presentation_name', 'Presentation Code': 'presentation_code', 'Presentation Name': 'presentation_name', + + 'Presenter Code': 'presenter_code', + 'Presenter Number': 'presenter_number', # for sorting + 'Presenter Name': 'presenter_name', }, inplace = True) # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL @@ -459,17 +469,24 @@ async def event_importing_program_data( df_dict = df.to_dict(orient='records') + loop_count = 0 event_program_data_li = [] - log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + # log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL for record in df_dict: # ### Figure out the external IDs + log.info(f'Loop Count: {loop_count}') + loop_count = loop_count + 1 + if loop_count <= begin_at: continue + if loop_count > end_at: break + + if event_location_external_id := record.get('location_external_id'): log.info('Using location_external_id for event_location_external_id') elif event_location_external_id := record.get('location_code'): log.info('Using location_code for event_location_external_id') else: - log.info('No location external ID or code was found. Creating one with the name...') + log.warning('No location external ID or code was found. Creating one with the name...') event_location_name = record.get('location_name', '').strip() event_location_external_id = f'{event_location_name}' # .strip() log.debug(f'Event Location External ID: {event_location_external_id}') @@ -479,7 +496,7 @@ async def event_importing_program_data( elif event_session_external_id := record.get('session_code'): log.info('Using session_code for event_session_external_id') else: - log.info('No session external ID or code was found. Creating one with the name...') + log.warning('No session external ID or code was found. Creating one with the name...') event_session_name = record.get('session_name', '').strip() event_session_external_id = f'{event_session_name}' # .strip() log.debug(f'Event Session External ID: {event_session_external_id}') @@ -489,7 +506,7 @@ async def event_importing_program_data( elif event_presentation_external_id := record.get('presentation_code'): log.info('Using presentation_code for event_presentation_external_id') else: - log.info('No presentation external ID or code was found. Creating one with the name...') + log.warning('No presentation external ID or code was found. Creating one with the name...') event_presentation_name = record.get('presentation_name', '').strip() event_presentation_external_id = f'{event_session_external_id}:{event_presentation_name}' # .strip() log.debug(f'Event Presentation External ID: {event_presentation_external_id}') @@ -498,13 +515,17 @@ async def event_importing_program_data( log.info('Using presenter_external_id for event_presenter_external_id') elif event_presenter_external_id := record.get('presenter_code'): log.info('Using presenter_code for event_presenter_external_id') + elif event_presenter_external_id := record.get('presenter_number'): + log.info('Using presenter_number for event_presenter_external_id') else: - log.info('No presenter external ID or code was found. Creating one with the name...') + log.warning('No presenter external ID or code was found. Creating one with their family and given names...') event_presenter_last_first_name = ', '.join( [record.get('presenter_family_name', ''), record.get('presenter_given_name', '')] ) # event_presenter_name = record.get('presenter_name', '').strip() event_presenter_external_id = f'{event_presentation_external_id}:{event_presenter_last_first_name}' # .strip() log.debug(f'Event Presenter External ID: {event_presenter_external_id}') + log.info(f'Event Location External ID: {event_location_external_id} | Event Session External ID: {event_session_external_id} | Event Presentation External ID: {event_presentation_external_id} | Event Presenter External ID: {event_presenter_external_id}') + # continue data = {} @@ -527,6 +548,7 @@ async def event_importing_program_data( event_location_data['code'] = record.get('location_code') event_location_data['event_id'] = event_id # INSERT and UPDATE the event_id just in case event_location_data['name'] = record.get('location_name') + event_location_data['enable'] = True event_location_id = None if event_location_rec_result := sql_select(data=data, sql=sql): @@ -591,6 +613,7 @@ async def event_importing_program_data( event_session_data['sort'] = record.get('session_sort') + event_session_data['enable'] = True event_session_data['notes'] = record.get('session_notes') event_session_id = None @@ -650,13 +673,16 @@ async def event_importing_program_data( event_presentation_data['start_datetime'] = record.get('presentation_start_datetime') # event_presentation_start_datetime = record.get('presentation_start_date', '') + ' ' + record.get('presentation_start_time', '') # event_presentation_data['start_datetime'] = event_presentation_start_datetime + data['presentation_start_datetime'] = event_presentation_data['start_datetime'] event_presentation_data['end_datetime'] = record.get('presentation_end_datetime') # event_presentation_end_datetime = record.get('presentation_end_date', '') + ' ' + record.get('presentation_end_time', '') # event_presentation_data['end_datetime'] = event_presentation_end_datetime + data['presentation_end_datetime'] = event_presentation_data['end_datetime'] event_presentation_data['sort'] = record.get('presentation_sort') + event_presentation_data['enable'] = True event_presentation_data['notes'] = record.get('presentation_notes') event_presentation_id = None @@ -700,7 +726,7 @@ async def event_importing_program_data( sql = f""" SELECT * FROM `v_event_presenter` AS `event_presenter` - WHERE event_presenter.event_id = :event_id + WHERE event_presenter.event_presentation_id = :event_presentation_id AND event_presenter.external_id = :event_presenter_external_id LIMIT 1; """ @@ -710,6 +736,11 @@ async def event_importing_program_data( event_presenter_data['event_session_id'] = event_session_id # UPDATE the event_session_id in case the presentation was moved event_presenter_data['event_presentation_id'] = event_presentation_id # UPDATE the event_presentation_id in case the presenter was moved + if event_presenter_number := record.get('presenter_number'): + event_presenter_data['sort'] = event_presenter_number + elif event_presenter_number := isinstance(record.get('presenter_code'), int): + event_presenter_data['sort'] = event_presenter_number + event_presenter_data['title_names'] = record.get('presenter_title_names', '') event_presenter_data['informal_name'] = record.get('presenter_informal_name', '') event_presenter_data['given_name'] = record.get('presenter_given_name', '') @@ -722,6 +753,7 @@ async def event_importing_program_data( event_presenter_data['email'] = record.get('presenter_email', '') + event_presenter_data['enable'] = True event_presenter_data['notes'] = record.get('presenter_notes', '') event_presenter_id = None @@ -758,11 +790,13 @@ async def event_importing_program_data( log.warning(event_presenter_obj_in_result) continue # Something unexpected may have happened data['event_presenter_id'] = event_presenter_id + data['event_presenter_code'] = event_presenter_number + data['event_presenter_full_name'] = event_presenter_full_name # End of the loop. Append to program list data results. event_program_data_li.append(data) - log.debug(f'Record processed: {event_session_id} {event_presentation_id} {event_presenter_full_name}') + log.info(f'Record processed: Session: {event_session_id} Presentation: {event_presentation_id} Presenter: {event_presenter_full_name}') return mk_resp(data=event_program_data_li, response=commons.response) # ### END ### Event Importing ### event_importing_program_data() ###