From 803c2118b63276be4a3bf1fe3ad642a46c0362c3 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 11 May 2022 00:08:37 -0400 Subject: [PATCH] Added CMSC program data import --- app/routers/importing.py | 314 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) diff --git a/app/routers/importing.py b/app/routers/importing.py index 0cd8dec..5c12089 100644 --- a/app/routers/importing.py +++ b/app/routers/importing.py @@ -2020,3 +2020,317 @@ async def aapor_program_import( # log.error('Hit break point') # break return mk_resp(data=session_dict_li, response=commons.response) + + + + + + +# CMSC program import +# Updated 2022-05-10 +@router.get('/cmsc_program_import', response_model=Resp_Body_Base) +async def cmsc_program_import( + event_id: str = Query(..., min_length=11, max_length=22), + begin_at: int = 0, + end_at: int = 50, + + commons: Common_Route_Params = Depends(common_route_params), + ): + log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + account_id = commons.x_account_id # 20 j5EBhRDqPuw + # CMSC 2022: 1450 E4iJPaT7S8w + + if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass + else: return mk_resp(data=None, status_code=404, response=commons.response, status_message='The Event ID was invalid or not found.') + + # PART 0: Load the data + full_file_path = 'admin/temp/import_cmsc_2022-06_program_data.csv' + + df = pandas.read_csv( + full_file_path, + na_filter = False, + dtype = { + 'presentation_code': str, + 'presentation_title': str, + 'presentation_code': str, + 'presentation_start_datetime': str, + 'presentation_end_datetime': str, + 'presenter_number': str, + 'presenter_given_name': str, + 'presenter_family_name': str, + 'session_code': str, + 'Session Code': str, + 'session_title': str, + 'session_description': str, + 'session_start_datetime': str, + 'session_end_datetime': str, + 'session_location': str, + 'session_location_code': str, + }, + parse_dates = ['session_start_datetime', 'session_end_datetime'] + ) + #df = df.fillna('') # replace NaN with '' + # df = df.fillna(None) + # df = df.fillna('', inplace=True) + # return str(df.info()) + # return mk_resp(data=str(df.info()), status_code=500, response=commons.response, status_message='TESTING') + + df.rename(columns={ + 'presenter_number': 'presenter_code', + 'Presenter Number': 'presenter_code', + 'Presenter Code': 'presenter_code', + 'Presentation Code': 'presentation_code', + 'presentation_title': 'presentation_name', + 'given_name (first)': 'presenter_given_name', + 'family_name (last)': 'presenter_family_name', + 'Session Code': 'session_code', + 'session_title': 'session_name', + 'Session Title': 'session_name', + 'session_location_code': 'location_code', + 'session_location': 'location_name', + }, + inplace = True) + log.debug(df) + + # datetime.datetime.strptime(updated_on, '%d-%b-%Y') + + df_dict = df.to_dict(orient='records') + # log.debug(df_dict) + + 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, update_event_session_obj + + from app.methods.event_presentation_methods import create_event_presentation_obj, create_update_event_presentation_obj_v4, load_event_presentation_obj, get_event_presentation_rec_list, update_event_presentation_obj_v3, update_event_presentation_obj + + from app.methods.event_presenter_methods import create_event_presenter_obj, create_update_event_presenter_obj_v4, load_event_presenter_obj, get_event_presenter_rec_list, update_event_presenter_obj_v3, update_event_presenter_obj + + from app.models.event_session_models import Event_Session_Base + + session_dict_li = [] + # NOTE: I think I really like the way I did this loop counter and logging. -2022-04-14 + loop_count = 0 + for record in df_dict: + loop_count = loop_count + 1 + if loop_count <= begin_at: + log.info(f'Skipping loop #{loop_count}') + continue + if loop_count > end_at: + log.info(f'Stopping at loop #{loop_count}') + break + else: + log.info(f'Starting loop #{loop_count}') + + log.info('# PART 1: Process the session data') + session_data = {} + session_data['event_id'] = event_id + session_data['code'] = record.get('session_code') + session_data['name'] = record.get('session_name') + session_data['description'] = record.get('session_description') + session_data['start_datetime'] = record.get('session_start_datetime') + session_data['end_datetime'] = record.get('session_end_datetime') + location_name = record.get('location_name') + + if location_name == 'Annapolis 1-4': session_data['event_location_id'] = 319 + elif location_name == 'Potomac 1-3': session_data['event_location_id'] = 320 + elif location_name == 'Potomac 4-6': session_data['event_location_id'] = 321 + elif location_name == 'Potomac A': session_data['event_location_id'] = 322 + elif location_name == 'Potomac A/B': session_data['event_location_id'] = 322 + elif location_name == 'Potomac B': session_data['event_location_id'] = 323 + elif location_name == 'Potomac C': session_data['event_location_id'] = 324 + elif location_name == 'Potomac D': session_data['event_location_id'] = 325 + elif location_name == 'Woodrow Wilson Ballroom B': session_data['event_location_id'] = 326 + elif location_name == 'Woodrow Wilson Ballroom C': session_data['event_location_id'] = 327 + elif location_name == 'Woodrow Wilson Ballroom D': session_data['event_location_id'] = 328 + session_data['enable'] = True + session_data['hide'] = False + + log.debug(session_data) + + data = {} + data['event_id'] = event_id + data['code'] = session_data['code'] + 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 + AND event_session.code = :code + LIMIT 1; + """ + # log.debug(sql) + if event_session_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + log.info('Got a list result') + event_session_rec = event_session_rec_li_result[0] + log.debug(event_session_rec) + else: # [] or False + log.info('No results or something went wrong') + event_session_rec = None + log.debug(event_session_rec_li_result) + + # log.error('Hit break point') + # break + + event_session_id = None + if event_session_rec: + log.info('Found a record. Updating...') + event_session_id = event_session_rec.get('event_session_id') + if update_event_session_obj_result := update_event_session_obj_v3( + event_session_id = event_session_id, + event_session_obj_exist = session_data + ): pass + else: + log.error('Something went wrong while trying to update an event session.') + # event_session_id = update_event_session_obj_result + break + log.debug(update_event_session_obj_result) + else: + log.info('No record found. Inserting...') + if create_event_session_obj_result := create_event_session_obj( + event_id = event_id, + event_session_obj_new = session_data + ): + event_session_id = create_event_session_obj_result + else: + log.error('Something went wrong while trying to create a new event session.') + # event_session_id = create_event_session_obj_result + break + log.debug(create_event_session_obj_result) + + # log.error('Hit continue to next loop point') + # continue + + # log.error('Hit break point') + # break + + log.info('# PART 2: Process the presentation data') + presentation_data = {} + presentation_data['for_type'] = 'event_session' + presentation_data['for_id'] = event_session_id + presentation_data['event_session_id'] = event_session_id + presentation_data['code'] = record.get('presentation_code') + presentation_data['name'] = record.get('presentation_name') + presentation_data['description'] = record.get('presentation_description') + presentation_data['start_datetime'] = record.get('presentation_start_datetime') + presentation_data['end_datetime'] = record.get('presentation_end_datetime') + presentation_data['enable'] = True + session_data['hide'] = False + log.debug(presentation_data) + + data = {} + data['event_session_id'] = event_session_id + data['code'] = presentation_data['code'] + sql = f""" + SELECT `event_presentation`.id AS 'event_presentation_id', `event_presentation`.id_random AS 'event_presentation_id_random' + FROM `event_presentation` AS `event_presentation` + WHERE + event_presentation.event_session_id = :event_session_id + AND event_presentation.code = :code + LIMIT 1; + """ + log.debug(sql) + if event_presentation_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + log.info('Got a list result') + event_presentation_rec = event_presentation_rec_li_result[0] + else: # [] or False + log.info('No results or something went wrong') + event_presentation_rec = None + log.debug(event_presentation_rec_li_result) + + event_presentation_id = None + if event_presentation_rec: + log.info('Found a record. Updating...') + event_presentation_id = event_presentation_rec.get('event_presentation_id') + if update_event_presentation_obj_result := update_event_presentation_obj_v3( + event_presentation_id = event_presentation_id, + event_presentation_obj_exist = presentation_data, + event_session_id = event_session_id, + ): pass + else: + log.error('Something went wrong while trying to update an event presentation.') + # event_presentation_id = update_event_presentation_obj_result + break + log.debug(update_event_presentation_obj_result) + else: + log.info('No record found. Inserting...') + if create_event_presentation_obj_result := create_event_presentation_obj( + event_session_id = event_session_id, + event_presentation_obj_new = presentation_data + ): + event_presentation_id = create_event_presentation_obj_result + else: + log.error('Something went wrong while trying to create a new event presentation.') + # event_presentation_id = create_event_presentation_obj_result + break + log.debug(create_event_presentation_obj_result) + + # log.error('Hit continue to next loop point') + # continue + + # log.error('Hit break point') + # break + + log.info('# PART 3: Process the presenter data') + presenter_data = {} + presenter_data['for_type'] = 'event_presentation' + presenter_data['for_id'] = event_presentation_id + presenter_data['event_session_id'] = event_session_id + presenter_data['event_presentation_id'] = event_presentation_id + presenter_data['code'] = record.get('presenter_code') + presenter_data['given_name'] = record.get('presenter_given_name') + presenter_data['family_name'] = record.get('presenter_family_name') + presenter_data['sort'] = record.get('presenter_code') # Using the code as the sort as well + presenter_data['enable'] = True + presenter_data['hide'] = False + log.debug(presenter_data) + + data = {} + data['event_presentation_id'] = event_presentation_id + data['code'] = presenter_data['code'] + sql = f""" + SELECT `event_presenter`.id AS 'event_presenter_id', `event_presenter`.id_random AS 'event_presenter_id_random' + FROM `event_presenter` AS `event_presenter` + WHERE + event_presenter.event_presentation_id = :event_presentation_id + AND event_presenter.code = :code + LIMIT 1; + """ + log.debug(sql) + if event_presenter_rec_li_result := sql_select(data=data, sql=sql, as_list=True): + log.info('Got a list result') + event_presenter_rec = event_presenter_rec_li_result[0] + else: # [] or False + log.info('No results or something went wrong') + event_presenter_rec = None + log.debug(event_presenter_rec_li_result) + + event_presenter_id = None + if event_presenter_rec: + log.info('Found a record. Updating...') + event_presenter_id = event_presenter_rec.get('event_presenter_id') + if update_event_presenter_obj_result := update_event_presenter_obj_v3( + event_presenter_id = event_presenter_id, + event_presenter_obj_exist = presenter_data, + event_presentation_id = event_presentation_id, + ): pass + else: + log.error('Something went wrong while trying to update an event presenter.') + # event_presenter_id = update_event_presenter_obj_result + break + log.debug(update_event_presenter_obj_result) + else: + log.info('No record found. Inserting...') + if create_event_presenter_obj_result := create_event_presenter_obj( + event_presentation_id = event_presentation_id, + event_presenter_obj_new = presenter_data + ): + event_presenter_id = create_event_presenter_obj_result + else: + log.error('Something went wrong while trying to create a new event presenter.') + # event_presenter_id = create_event_presenter_obj_result + break + log.debug(create_event_presenter_obj_result) + + # log.error('Hit break point') + # break + return mk_resp(data=session_dict_li, response=commons.response)