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:
Joseph Schorr 2016-11-09 15:29:53 -05:00
parent 860942ece1
commit 1a61ef4e04
8 changed files with 78 additions and 24 deletions

View file

@ -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