Working on Cvent API related
This commit is contained in:
@@ -18,7 +18,7 @@ from . import config
|
|||||||
from app.log import log, logging
|
from app.log import log, logging
|
||||||
|
|
||||||
# Import the routers here first:
|
# Import the routers here first:
|
||||||
from app.routers import api_crud, api, importing, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, event, event_badge, event_badge_template, event_exhibit, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, site, site_domain, user, websockets#, e_impexium
|
from app.routers import api_crud, api, importing, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, event, event_badge, event_badge_template, event_exhibit, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, site, site_domain, user, websockets, e_cvent#, e_impexium
|
||||||
|
|
||||||
from app.db_sql import db
|
from app.db_sql import db
|
||||||
|
|
||||||
@@ -316,6 +316,11 @@ app.include_router(
|
|||||||
#responses={404: {'description': 'Not found'}},
|
#responses={404: {'description': 'Not found'}},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
app.include_router(
|
||||||
|
e_cvent.router,
|
||||||
|
prefix='/e/cvent',
|
||||||
|
tags=['External Service: Cvent'],
|
||||||
|
)
|
||||||
# app.include_router(
|
# app.include_router(
|
||||||
# e_impexium.router,
|
# e_impexium.router,
|
||||||
# prefix='/e/impexium',
|
# prefix='/e/impexium',
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ def create_contact_obj(
|
|||||||
create_sub_obj: bool = False,
|
create_sub_obj: bool = False,
|
||||||
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
|
fail_any: bool = False, # Fail if any thing goes wrong for sub objects
|
||||||
) -> int|bool:
|
) -> int|bool:
|
||||||
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
# ### SECTION ### Secondary data validation
|
# ### SECTION ### Secondary data validation
|
||||||
|
|||||||
169
app/methods/e_cvent_methods.py
Normal file
169
app/methods/e_cvent_methods.py
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
import datetime, pprint, pytz, random, requests
|
||||||
|
from requests.auth import HTTPBasicAuth
|
||||||
|
|
||||||
|
from typing import Dict, List, Optional, Set, Union
|
||||||
|
from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator
|
||||||
|
|
||||||
|
from app.db_sql import redis_lookup_id_random, sql_insert, sql_select, sql_update
|
||||||
|
from app.lib_general import log, logging
|
||||||
|
|
||||||
|
from app.methods.person_methods import get_person_rec_w_external_id, load_person_obj, update_person_kiss
|
||||||
|
|
||||||
|
|
||||||
|
app = {}
|
||||||
|
app['client_id'] = '0oalt6dz82oSbN9ok1t7' # From Cvent Developer Portal
|
||||||
|
app['secret'] = 'gQY96qffZAuB_44k73C_hn_MHeByBS8LXHj1vPRm' # From Cvent Developer
|
||||||
|
|
||||||
|
api = {}
|
||||||
|
api['base_url'] = 'https://api-platform.cvent.com/ea' # Including /ea as the Cvent version. EA = Early Access
|
||||||
|
api['headers'] = {} # { 'Content-Type': content_type, 'Authorization': 'Basic '+str(cvent_authorization_base64) }
|
||||||
|
|
||||||
|
|
||||||
|
# def get_access_token(api, app):
|
||||||
|
def get_access_token():
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(locals())
|
||||||
|
|
||||||
|
log.debug(f'API data:\n{api}')
|
||||||
|
|
||||||
|
# api['access_token'] = 'eyJraWQiOiJXdWtMTUFGNFkxM1ZUQmFnV1I4WU94ZVdPU3dIYXM5RTRyaFhqc1p5X2JVIiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULmltZGJlbnJIbnE1Rjd4blhucEN2Y0ExTzdCWUtCUWhUTU1fQUdxd1Z0RUUiLCJpc3MiOiJodHRwczovL3Nzby5jdmVudC5jb20vb2F1dGgyL2F1c2kzbXowZjNvRENNMlRpMXQ3IiwiYXVkIjoiYXBpLXBsYXRmb3JtIiwiaWF0IjoxNjQzNjYxMTc1LCJleHAiOjE2NDM2NjQ3NzUsImNpZCI6IjBvYWx0NmR6ODJvU2JOOW9rMXQ3Iiwic2NwIjpbImV2ZW50L2NvbnRhY3QtZ3JvdXBzOnJlYWQiLCJldmVudC9jdXN0b20tZmllbGRzOnJlYWQiLCJldmVudC9jb250YWN0czpyZWFkLXNlbnNpdGl2ZSIsImV2ZW50L2NvbnRhY3RzOndyaXRlIiwiZXZlbnQvY29udGFjdHM6cmVhZCJdLCJzdWIiOiIwb2FsdDZkejgyb1NiTjlvazF0NyJ9.1BGae5F97OpRVlW_z7JFwhFuY5xSj-CTCdph4dy3mSW1fjSb2rXoTTMNqdBwssG8S5XD62MYabx1WpM9xHB1WPw4ydP3xDqpMDO_h1Im1wfdlkami8Xvm1vX293IibEG8sZwjmD7x1UoWE7svwLLKJ8yukpJXaQbrd3qhFpfCyyi-eFYLYYjRjkMaGSBDMQKUv9VV62afGNekkC3ARNJzUqe0Il6Wz7aj109q_gvFYr6XybYdMvXanWxoY9C2-b7g1AtmN7iGRqz2znIHLr7Vav8xvoXYXaWzaq1gbfd4QwrksBCaw4lpZWKJdM0bhCaiOiPGfKktGVQN2r0gaQ0nA'
|
||||||
|
|
||||||
|
if 'access_token' in api:
|
||||||
|
access_token = api.get('access_token')
|
||||||
|
log.info(f'Cvent Access Token found: {access_token}')
|
||||||
|
if 'expire_on' in api and datetime.datetime.now() < api['expire_on']:
|
||||||
|
expire_on = api.get('expire_on')
|
||||||
|
log.info(f'Cvent Access Token is current: {expire_on}')
|
||||||
|
return api
|
||||||
|
|
||||||
|
endpoint = '/oauth2/token'
|
||||||
|
uri = api['base_url']+endpoint
|
||||||
|
|
||||||
|
data = { 'grant_type': 'client_credentials', 'client_id': app['client_id'] }
|
||||||
|
|
||||||
|
log.debug(f'Oauth Token Request Data:\n{api}')
|
||||||
|
|
||||||
|
resp = requests.post(url=uri, data=data, auth=HTTPBasicAuth(app['client_id'], app['secret'])) # Sending as HTML form data
|
||||||
|
|
||||||
|
log.debug(f'Status Code: {resp.status_code}')
|
||||||
|
log.debug(f'Headers: {resp.headers}')
|
||||||
|
log.debug(f'Encoding: {resp.encoding}')
|
||||||
|
log.debug(f'JSON: {resp.json()}')
|
||||||
|
# log.debug('Text:', resp.text)
|
||||||
|
|
||||||
|
response_data = resp.json()
|
||||||
|
|
||||||
|
api['access_token'] = response_data['access_token']
|
||||||
|
api['expires_in'] = response_data['expires_in']
|
||||||
|
api['token_type'] = response_data['token_type']
|
||||||
|
|
||||||
|
# current_datetime = datetime.datetime.now()
|
||||||
|
# log.debug(type(current_datetime))
|
||||||
|
# log.debug(current_datetime)
|
||||||
|
|
||||||
|
# expires_in = response_data['expires_in']
|
||||||
|
# log.debug(type(expires_in))
|
||||||
|
# log.debug(expires_in)
|
||||||
|
|
||||||
|
api['expire_on'] = datetime.datetime.now() + datetime.timedelta(seconds=response_data['expires_in'])
|
||||||
|
|
||||||
|
# log.debug(type(api['expire_on']))
|
||||||
|
# log.debug(api['expire_on'])
|
||||||
|
|
||||||
|
api['headers']['Accept'] = 'application/json'
|
||||||
|
api['headers']['x-api-key'] = app['client_id']
|
||||||
|
api['headers']['Authorization'] = 'Bearer '+api['access_token']
|
||||||
|
|
||||||
|
log.debug(api)
|
||||||
|
|
||||||
|
# f = open("api_access.txt", "wb")
|
||||||
|
# f.write(pprint.pformat(api, indent=2, width=160))
|
||||||
|
# pickle.dump(api, f)
|
||||||
|
# f.close()
|
||||||
|
|
||||||
|
return api
|
||||||
|
|
||||||
|
|
||||||
|
def get_contact_custom_field_list(api):
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(locals())
|
||||||
|
|
||||||
|
endpoint = '/custom-fields'
|
||||||
|
uri = api['base_url']+endpoint
|
||||||
|
|
||||||
|
params = { 'filter': "category eq 'Contact'" }
|
||||||
|
|
||||||
|
resp = requests.get(url=uri, headers=api['headers'], params=params)
|
||||||
|
|
||||||
|
log.debug('Status Code:', resp.status_code)
|
||||||
|
log.debug('Headers:', resp.headers)
|
||||||
|
log.debug('Encoding:', resp.encoding)
|
||||||
|
log.debug('JSON:', resp.json())
|
||||||
|
# log.debug('Text:', resp.text)
|
||||||
|
|
||||||
|
response_data = resp.json()
|
||||||
|
|
||||||
|
# f = open('contact_custom_field_list.txt', 'w')
|
||||||
|
# f.write(pprint.pformat(response_data, indent=2, width=160))
|
||||||
|
|
||||||
|
return response_data
|
||||||
|
|
||||||
|
|
||||||
|
def get_contact_list(api, external_id=False):
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(locals())
|
||||||
|
|
||||||
|
endpoint = '/contacts'
|
||||||
|
uri = api['base_url']+endpoint
|
||||||
|
|
||||||
|
# External ID for IDAA: UUID = '609ab766-7d79-4a9d-a72c-f126412659ee'
|
||||||
|
# customField.609ab766-7d79-4a9d-a72c-f126412659ee eq external_id
|
||||||
|
|
||||||
|
params = {}
|
||||||
|
if external_id: params['filter'] = f"customField.609ab766-7d79-4a9d-a72c-f126412659ee eq '{external_id}'"
|
||||||
|
elif external_id is None:
|
||||||
|
params['filter'] = f"deleted eq 'False' and customField.609ab766-7d79-4a9d-a72c-f126412659ee lt '1'"
|
||||||
|
else: params['filter'] = f"deleted eq 'False'"
|
||||||
|
|
||||||
|
resp = requests.get(url=uri, headers=api['headers'], params=params)
|
||||||
|
|
||||||
|
response_data = resp.json()
|
||||||
|
|
||||||
|
# if external_id: filename = f'contact_{external_id}.txt'
|
||||||
|
# elif external_id is None: filename = f'contact_list_no_external_id.txt'
|
||||||
|
# else: filename = 'contact_list.txt'
|
||||||
|
|
||||||
|
# f = open(filename, 'w')
|
||||||
|
# f.write(pprint.pformat(response_data, indent=2, width=160))
|
||||||
|
|
||||||
|
return response_data
|
||||||
|
|
||||||
|
|
||||||
|
# def get_contact_id(api, contact_id):
|
||||||
|
def get_contact_id(contact_id):
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(locals())
|
||||||
|
|
||||||
|
# if 'access_token' in api: pass
|
||||||
|
# else: get_access_token()
|
||||||
|
get_access_token()
|
||||||
|
|
||||||
|
endpoint = f'/contacts/{contact_id}'
|
||||||
|
uri = api['base_url']+endpoint
|
||||||
|
|
||||||
|
params = {}
|
||||||
|
|
||||||
|
resp = requests.get(url=uri, headers=api['headers'], params=params)
|
||||||
|
|
||||||
|
response_data = resp.json()
|
||||||
|
log.debug(response_data)
|
||||||
|
|
||||||
|
if 'message' in response_data and response_data['message'] == 'Too Many Requests': return False
|
||||||
|
|
||||||
|
# filename = f'contact_{contact_id}.txt'
|
||||||
|
|
||||||
|
# f = open(filename, 'w')
|
||||||
|
# f.write(pprint.pformat(response_data, indent=2, width=160))
|
||||||
|
|
||||||
|
return response_data
|
||||||
@@ -64,10 +64,11 @@ def load_membership_person_obj(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
membership_person_obj = Membership_Person_Base(**membership_person_rec)
|
membership_person_obj = Membership_Person_Base(**membership_person_rec)
|
||||||
log.debug(membership_person_obj)
|
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
log.error(e.json())
|
log.error(e.json())
|
||||||
|
return False
|
||||||
|
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
log.debug(membership_person_obj)
|
log.debug(membership_person_obj)
|
||||||
|
|
||||||
# Updated 2021-06-24
|
# Updated 2021-06-24
|
||||||
@@ -522,16 +523,21 @@ def update_membership_person_obj(
|
|||||||
log.debug(type(membership_person_dict_obj))
|
log.debug(type(membership_person_dict_obj))
|
||||||
if isinstance(membership_person_dict_obj, dict):
|
if isinstance(membership_person_dict_obj, dict):
|
||||||
membership_person_dict = membership_person_dict_obj
|
membership_person_dict = membership_person_dict_obj
|
||||||
|
membership_person_dict['membership_person_id'] = membership_person_id
|
||||||
try:
|
try:
|
||||||
membership_person_obj = Person_Base(**membership_person_dict)
|
membership_person_obj = Membership_Person_Base(**membership_person_dict)
|
||||||
log.debug(membership_person_obj)
|
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
log.error(e.json())
|
log.error(e.json())
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
membership_person_obj = membership_person_dict_obj
|
membership_person_obj = membership_person_dict_obj
|
||||||
|
membership_person_obj.id = membership_person_id
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(membership_person_obj)
|
||||||
|
|
||||||
membership_person_dict = membership_person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_person_group_list', 'membership_person_profile', 'membership_person_type', 'membership_group', 'membership_group_list', 'membership_type', 'membership_type_list', 'person', 'product', 'created_on', 'updated_on'})
|
membership_person_dict = membership_person_obj.dict(by_alias=False, exclude_defaults=False, exclude_unset=True, exclude={'membership_cfg', 'membership_person_group_list', 'membership_person_profile', 'membership_person_type', 'membership_group', 'membership_group_list', 'membership_type', 'membership_type_list', 'person', 'product', 'created_on', 'updated_on'})
|
||||||
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
|
log.debug(membership_person_dict)
|
||||||
|
|
||||||
# ### SECTION ### Process data
|
# ### SECTION ### Process data
|
||||||
|
|
||||||
@@ -540,6 +546,7 @@ def update_membership_person_obj(
|
|||||||
table_name = 'membership_person',
|
table_name = 'membership_person',
|
||||||
rm_id_random = True,
|
rm_id_random = True,
|
||||||
): pass
|
): pass
|
||||||
|
elif membership_person_dict_up_result is None: pass
|
||||||
else:
|
else:
|
||||||
log.warning(f'Membership Person not updated.')
|
log.warning(f'Membership Person not updated.')
|
||||||
log.debug(membership_person_dict_up_result)
|
log.debug(membership_person_dict_up_result)
|
||||||
@@ -547,8 +554,8 @@ def update_membership_person_obj(
|
|||||||
|
|
||||||
membership_person_outline = {}
|
membership_person_outline = {}
|
||||||
membership_person_outline['membership_person_id'] = membership_person_id
|
membership_person_outline['membership_person_id'] = membership_person_id
|
||||||
membership_person_outline['account_id'] = account_id
|
# membership_person_outline['account_id'] = account_id
|
||||||
membership_person_outline['person_id'] = person_id
|
# membership_person_outline['person_id'] = person_id
|
||||||
|
|
||||||
membership_person_outline['membership_person_group_list'] = []
|
membership_person_outline['membership_person_group_list'] = []
|
||||||
membership_person_outline['membership_person_profile'] = {}
|
membership_person_outline['membership_person_profile'] = {}
|
||||||
@@ -604,13 +611,7 @@ def update_membership_person_obj(
|
|||||||
# if membership_person_type_id:
|
# if membership_person_type_id:
|
||||||
# update_membership_person_type_obj_result = update_membership_person_type_obj(
|
# update_membership_person_type_obj_result = update_membership_person_type_obj(
|
||||||
# membership_person_type_dict_obj = membership_person_type_obj,
|
# membership_person_type_dict_obj = membership_person_type_obj,
|
||||||
# membership_person_type_id = membership_person_type_id,
|
# membership_person_type_id = memberssql_update
|
||||||
# fail_any = fail_any,
|
|
||||||
# return_outline = return_outline,
|
|
||||||
# )
|
|
||||||
# if update_membership_person_type_obj_result:
|
|
||||||
# membership_person_outline['membership_person_type_id'] = membership_person_type_id
|
|
||||||
# pass
|
|
||||||
# else:
|
# else:
|
||||||
# pass
|
# pass
|
||||||
# else:
|
# else:
|
||||||
|
|||||||
@@ -313,6 +313,10 @@ def update_membership_person_type_obj(
|
|||||||
log.debug(f'Returning True')
|
log.debug(f'Returning True')
|
||||||
log.debug(membership_person_type_dict_up_result)
|
log.debug(membership_person_type_dict_up_result)
|
||||||
return True
|
return True
|
||||||
|
elif membership_person_type_dict_up_result is None:
|
||||||
|
log.debug(f'Returning True')
|
||||||
|
log.debug(membership_person_type_dict_up_result)
|
||||||
|
return None
|
||||||
else:
|
else:
|
||||||
log.warning(f'Membership Person Type not updated.')
|
log.warning(f'Membership Person Type not updated.')
|
||||||
log.debug(membership_person_type_dict_up_result)
|
log.debug(membership_person_type_dict_up_result)
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ def create_person_kiss(
|
|||||||
def update_person_kiss(
|
def update_person_kiss(
|
||||||
person_id: int,
|
person_id: int,
|
||||||
person_dict_obj: Person_Base,
|
person_dict_obj: Person_Base,
|
||||||
|
account_id: int|None = None,
|
||||||
contact_id: int|None = None,
|
contact_id: int|None = None,
|
||||||
organization_id: int|None = None,
|
organization_id: int|None = None,
|
||||||
user_id: int|None = None,
|
user_id: int|None = None,
|
||||||
@@ -168,6 +169,10 @@ def update_person_kiss(
|
|||||||
person_obj.id = person_id # Is this needed?
|
person_obj.id = person_id # Is this needed?
|
||||||
person_dict['id'] = person_id
|
person_dict['id'] = person_id
|
||||||
|
|
||||||
|
# Look for a account_id in the person_obj
|
||||||
|
# if account_id: pass
|
||||||
|
if account_id := person_obj.account_id: pass
|
||||||
|
|
||||||
# Look for a contact_id in the contact_obj
|
# Look for a contact_id in the contact_obj
|
||||||
if contact_id: pass
|
if contact_id: pass
|
||||||
elif person_obj.contact:
|
elif person_obj.contact:
|
||||||
@@ -429,12 +434,14 @@ def load_person_obj(
|
|||||||
inc_address = inc_address,
|
inc_address = inc_address,
|
||||||
inc_contact = inc_contact,
|
inc_contact = inc_contact,
|
||||||
inc_membership_cfg = inc_membership_cfg,
|
inc_membership_cfg = inc_membership_cfg,
|
||||||
inc_membership_group = inc_membership_group, # The primary membership group, if there is one.
|
# inc_membership_group = inc_membership_group, # The primary membership group, if there is one.
|
||||||
inc_membership_group_list = inc_membership_group_list, # All membership groups they are a part of.
|
# inc_membership_group_list = inc_membership_group_list, # All membership groups they are a part of.
|
||||||
|
inc_membership_person_group_list = inc_membership_person_group_list,
|
||||||
inc_membership_person_profile = inc_membership_person_profile,
|
inc_membership_person_profile = inc_membership_person_profile,
|
||||||
inc_membership_person_profile_cust = inc_membership_person_profile_cust,
|
# inc_membership_person_profile_cust = inc_membership_person_profile_cust,
|
||||||
inc_membership_type = inc_membership_type, # The primary membership type, if there is one.
|
inc_membership_person_type = inc_membership_person_type,
|
||||||
inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of.
|
# inc_membership_type = inc_membership_type, # The primary membership type, if there is one.
|
||||||
|
# inc_membership_type_list = inc_membership_type_list, # All the membership types they are a part of.
|
||||||
# inc_person = inc_person,
|
# inc_person = inc_person,
|
||||||
inc_product = inc_product,
|
inc_product = inc_product,
|
||||||
# inc_product_list = inc_product_list,
|
# inc_product_list = inc_product_list,
|
||||||
|
|||||||
@@ -108,8 +108,8 @@ class Membership_Person_Base(BaseModel):
|
|||||||
# membership_type_product_id_random: Optional[str]
|
# membership_type_product_id_random: Optional[str]
|
||||||
# membership_type_product_id: Optional[int] # The product they purchased to get this type
|
# membership_type_product_id: Optional[int] # The product they purchased to get this type
|
||||||
|
|
||||||
user_id_random: Optional[str]
|
# user_id_random: Optional[str]
|
||||||
user_id: Optional[int]
|
# user_id: Optional[int]
|
||||||
|
|
||||||
level: Optional[int] = Field(0, ge=0, lt=150)
|
level: Optional[int] = Field(0, ge=0, lt=150)
|
||||||
|
|
||||||
@@ -189,20 +189,24 @@ class Membership_Person_Base(BaseModel):
|
|||||||
|
|
||||||
@validator('id', always=True)
|
@validator('id', always=True)
|
||||||
def membership_person_id_lookup(cls, v, values, **kwargs):
|
def membership_person_id_lookup(cls, v, values, **kwargs):
|
||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.INFO)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values['id_random']:
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_person')
|
|
||||||
|
if id_random := values.get('id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='membership_person')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@validator('account_id', always=True)
|
@validator('account_id', always=True)
|
||||||
def account_id_lookup(cls, v, values, **kwargs):
|
def account_id_lookup(cls, v, values, **kwargs):
|
||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.INFO)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values.get('account_id_random'):
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
|
|
||||||
|
if id_random := values.get('account_id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='account')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# @validator('membership_group_id', always=True)
|
# @validator('membership_group_id', always=True)
|
||||||
@@ -225,47 +229,35 @@ class Membership_Person_Base(BaseModel):
|
|||||||
|
|
||||||
@validator('membership_type_id', always=True)
|
@validator('membership_type_id', always=True)
|
||||||
def membership_type_id_lookup(cls, v, values, **kwargs):
|
def membership_type_id_lookup(cls, v, values, **kwargs):
|
||||||
log.setLevel(logging.DEBUG)
|
log.setLevel(logging.INFO)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values.get('membership_type_id_random'):
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
|
|
||||||
|
if id_random := values.get('membership_type_id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='membership_type')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@validator('membership_person_type_id', always=True)
|
@validator('membership_person_type_id', always=True)
|
||||||
def membership_person_type_id_lookup(cls, v, values, **kwargs):
|
def membership_person_type_id_lookup(cls, v, values, **kwargs):
|
||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.INFO)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values.get('membership_person_type_id_random'):
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['membership_person_type_id_random'], table_name='membership_person_type')
|
|
||||||
|
if id_random := values.get('membership_person_type_id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='membership_person_type')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@validator('person_id', always=True)
|
@validator('person_id', always=True)
|
||||||
def person_id_lookup(cls, v, values, **kwargs):
|
def person_id_lookup(cls, v, values, **kwargs):
|
||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.INFO)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values.get('person_id_random'):
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['person_id_random'], table_name='person')
|
|
||||||
return None
|
|
||||||
|
|
||||||
# @validator('product_id', always=True)
|
if id_random := values.get('person_id_random'):
|
||||||
# def product_id_lookup(cls, v, values, **kwargs):
|
return redis_lookup_id_random(record_id_random=id_random, table_name='person')
|
||||||
# log.setLevel(logging.WARNING)
|
|
||||||
# log.debug(locals())
|
|
||||||
|
|
||||||
# if values['product_id_random']:
|
|
||||||
# return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
|
|
||||||
# return None
|
|
||||||
|
|
||||||
@validator('user_id', always=True)
|
|
||||||
def user_id_lookup(cls, v, values, **kwargs):
|
|
||||||
log.setLevel(logging.WARNING)
|
|
||||||
log.debug(locals())
|
|
||||||
|
|
||||||
if values.get('user_id_random'):
|
|
||||||
return redis_lookup_id_random(record_id_random=values['user_id_random'], table_name='user')
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
|
|||||||
@@ -91,11 +91,13 @@ class Membership_Person_Type_Base(BaseModel):
|
|||||||
|
|
||||||
@validator('id', always=True)
|
@validator('id', always=True)
|
||||||
def membership_person_type_id_lookup(cls, v, values, **kwargs):
|
def membership_person_type_id_lookup(cls, v, values, **kwargs):
|
||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.INFO)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values['id_random']:
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['id_random'], table_name='membership_person_type')
|
|
||||||
|
if id_random := values.get('id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='membership_person_type')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@validator('account_id', always=True)
|
@validator('account_id', always=True)
|
||||||
@@ -103,8 +105,10 @@ class Membership_Person_Type_Base(BaseModel):
|
|||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.WARNING)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values['account_id_random']:
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['account_id_random'], table_name='account')
|
|
||||||
|
if id_random := values.get('account_id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='account')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@validator('membership_type_id', always=True)
|
@validator('membership_type_id', always=True)
|
||||||
@@ -112,8 +116,10 @@ class Membership_Person_Type_Base(BaseModel):
|
|||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.WARNING)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values['membership_type_id_random']:
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['membership_type_id_random'], table_name='membership_type')
|
|
||||||
|
if id_random := values.get('membership_type_id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='membership_type')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@validator('product_id', always=True)
|
@validator('product_id', always=True)
|
||||||
@@ -121,8 +127,10 @@ class Membership_Person_Type_Base(BaseModel):
|
|||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.WARNING)
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if values['product_id_random']:
|
if isinstance(v, int) and v > 0: return v
|
||||||
return redis_lookup_id_random(record_id_random=values['product_id_random'], table_name='product')
|
|
||||||
|
if id_random := values.get('product_id_random'):
|
||||||
|
return redis_lookup_id_random(record_id_random=id_random, table_name='product')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
|
|||||||
@@ -3,15 +3,18 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Resp
|
|||||||
from pydantic import BaseModel, EmailStr, Field
|
from pydantic import BaseModel, EmailStr, Field
|
||||||
from typing import Dict, List, Optional, Set, Union
|
from typing import Dict, List, Optional, Set, Union
|
||||||
|
|
||||||
from app.lib_general import log, logging, secure_hash_string
|
from app.lib_general import log, logging, secure_hash_string, verify_secure_hash_string, common_route_params, Common_Route_Params
|
||||||
from app.config import settings
|
from app.config import settings
|
||||||
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
|
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
|
||||||
|
|
||||||
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
|
from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
|
||||||
|
|
||||||
from app.methods.e_cvent_methods import get_customer_list, get_customer, get_custom_fields
|
from app.methods.e_cvent_methods import get_access_token, get_contact_custom_field_list, get_contact_list, get_contact_id
|
||||||
|
from app.methods.person_methods import get_person_rec_list, get_person_rec_w_external_id, load_person_obj, update_person_kiss
|
||||||
|
from app.methods.membership_person_methods import create_membership_person_obj, update_membership_person_obj
|
||||||
|
|
||||||
from app.models.response_models import Resp_Body_Base, mk_resp
|
from app.models.response_models import Resp_Body_Base, mk_resp
|
||||||
|
from app.models.person_models import Person_Base
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
@@ -21,19 +24,38 @@ router = APIRouter()
|
|||||||
# Updated 2022-01-28
|
# Updated 2022-01-28
|
||||||
@router.get('/person/{e_person_id}', response_model=Resp_Body_Base)
|
@router.get('/person/{e_person_id}', response_model=Resp_Body_Base)
|
||||||
async def get_person(
|
async def get_person(
|
||||||
e_person_id: str = Query(..., min_length=36, max_length=36), # UUID v4
|
e_person_id: str = Query(..., min_length=36, max_length=36), # UUID v4; actually the Cvent Contact UUID for a person
|
||||||
|
|
||||||
commons: Common_Route_Params = Depends(common_route_params),
|
commons: Common_Route_Params = Depends(common_route_params),
|
||||||
):
|
):
|
||||||
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
if cvent_customer_obj_result := get_customer(customer_id=e_person_id):
|
# current_datetime = datetime.datetime.now()
|
||||||
customer_obj = cvent_customer_obj_result
|
# log.debug(type(current_datetime))
|
||||||
|
# log.debug(current_datetime)
|
||||||
|
|
||||||
|
# expires_in = 3600
|
||||||
|
# log.debug(type(expires_in))
|
||||||
|
# log.debug(expires_in)
|
||||||
|
|
||||||
|
# future_datetime = current_datetime + datetime.timedelta(seconds=3600)
|
||||||
|
# log.debug(type(future_datetime))
|
||||||
|
# log.debug(future_datetime)
|
||||||
|
|
||||||
|
# return mk_resp(data=False, status_code=501, response=commons.response, status_message='Testing...')
|
||||||
|
|
||||||
|
if cvent_contact_obj_result := get_contact_id(contact_id=e_person_id):
|
||||||
|
cvent_contact_obj = cvent_contact_obj_result
|
||||||
else:
|
else:
|
||||||
log.info(f'Cvent contact not found with ID: {e_person_id}')
|
log.info(f'Cvent contact not found with ID: {e_person_id}')
|
||||||
return mk_resp(data=None, status_code=404, response=commons.response) # Not Found
|
return mk_resp(data=None, status_code=404, response=commons.response) # Not Found
|
||||||
|
|
||||||
|
account_id = commons.x_account_id
|
||||||
|
|
||||||
|
# return mk_resp(data=False, status_code=501, response=commons.response, status_message='Testing...')
|
||||||
|
|
||||||
|
|
||||||
# Important contact fields:
|
# Important contact fields:
|
||||||
# id (UUID v4)
|
# id (UUID v4)
|
||||||
# type { id, name } for contact type (membership type)
|
# type { id, name } for contact type (membership type)
|
||||||
@@ -56,50 +78,57 @@ async def get_person(
|
|||||||
# homeAddress { address1, address2, address3, city, country, countryCode, postalCode, region, regionCode }
|
# homeAddress { address1, address2, address3, city, country, countryCode, postalCode, region, regionCode }
|
||||||
|
|
||||||
person_data = {}
|
person_data = {}
|
||||||
if custom_field_list := customer_obj.get('customFields'): # List
|
if custom_field_list := cvent_contact_obj.get('customFields'): # List
|
||||||
for custom_field in custom_field_list:
|
for custom_field in custom_field_list:
|
||||||
# Get the External ID created by OSIT
|
# Get the External ID created by OSIT
|
||||||
if custom_field.get('id') == '609ab766-7d79-4a9d-a72c-f126412659ee':
|
if custom_field.get('id') == '609ab766-7d79-4a9d-a72c-f126412659ee':
|
||||||
person_data['external_id'] = custom_field.get('value')
|
person_data['external_id'] = custom_field.get('value')[0]
|
||||||
|
|
||||||
# person_data['pronouns'] = ???
|
# person_data['pronouns'] = ???
|
||||||
person_data['informal_name'] = customer_obj.get('nickname')
|
person_data['informal_name'] = cvent_contact_obj.get('nickname')
|
||||||
person_data['title_names'] = customer_obj.get('prefix')
|
person_data['title_names'] = cvent_contact_obj.get('prefix')
|
||||||
person_data['given_name'] = customer_obj.get('firstName')
|
person_data['given_name'] = cvent_contact_obj.get('firstName')
|
||||||
person_data['middle_name'] = customer_obj.get('middleName')
|
person_data['middle_name'] = cvent_contact_obj.get('middleName')
|
||||||
person_data['family_name'] = customer_obj.get('lastName')
|
person_data['family_name'] = cvent_contact_obj.get('lastName')
|
||||||
person_data['designations'] = customer_obj.get('designation')
|
person_data['designations'] = cvent_contact_obj.get('designation')
|
||||||
person_data['professional_title'] = customer_obj.get('title')
|
person_data['professional_title'] = cvent_contact_obj.get('title')
|
||||||
|
|
||||||
person_data['affiliations'] = customer_obj.get('company')
|
person_data['affiliations'] = cvent_contact_obj.get('company')
|
||||||
|
log.debug(person_data)
|
||||||
|
|
||||||
contact_data = {}
|
contact_data = {}
|
||||||
contact_data['email'] = customer_obj.get('email')
|
contact_data['email'] = cvent_contact_obj.get('email')
|
||||||
contact_data['cc_email'] = customer_obj.get('ccEmail')
|
contact_data['cc_email'] = cvent_contact_obj.get('ccEmail')
|
||||||
contact_data['phone_mobile'] = customer_obj.get('mobilePhone')
|
contact_data['phone_mobile'] = cvent_contact_obj.get('mobilePhone')
|
||||||
contact_data['phone_home'] = customer_obj.get('homePhone')
|
contact_data['phone_home'] = cvent_contact_obj.get('homePhone')
|
||||||
contact_data['phone_office'] = customer_obj.get('workPhone')
|
contact_data['phone_office'] = cvent_contact_obj.get('workPhone')
|
||||||
|
log.debug(contact_data)
|
||||||
|
|
||||||
address_data = {}
|
address_data = {}
|
||||||
address_data['line_1'] = customer_obj.get('homeAddress').get('address1')
|
address_data['line_1'] = cvent_contact_obj.get('homeAddress').get('address1')
|
||||||
address_data['line_2'] = customer_obj.get('homeAddress').get('address2')
|
address_data['line_2'] = cvent_contact_obj.get('homeAddress').get('address2')
|
||||||
address_data['line_3'] = customer_obj.get('homeAddress').get('address3')
|
address_data['line_3'] = cvent_contact_obj.get('homeAddress').get('address3')
|
||||||
address_data['city'] = customer_obj.get('homeAddress').get('city')
|
address_data['city'] = cvent_contact_obj.get('homeAddress').get('city')
|
||||||
address_data['state_province'] = customer_obj.get('homeAddress').get('region')
|
address_data['state_province'] = cvent_contact_obj.get('homeAddress').get('region')
|
||||||
country_subdivision_code = customer_obj.get('homeAddress').get('regionCode') +'-'+customer_obj.get('homeAddress').get('countryCode')
|
country_subdivision_code = cvent_contact_obj.get('homeAddress').get('countryCode') +'-'+cvent_contact_obj.get('homeAddress').get('regionCode')
|
||||||
address_data['country_subdivision_code'] = customer_obj.get('homeAddress').get('regionCode')
|
address_data['country_subdivision_code'] = country_subdivision_code
|
||||||
address_data['postal_code'] = customer_obj.get('homeAddress').get('postalCode')
|
address_data['postal_code'] = cvent_contact_obj.get('homeAddress').get('postalCode')
|
||||||
address_data['country_alpha_2_code'] = customer_obj.get('homeAddress').get('countryCode')
|
address_data['country_alpha_2_code'] = cvent_contact_obj.get('homeAddress').get('countryCode')
|
||||||
address_data['country'] = customer_obj.get('homeAddress').get('country')
|
address_data['country'] = cvent_contact_obj.get('homeAddress').get('country')
|
||||||
address_data['country_alpha_2_code'] = customer_obj.get('homeAddress').get('countryCode')
|
address_data['country_alpha_2_code'] = cvent_contact_obj.get('homeAddress').get('countryCode')
|
||||||
|
log.debug(address_data)
|
||||||
|
contact_data['address'] = address_data
|
||||||
|
person_data['contact'] = contact_data
|
||||||
|
|
||||||
membership = {}
|
membership_person_data = {}
|
||||||
membership['first_start_on'] = customer_obj.get('membership').get('joined') # A trigger should update 'first_start_on' if needed???
|
membership_person_data['first_start_on'] = cvent_contact_obj.get('membership').get('joined') # A trigger should update 'first_start_on' if needed???
|
||||||
membership['start_on'] = customer_obj.get('membership').get('lastRenewal') # A trigger should update 'first_start_on' if needed???
|
membership_person_data['start_on'] = cvent_contact_obj.get('membership').get('lastRenewal') # A trigger should update 'first_start_on' if needed???
|
||||||
membership['end_on'] = customer_obj.get('membership').get('expiration')
|
membership_person_data['end_on'] = cvent_contact_obj.get('membership').get('expiration')
|
||||||
|
log.debug(membership_person_data)
|
||||||
|
|
||||||
membership_type_id = customer_obj.get('type').get('id')
|
membership_type_cvent_id = cvent_contact_obj.get('type').get('id')
|
||||||
membership_type_name = customer_obj.get('type').get('name')
|
membership_type_cvent_name = cvent_contact_obj.get('type').get('name')
|
||||||
|
log.info(f'Found Cvent Membership Type Named: {membership_type_cvent_name}')
|
||||||
# 'id': '5EB898D8-C253-482C-A93A-0B6667C26E04', 'name': 'Al-Anon Member'
|
# 'id': '5EB898D8-C253-482C-A93A-0B6667C26E04', 'name': 'Al-Anon Member'
|
||||||
# 'id': 'A20358C5-0F6C-47AF-9843-BA9483A9D767', 'name': 'Al-Anon Non-Member'
|
# 'id': 'A20358C5-0F6C-47AF-9843-BA9483A9D767', 'name': 'Al-Anon Non-Member'
|
||||||
# 'id': 'A01900AB-496A-48A1-9B04-C2874651227E', 'name': 'Member'
|
# 'id': 'A01900AB-496A-48A1-9B04-C2874651227E', 'name': 'Member'
|
||||||
@@ -116,23 +145,101 @@ async def get_person(
|
|||||||
# 'id': '71D07118-C24D-4B2E-888D-56AC1B941495', 'name': "IDAA 20's Guest Registration"
|
# 'id': '71D07118-C24D-4B2E-888D-56AC1B941495', 'name': "IDAA 20's Guest Registration"
|
||||||
# 'id': 'DA17F721-9924-43E3-A31F-C567BA96DC64', 'name': 'IDAA Teen (13-19 years)'
|
# 'id': 'DA17F721-9924-43E3-A31F-C567BA96DC64', 'name': 'IDAA Teen (13-19 years)'
|
||||||
|
|
||||||
if membership_type_name == 'Al-Anon Member' or membership_type_name == 'Al-Anon Members':
|
membership_person_data = {}
|
||||||
|
membership_person_type_data = {}
|
||||||
|
if membership_type_cvent_name == 'Al-Anon Member' or membership_type_cvent_name == 'Al-Anon Members':
|
||||||
|
# membership_person_data['membership_type_id'] = 6
|
||||||
membership_person_type_data['membership_type_id'] = 6
|
membership_person_type_data['membership_type_id'] = 6
|
||||||
membership_person_type_data['product_id'] = 13
|
membership_person_type_data['product_id'] = 13
|
||||||
membership_person_data['level'] = 1
|
# membership_person_data['level'] = 1
|
||||||
membership_person_type_data['level'] = 1
|
membership_person_type_data['level'] = 1
|
||||||
elif membership_type_name == 'Annual Contribution' or membership_type_name == 'Annual Contributions': # Unsure... making affiliate
|
elif membership_type_cvent_name == 'Annual Contribution' or membership_type_cvent_name == 'Annual Contributions': # Unsure... making affiliate
|
||||||
|
# membership_person_data['membership_type_id'] = 8
|
||||||
membership_person_type_data['membership_type_id'] = 8
|
membership_person_type_data['membership_type_id'] = 8
|
||||||
membership_person_type_data['product_id'] = 13
|
membership_person_type_data['product_id'] = 13
|
||||||
membership_person_data['level'] = 3
|
# membership_person_data['level'] = 3
|
||||||
membership_person_type_data['level'] = 3
|
membership_person_type_data['level'] = 3
|
||||||
elif membership_type_name == 'Doctoral Qualifying Member' or membership_type_name == 'Doctoral Qualifying Members':
|
elif membership_type_cvent_name == 'Doctoral Qualifying Member' or membership_type_cvent_name == 'Doctoral Qualifying Members':
|
||||||
membership_person_type_data['membership_type_id'] = 5
|
membership_person_data['membership_type_id'] = 5
|
||||||
|
# membership_person_type_data['membership_type_id'] = 5
|
||||||
membership_person_type_data['product_id'] = 4
|
membership_person_type_data['product_id'] = 4
|
||||||
membership_person_data['level'] = 1
|
# membership_person_data['level'] = 1
|
||||||
membership_person_type_data['level'] = 1
|
membership_person_type_data['level'] = 1
|
||||||
elif membership_type_name == 'Student Member' or membership_type_name == 'Student Members':
|
elif membership_type_cvent_name == 'Student Member' or membership_type_cvent_name == 'Student Members':
|
||||||
|
# membership_person_data['membership_type_id'] = 7
|
||||||
membership_person_type_data['membership_type_id'] = 7
|
membership_person_type_data['membership_type_id'] = 7
|
||||||
membership_person_type_data['product_id'] = 14
|
membership_person_type_data['product_id'] = 14
|
||||||
membership_person_data['level'] = 1
|
# membership_person_data['level'] = 1
|
||||||
membership_person_type_data['level'] = 1
|
membership_person_type_data['level'] = 1
|
||||||
|
|
||||||
|
membership_person_type_data['first_start_on'] = datetime.datetime.strptime(cvent_contact_obj.get('membership').get('joined'), '%Y-%m-%d')
|
||||||
|
membership_person_type_data['start_on'] = datetime.datetime.strptime(cvent_contact_obj.get('membership').get('lastRenewal'), '%Y-%m-%d')
|
||||||
|
membership_person_type_data['end_on'] = datetime.datetime.strptime(cvent_contact_obj.get('membership').get('lastRenewal'), '%Y-%m-%d')
|
||||||
|
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()
|
||||||
|
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:
|
||||||
|
membership_person_type_data['lu_membership_type_status_id'] = 7 # 7 = inactive; expiration is > now
|
||||||
|
|
||||||
|
|
||||||
|
membership_person_data['enable'] = True
|
||||||
|
membership_person_type_data['enable'] = True
|
||||||
|
|
||||||
|
membership_person_data['membership_person_type'] = membership_person_type_data
|
||||||
|
log.debug(membership_person_data)
|
||||||
|
|
||||||
|
if person_external_id := person_data.get('external_id') and 1==3:
|
||||||
|
log.info(f'Looking up person with External ID: {person_external_id}')
|
||||||
|
if result := get_person_rec_w_external_id(account_id=account_id, external_id=person_external_id):
|
||||||
|
log.debug(result)
|
||||||
|
person_id = result.get('person_id')
|
||||||
|
log.info(f'Person ID {person_id} found.')
|
||||||
|
|
||||||
|
person_obj = load_person_obj(person_id=person_id, inc_address=True, inc_contact=True, inc_membership_person=True, inc_membership_person_type=True)
|
||||||
|
log.debug(person_obj)
|
||||||
|
|
||||||
|
person_data['id'] = person_id
|
||||||
|
person_data['account_id'] = account_id
|
||||||
|
person_data['contact']['id'] = person_obj.contact.id
|
||||||
|
person_data['contact']['address']['id'] = person_obj.contact.address.id
|
||||||
|
log.debug(person_data)
|
||||||
|
|
||||||
|
membership_person_id = person_obj.membership_person.id
|
||||||
|
membership_person_data['id'] = person_obj.membership_person.id
|
||||||
|
membership_person_data['membership_person_type']['id'] = person_obj.membership_person.membership_person_type.id
|
||||||
|
if update_membership_person_obj(membership_person_id=membership_person_id, membership_person_dict_obj=membership_person_data):
|
||||||
|
log.info(f'Updated Membership Person ID: {membership_person_id}')
|
||||||
|
else:
|
||||||
|
log.info(f'Did not update Membership Person ID: {membership_person_id}')
|
||||||
|
|
||||||
|
|
||||||
|
person_data['membership_person'] = membership_person_data
|
||||||
|
|
||||||
|
return mk_resp(data=person_data, status_message='Updated and loaded person based on Cvent contact information', response=commons.response)
|
||||||
|
|
||||||
|
# try:
|
||||||
|
# person_obj = Person_Base(**person_data)
|
||||||
|
# log.debug(person_obj)
|
||||||
|
# except ValidationError as e:
|
||||||
|
# log.error(e.json())
|
||||||
|
# return False
|
||||||
|
|
||||||
|
update_person_kiss(person_id=person_id, person_dict_obj=person_obj)
|
||||||
|
|
||||||
|
person_obj = load_person_obj(person_id=person_id, inc_address=True, inc_contact=True)
|
||||||
|
log.debug(person_obj)
|
||||||
|
|
||||||
|
|
||||||
|
return mk_resp(data=person_obj, status_message='Updated and loaded person based on Cvent contact information', response=commons.response)
|
||||||
|
elif email := cvent_contact_obj.get('email'):
|
||||||
|
log.info(f'Looking up person with Email Address: {email}')
|
||||||
|
if result := get_person_rec_list(for_obj_type='account', for_obj_id=account_id, email=email):
|
||||||
|
log.debug(result[0])
|
||||||
|
person_id = result[0].get('person_id')
|
||||||
|
log.info(f'Person ID {person_id} found.')
|
||||||
|
else:
|
||||||
|
log.info(f'External ID and Email Address were not found.')
|
||||||
|
|
||||||
|
return mk_resp(data=person_data, status_message='Got Cvent contact information', response=commons.response)
|
||||||
|
|||||||
Reference in New Issue
Block a user