def update_custom_unsub(token, reason): """Record a user's custom unsubscribe reason.""" ext = ExactTargetDataExt(settings.EXACTTARGET_USER, settings.EXACTTARGET_PASS) ext.add_record(settings.EXACTTARGET_DATA, ['TOKEN', 'UNSUBSCRIBE_REASON'], [token, reason])
def get_external_user_data(email=None, token=None, fields=None, database=None): database = database or settings.EXACTTARGET_DATA fields = fields or [ 'EMAIL_ADDRESS_', 'EMAIL_FORMAT_', 'COUNTRY_', 'LANGUAGE_ISO2', 'TOKEN', ] ext = ExactTargetDataExt(settings.EXACTTARGET_USER, settings.EXACTTARGET_PASS) try: user = ext.get_record(database, token or email, fields, 'TOKEN' if token else 'EMAIL_ADDRESS_') except NewsletterNoResultsException: return None user_data = { 'email': user['EMAIL_ADDRESS_'], 'format': user['EMAIL_FORMAT_'] or 'H', 'country': user['COUNTRY_'] or '', 'lang': user['LANGUAGE_ISO2'] or '', # Never None 'token': user['TOKEN'], } return user_data
def attempt_fix(ext_name, record, task, e): # Sometimes a user is in basket's database but not in # ExactTarget because the API failed or something. If that's # the case, any future API call will error because basket # won't add the required CREATED_DATE field. Try to add them # with it here. if e.message.find('CREATED_DATE_') != -1: record['CREATED_DATE_'] = gmttime() ext = ExactTargetDataExt(settings.EXACTTARGET_USER, settings.EXACTTARGET_PASS) ext.add_record(ext_name, record.keys(), record.values()) else: raise e
def look_for_user(database, email, token, fields): """Try to get the user's data from the specified ET database. If found and the database is not the 'Confirmed' database, return it (a dictionary, see get_user_data). If found and it's the 'Confirmed' database, just return True. If not found, return None. Any other exception just propagates and needs to be handled by the caller. """ ext = ExactTargetDataExt(settings.EXACTTARGET_USER, settings.EXACTTARGET_PASS) try: user = ext.get_record(database, email or token, fields, 'EMAIL_ADDRESS_' if email else 'TOKEN') except NewsletterNoResultsException: return None if database == settings.EXACTTARGET_CONFIRMATION: return True newsletters = [] for slug in newsletter_slugs(): vendor_id = slug_to_vendor_id(slug) flag = "%s_FLG" % vendor_id if user.get(flag, 'N') == 'Y': newsletters.append(slug) user_data = { 'status': 'ok', 'email': user['EMAIL_ADDRESS_'], 'format': user['EMAIL_FORMAT_'] or 'H', 'country': user['COUNTRY_'] or '', 'lang': user['LANGUAGE_ISO2'] or '', # Never None 'token': user['TOKEN'], 'created-date': user['CREATED_DATE_'], 'newsletters': newsletters, } return user_data
def add_sms_user_optin(mobile_number): record = {'Phone': mobile_number, 'SubscriberKey': mobile_number} data_ext = ExactTargetDataExt(settings.EXACTTARGET_USER, settings.EXACTTARGET_PASS) data_ext.add_record('Mobile_Subscribers', record.keys(), record.values())