Work on importing person and membership data

This commit is contained in:
Scott Idem
2021-11-29 14:48:14 -05:00
parent 54a084d2cb
commit 6d19f687b2

View File

@@ -31,12 +31,14 @@ router = APIRouter()
async def importing_update_w_external_id( async def importing_update_w_external_id(
response: Response = Response, response: Response = Response,
): ):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals()) log.debug(locals())
account_id = 13 account_id = 13
full_file_path = 'admin/temp/import_person_external_id.csv' full_file_path = 'admin/temp/import_person_external_id.csv'
log.info(f'Starting import for Account ID {account_id} File Name: {full_file_path}')
df = pandas.read_csv(full_file_path, na_filter=False, dtype={'external_id':str, 'External ID':str, 'source_id':str, 'Source ID':str, 'email':str, 'Email Address':str}) df = pandas.read_csv(full_file_path, na_filter=False, dtype={'external_id':str, 'External ID':str, 'source_id':str, 'Source ID':str, 'email':str, 'Email Address':str})
log.debug(df) log.debug(df)
@@ -84,7 +86,7 @@ async def importing_update_w_external_id(
person_id = person_rec.get('person_id', None) person_id = person_rec.get('person_id', None)
person_id_random = person_rec.get('person_id_random', None) person_id_random = person_rec.get('person_id_random', None)
full_name = person_rec.get('full_name', None) full_name = person_rec.get('full_name', None)
log.info(f'Found one record. Person ID: {person_id_random} Person Full Name: {full_name}') log.warning(f'Found one record. Person ID: {person_id_random} Person Full Name: {full_name}')
# contact_id = person_rec.get('contact_id', None) # contact_id = person_rec.get('contact_id', None)
# address_id = person_rec.get('address_id', None) # address_id = person_rec.get('address_id', None)
# user_id = person_rec.get('user_id', None) # user_id = person_rec.get('user_id', None)
@@ -263,7 +265,7 @@ async def ins_up_person_contact_address_user_data(
if external_id := record.get('external_id', None): pass if external_id := record.get('external_id', None): pass
else: else:
log.info('No external ID was found.') log.warning('No external ID was found.')
continue continue
if source_id := record.get('source_id', None): pass if source_id := record.get('source_id', None): pass
@@ -273,7 +275,7 @@ async def ins_up_person_contact_address_user_data(
if email := record.get('email', None): pass if email := record.get('email', None): pass
else: else:
log.info('No email address was found.') log.warning('No email address was found.')
continue continue
log.debug(f'External ID: {external_id}, Source ID {source_id}, Email: {email}') log.debug(f'External ID: {external_id}, Source ID {source_id}, Email: {email}')
@@ -342,6 +344,8 @@ async def ins_up_person_contact_address_user_data(
if paper_mail_opt_out == 'Yes': person_data['paper_mail_allowed'] = False if paper_mail_opt_out == 'Yes': person_data['paper_mail_allowed'] = False
if paper_mail_opt_out == 'No' or paper_mail_opt_out == 0: person_data['paper_mail_allowed'] = True if paper_mail_opt_out == 'No' or paper_mail_opt_out == 0: person_data['paper_mail_allowed'] = True
person_data['enable'] = True
if created_on := record.get('created_on'): if created_on := record.get('created_on'):
person_data['created_on'] = datetime.datetime.strptime(created_on, '%d-%b-%Y') person_data['created_on'] = datetime.datetime.strptime(created_on, '%d-%b-%Y')
if updated_on := record.get('updated_on'): if updated_on := record.get('updated_on'):
@@ -373,12 +377,21 @@ async def ins_up_person_contact_address_user_data(
# continue # continue
data = {} data = {}
data['account_id'] = account_id data['account_id'] = account_id
data['external_id'] = external_id
data['external_import_id'] = external_import_id data['external_import_id'] = external_import_id
# sql = f"""
# SELECT *
# FROM `v_person` AS `person`
# WHERE person.account_id = :account_id
# AND person.external_import_id = :external_import_id
# LIMIT 1;
# """
sql = f""" sql = f"""
SELECT * SELECT *
FROM `v_person` AS `person` FROM `v_person` AS `person`
WHERE person.account_id = :account_id WHERE person.account_id = :account_id
AND person.external_import_id = :external_import_id AND person.external_id = :external_id
LIMIT 1; LIMIT 1;
""" """
@@ -413,7 +426,7 @@ async def ins_up_person_contact_address_user_data(
continue continue
else: else:
# INSERT new record # INSERT new record
log.debug('Found no records or something went wrong') log.debug('Found no records or something went wrong. Creating a new record...')
person_data['account_id'] = account_id person_data['account_id'] = account_id
if allow_insert_person: if allow_insert_person:
if person_obj_in_result := sql_insert(data=person_data, table_name='person'): if person_obj_in_result := sql_insert(data=person_data, table_name='person'):
@@ -475,6 +488,8 @@ async def ins_up_person_contact_address_user_data(
if record.get('linkedin_url'): contact_data['linkedin_url'] = record.get('linkedin_url') if record.get('linkedin_url'): contact_data['linkedin_url'] = record.get('linkedin_url')
if record.get('twitter_url'): contact_data['twitter_url'] = record.get('twitter_url') if record.get('twitter_url'): contact_data['twitter_url'] = record.get('twitter_url')
contact_data['enable'] = True
log.debug(contact_data) log.debug(contact_data)
if contact_id: if contact_id:
# UPDATE existing contact record # UPDATE existing contact record
@@ -535,6 +550,8 @@ async def ins_up_person_contact_address_user_data(
address_data['country_alpha_2_code'] = None address_data['country_alpha_2_code'] = None
if record.get('home_address_country_name', None): address_data['country'] = record.get('home_address_country_name', None) if record.get('home_address_country_name', None): address_data['country'] = record.get('home_address_country_name', None)
address_data['enable'] = True
log.debug(address_data) log.debug(address_data)
if address_id: if address_id:
# UPDATE existing address record # UPDATE existing address record
@@ -572,13 +589,13 @@ async def ins_up_person_contact_address_user_data(
user_data['email'] = record['email'] user_data['email'] = record['email']
user_data['email_verified'] = contact_data.get('email_active', False) # Not perfect, but a good start user_data['email_verified'] = contact_data.get('email_active', False) # Not perfect, but a good start
user_data['enable'] = False user_data['enable'] = True
user_data['enable_from'] = datetime.datetime.now(datetime.timezone.utc) user_data['enable_from'] = datetime.datetime.now(datetime.timezone.utc)
user_data['enable_to'] = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=365) user_data['enable_to'] = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(days=365)
user_data['super'] = False user_data['super'] = False
user_data['manager'] = False user_data['manager'] = False
user_data['administrator'] = False # user_data['administrator'] = False
user_data['public'] = False user_data['public'] = False
user_data['verified'] = True user_data['verified'] = True
@@ -590,7 +607,7 @@ async def ins_up_person_contact_address_user_data(
user_data['id'] = user_id user_data['id'] = user_id
user_data.pop('enable') user_data.pop('enable')
user_data.pop('email_verified') user_data.pop('email_verified')
user_data.pop('administrator') # user_data.pop('administrator')
user_data.pop('notes') user_data.pop('notes')
log.debug(user_data) log.debug(user_data)
if allow_update_user: if allow_update_user: