Report the user's name and company to Marketo
Also fixes the API to report the other changes (username and email) as well
This commit is contained in:
parent
860942ece1
commit
1a61ef4e04
8 changed files with 78 additions and 24 deletions
|
@ -27,13 +27,29 @@ class _MarketoAnalyticsClient(object):
|
|||
self._munchkin_private_key = munchkin_private_key
|
||||
self._lead_source = lead_source
|
||||
|
||||
def create_lead(self, email, username):
|
||||
def _get_lead_metadata(self, given_name, family_name, company):
|
||||
metadata = {}
|
||||
if given_name:
|
||||
metadata['firstName'] = given_name
|
||||
|
||||
if family_name:
|
||||
metadata['lastName'] = family_name
|
||||
|
||||
if company:
|
||||
metadata['company'] = company
|
||||
|
||||
return metadata
|
||||
|
||||
def create_lead(self, email, username, given_name, family_name, company):
|
||||
lead_data = dict(
|
||||
email=email,
|
||||
Quay_Username__c=username,
|
||||
leadSource='Web - Product Trial',
|
||||
Lead_Source_Detail__c=self._lead_source,
|
||||
)
|
||||
|
||||
lead_data.update(self._get_lead_metadata(given_name, family_name, company))
|
||||
|
||||
self._marketo.create_update_leads(
|
||||
action='createOrUpdate',
|
||||
leads=[lead_data],
|
||||
|
@ -65,16 +81,30 @@ class _MarketoAnalyticsClient(object):
|
|||
lookupField='id',
|
||||
)
|
||||
|
||||
def change_username(self, email, new_username):
|
||||
found = self._find_leads_by_email(email)
|
||||
def change_metadata(self, email, given_name, family_name, company):
|
||||
lead_data = self._get_lead_metadata(given_name, family_name, company)
|
||||
if not lead_data:
|
||||
return
|
||||
|
||||
# Update using their user id.
|
||||
updated = [dict(id=lead['id'], Quay_Username__c=new_username) for lead in found]
|
||||
# Update using their email address.
|
||||
lead_data['email'] = email
|
||||
self._marketo.create_update_leads(
|
||||
action='updateOnly',
|
||||
leads=updated,
|
||||
leads=[lead_data],
|
||||
asyncProcessing=True,
|
||||
lookupField='id',
|
||||
lookupField='email',
|
||||
)
|
||||
|
||||
def change_username(self, email, new_username):
|
||||
# Update using their email.
|
||||
self._marketo.create_update_leads(
|
||||
action='updateOnly',
|
||||
leads=[{
|
||||
'email': email,
|
||||
'Quay_Username__c': new_username,
|
||||
}],
|
||||
asyncProcessing=True,
|
||||
lookupField='email',
|
||||
)
|
||||
|
||||
@AsyncExecutorWrapper.sync
|
||||
|
|
Reference in a new issue