From d6857920611da7b8d685f222303532686cde0777 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 5 Aug 2021 19:21:52 -0400 Subject: [PATCH] Working on integration with Svelte and cont_edu_cert_person importing --- app/models/cont_edu_cert_person_models.py | 5 + app/routers/importing.py | 131 ++++++++++++++++++++++ 2 files changed, 136 insertions(+) diff --git a/app/models/cont_edu_cert_person_models.py b/app/models/cont_edu_cert_person_models.py index 3a2aa3b..df65d35 100644 --- a/app/models/cont_edu_cert_person_models.py +++ b/app/models/cont_edu_cert_person_models.py @@ -47,6 +47,8 @@ class Cont_Edu_Cert_Person_Base(BaseModel): # prefix: Optional[str] # suffix: Optional[str] full_name: Optional[str] + informal_full_name: Optional[str] + last_first_name: Optional[str] display_name: Optional[str] title: Optional[str] @@ -62,6 +64,9 @@ class Cont_Edu_Cert_Person_Base(BaseModel): created_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None + # Including JSON data + other_json: Optional[Json] + # Including other related objects cont_edu_cert: Optional[Union[Cont_Edu_Cert_Base, None]] person: Optional[Union[Person_Base, None]] diff --git a/app/routers/importing.py b/app/routers/importing.py index e9d8b66..bf8585b 100644 --- a/app/routers/importing.py +++ b/app/routers/importing.py @@ -330,3 +330,134 @@ async def importing_person_data( # break return mk_resp(data=person_data_li) + + + +@router.post('/cont_edu_cert_person_data', response_model=Resp_Body_Base) +async def importing_cont_edu_cert_person_data( + ): + log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL + log.debug(locals()) + + account_id = 19 + cont_edu_cert_id = 3 + full_file_path = 'admin/temp/import_cont_edu_cert_person_data.xlsx' + + df = pandas.read_excel(full_file_path, na_filter=False, dtype={'external_id':str, 'phone_home':str, 'phone_mobile':str, 'city':str, 'state_province':str, 'address_postal_code':str, 'country':str}) + log.debug(df) + + df_dict = df.to_dict(orient='records') + # log.debug(df_dict) + + # return mk_resp(data=False, status_code=500) + + cont_edu_cert_person_data_li = [] + # for i in df.index: + for record in df_dict: + cont_edu_cert_person_new = None + person_id = None + user_id = None + cont_edu_cert_person_id = None + + cont_edu_cert_person_data = {} + cont_edu_cert_person_data['cont_edu_cert_id'] = cont_edu_cert_id + cont_edu_cert_person_data['enable'] = True + + cont_edu_cert_person_data['email'] = record['email'] + + cont_edu_cert_person_data['given_name'] = record['given_name'] + if record.get('middle_name', None): + cont_edu_cert_person_data['middle_name'] = record['middle_name'] + else: + cont_edu_cert_person_data['middle_name'] = None + if record['family_name']: + cont_edu_cert_person_data['family_name'] = record['family_name'] + else: + cont_edu_cert_person_data['family_name'] = None + + if cont_edu_cert_person_data['given_name'] and cont_edu_cert_person_data['middle_name'] and cont_edu_cert_person_data['family_name']: + cont_edu_cert_person_data['full_name'] = cont_edu_cert_person_data['given_name']+' '+cont_edu_cert_person_data['middle_name']+' '+cont_edu_cert_person_data['family_name'] + elif cont_edu_cert_person_data['given_name'] and cont_edu_cert_person_data['family_name']: + cont_edu_cert_person_data['full_name'] = cont_edu_cert_person_data['given_name']+' '+cont_edu_cert_person_data['family_name'] + elif cont_edu_cert_person_data['given_name']: + cont_edu_cert_person_data['full_name'] = cont_edu_cert_person_data['family_name'] + elif record.get('informal_full_name', None): + cont_edu_cert_person_data['full_name'] = record['informal_full_name'] + elif record['informal_name']: + cont_edu_cert_person_data['full_name'] = record['informal_name'] + else: + cont_edu_cert_person_data['full_name'] = None + if record.get('informal_full_name', None): + cont_edu_cert_person_data['informal_full_name'] = record['informal_full_name'] + else: + cont_edu_cert_person_data['informal_full_name'] = None + cont_edu_cert_person_data['last_first_name'] = record.get('last_first_name', None) + + cont_edu_cert_person_data['display_name'] = record.get('display_name', None) + # cont_edu_cert_person_data['created_on'] = record['created_on'] + # cont_edu_cert_person_data['updated_on'] = record['updated_on'] + + other_data = {} + other_data['other_guest_of'] = record['other_guest_of'] + other_data['other_guest_li'] = record['other_guest_li'] + + cont_edu_cert_person_data['other_json'] = json.dumps(other_data, indent=4) + + # Look up by email address and INSERT or UPDATE new cont_edu_cert_person record + # Process the cont_edu_cert_person data + log.debug(cont_edu_cert_person_data) + # log.debug('*** *** *** *** END TEST RUN *** *** *** ***') + # continue + if cont_edu_cert_person_rec_li_result := sql_select(table_name='v_cont_edu_cert_person', field_name='email', field_value=cont_edu_cert_person_data['email']): + if not isinstance(cont_edu_cert_person_rec_li_result, list): + # Pull out IDs and UPDATE existing cont_edu_cert_person record + log.debug('Found one record') + cont_edu_cert_person_rec = cont_edu_cert_person_rec_li_result + # person_id = cont_edu_cert_person_rec.get('person_id', None) + # user_id = cont_edu_cert_person_rec.get('user_id', None) + cont_edu_cert_person_data['id'] = cont_edu_cert_person_id + if cont_edu_cert_person_obj_up_result := sql_update(data=cont_edu_cert_person_data, table_name='cont_edu_cert_person'): + log.debug(cont_edu_cert_person_obj_up_result) + else: + log.warning(cont_edu_cert_person_obj_up_result) + continue # Something unexpected may have happened + else: + log.warning('Found more than one record') + log.warning(cont_edu_cert_person_rec_li_result) + # Do nothing + continue # Something unexpected may have happened + cont_edu_cert_person_rec_li = cont_edu_cert_person_rec_li_result + else: + # INSERT new record + log.debug('Found no records or something went wrong') + cont_edu_cert_person_data['account_id'] = account_id + if cont_edu_cert_person_obj_in_result := sql_insert(data=cont_edu_cert_person_data, table_name='cont_edu_cert_person'): + log.debug(cont_edu_cert_person_obj_in_result) + cont_edu_cert_person_id = cont_edu_cert_person_obj_in_result # Should be an int + cont_edu_cert_person_new = True # Need to UPDATE this record after the contact, address, and user data is processed + else: + log.warning(cont_edu_cert_person_obj_in_result) + continue # Something unexpected may have happened + + + # if cont_edu_cert_person_new: + # log.debug('Updating person record one more time since this is a new person') + # cont_edu_cert_person_data_up = {} + # cont_edu_cert_person_data_up['id'] = person_id + # cont_edu_cert_person_data_up['user_id'] = user_id + # random_password_string + # # Don't need to update with the new contact or address IDs that were just created. + + # if cont_edu_cert_person_obj_up_result := sql_update(data=cont_edu_cert_person_data_up, table_name='cont_edu_cert_person'): + # log.debug(cont_edu_cert_person_obj_up_result) + # else: + # log.warning(cont_edu_cert_person_obj_up_result) + # # break + # continue # Something unexpected may have happened + + cont_edu_cert_person_data_li.append(cont_edu_cert_person_data) + log.debug(f"Record processed: {cont_edu_cert_person_id} {cont_edu_cert_person_data['full_name']}") + # log.debug('*** *** *** *** END TEST RUN *** *** *** ***') + # break + + return mk_resp(data=cont_edu_cert_person_data_li)