Updates for Cvent and IDAA custom status field

This commit is contained in:
Scott Idem
2022-03-15 17:06:55 -04:00
parent c380516855
commit 655ba409b4
2 changed files with 27 additions and 2 deletions

View File

@@ -474,6 +474,7 @@ def create_update_aether_person(
# Important variables used more than once.
person_external_id = None
status = None
log.debug(cvent_contact_obj.get('customFields'))
if custom_field_list := cvent_contact_obj.get('customFields'): # List
for custom_field in custom_field_list:
# Get the External ID created by OSIT
@@ -485,6 +486,11 @@ def create_update_aether_person(
if custom_field.get('id') == 'e4e51781-e1ec-4f61-8329-b5d29bec6886':
# person_data['external_id'] = custom_field.get('value')[0]
status = custom_field.get('value')[0].lower()
log.debug(f'Cvent Customer Custom Status: {status}')
if status: pass
else: status = 'unknown' # Will try to improve this guess in membership section below
log.debug(status)
email = cvent_contact_obj.get('email')
membership_person_id = None
membership_person_type_id = None
@@ -626,6 +632,17 @@ def create_update_aether_person(
membership_person_type_data['last_end_on'] = datetime.datetime.strptime(cvent_contact_obj.get('membership').get('expiration'), '%Y-%m-%d')
current_datetime = datetime.datetime.now()
log.debug(status)
if status == 'unknown':
log.info('Status is unknown. Going to try and make a guess...')
if membership_person_type_data['first_start_on'] < current_datetime and membership_person_type_data['end_on'] >= current_datetime:
person_data['status'] = 'approved' # approved and current
elif membership_person_type_data['first_start_on'] < current_datetime and membership_person_type_data['end_on'] < current_datetime:
person_data['status'] = 'approved' # approved but expired
else:
person_data['status'] = 'pending' # likely new?
log.debug(person_data['status'])
if membership_person_type_data['end_on'] >= current_datetime:
membership_person_type_data['lu_membership_type_status_id'] = 5 # 5 = active; expiration is > now
else:

View File

@@ -24,13 +24,21 @@ async def refresh_membership_status(
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
# sql = f"""
# UPDATE user
# INNER JOIN person ON user.id = person.user_id
# INNER JOIN membership_person ON person.id = membership_person.person_id
# SET user.email_verified = 1, user.enable = 1, user.enable_from = membership_person.start_on, user.enable_to = membership_person.end_on, user.verified = 1, user.group = 'pending_member'
# WHERE user.account_id = 13 AND membership_person.end_on >= NOW()
# AND (person.external_sys_id IS NULL OR person.external_sys_id = '');
# """
sql = f"""
UPDATE user
INNER JOIN person ON user.id = person.user_id
INNER JOIN membership_person ON person.id = membership_person.person_id
SET user.email_verified = 1, user.enable = 1, user.enable_from = membership_person.start_on, user.enable_to = membership_person.end_on, user.verified = 1, user.group = 'pending_member'
WHERE user.account_id = 13 AND membership_person.end_on >= NOW()
AND (person.external_sys_id IS NULL OR person.external_sys_id = '');
AND person.status = 'pending';
"""
if user_update_result := sql_update(sql=sql):
# Pull out IDs of existing person record
@@ -44,7 +52,7 @@ async def refresh_membership_status(
INNER JOIN membership_person ON person.id = membership_person.person_id
SET user.email_verified = 1, user.enable = 1, user.enable_from = membership_person.start_on, user.enable_to = membership_person.end_on, user.verified = 1, user.group = 'current_member'
WHERE user.account_id = 13 AND membership_person.end_on >= NOW()
AND (person.external_sys_id IS NOT NULL AND person.external_sys_id != '');
AND (person.status IS NULL OR person.status = 'approved');
"""
if user_update_result := sql_update(sql=sql):
# Pull out IDs of existing person record