def resubscribe(self): cs = CreateSend( {"api_key": Configuration.instance.get_setting("campaign_monitor_api_key")} ) now = datetime.now() for client in cs.clients(): client = Client( {"api_key": Configuration.instance.get_setting("campaign_monitor_api_key")}, client.ClientID ) for list in client.lists(): subscriber = Subscriber( {"api_key": Configuration.instance.get_setting("campaign_monitor_api_key")} ) try: response = subscriber.get(list.ListID, self.email) except BadRequest: continue date = datetime.strptime(response.Date, '%Y-%m-%d %H:%M:%S') diff = now - date if response.State != "Active" and ( date > now or diff.seconds < self.max_seconds ): response = subscriber.add( list.ListID, self.email, response.Name, None, True ) self.resubscribed_lists.append(list.ListID)
def capture_email(): success = False errors = {} if request.method == "POST" and 'honeypot' in request.form and len(request.form['honeypot']) < 1 and 'email' in request.form: if 'email' in request.form and len(request.form['email'])>0: session['email'] = request.form['email'] if len(request.form['name'])>0 and session['name'] is not None and request.form['name'].upper() == session['name'].upper(): user = User.query.filter_by(name=session['name']).first() user.email = request.form('email') else: create_user(request.form['email'],request.form['name']) save_answer() sub = Subscriber() sub.add(campaign_monitor_list_id,request.form['email'],request.form['name'],[],True) success = True else: errors['email'] = 'we need an email to keep in touch' if request.method == "POST" and 'ajax' in request.form: return render_template('email_question.html',success=success,form=request.form,errors={}) update_session_question('email',{'success':success,'errors':errors}) return redirect("/#email_question")
def sync_cm_subscriber(sender, instance=None, created=False, **kwargs): """Subscribe the subscriber to the campaign monitor list """ (name, email) = get_name_email(instance) if email: add_list = True add_subscriber = True list_map = None try: list_map = ListMap.objects.get(group=instance.group) list_id = list_map.list_id list = List(list_id) if list: subscriber_obj = Subscriber(list_id) try: list_stats = list.stats() #print 'number active:', list_stats.TotalActiveSubscribers add_list = False # at this stage, we're sure the list is ON the C. M. # check if this user has already subscribed, if not, subscribe it try: subscriber = subscriber_obj.get(list_id, email) if str(subscriber.State).lower == 'active': add_subscriber = False except BadRequest as br: pass except Unauthorized as e: list = List() except ListMap.DoesNotExist: list = List() if add_list: # this list might be deleted on campaign monitor, add it back list_id = list.create(cm_client_id, instance.group.name, "", False, "") subscriber_obj = Subscriber(list_id) if not list_map: list_map = ListMap() list_map.group = instance.group list_map.list_id = list_id list_map.save() if add_subscriber: email_address = subscriber_obj.add(list_id, email, name, [], True)
def add_subscriber(self, list): subscriber = Subscriber({ "api_key": Configuration.instance.get_setting("x_campaign3_api_key") }) # Check if the user is new to any list try: response = subscriber.get(list.list_id, self.email) except BadRequest: self.is_new = True else: if response.State != "Active": self.is_new = True response = subscriber.add(list.list_id, self.email, self.name, self.custom_fields, True)
def sync_cm_subscriber(sender, instance=None, created=False, **kwargs): """Subscribe the subscriber to the campaign monitor list Check if sync_newsletters is True. Do nothing if False. """ from django.core.validators import email_re if instance and instance.group and not instance.group.sync_newsletters: return (name, email) = get_name_email(instance) if email and email_re.match(email): add_list = False add_subscriber = True list_map = None # Append custom fields from the profile profile = None if hasattr(instance, 'member'): profile = instance.member.profile custom_data = [] if profile: fields = ['city', 'state', 'zipcode', 'country', 'sex', 'member_number'] for field in fields: data = {} data['Key'] = field data['Value'] = getattr(profile, field) if not data['Value']: data['Clear'] = True custom_data.append(data) try: list_map = ListMap.objects.get(group=instance.group) list_id = list_map.list_id list = List(list_id) if list: # subscriber setup subscriber_obj = Subscriber(list_id) try: list_stats = list.stats() # check if this user has already subscribed, if not, subscribe it try: subscriber = subscriber_obj.get(list_id, email) if str(subscriber.State).lower() == 'active': subscriber = subscriber_obj.update(email, name, custom_data, True) add_subscriber = False except BadRequest as br: pass except Unauthorized as e: list = List() add_list = True except ListMap.DoesNotExist: list = List() add_list = True try: if add_list: # this list might be deleted on campaign monitor, add it back list_id = list.create(cm_client_id, instance.group.name, "", False, "") # custom fields setup setup_custom_fields(list) subscriber_obj = Subscriber(list_id) if not list_map: list_map = ListMap() list_map.group = instance.group list_map.list_id = list_id list_map.save() if add_subscriber: email_address = subscriber_obj.add(list_id, email, name, custom_data, True) except BadRequest as br: pass
def sync_cm_subscriber(sender, instance=None, created=False, **kwargs): """Subscribe the subscriber to the campaign monitor list Check if sync_newsletters is True. Do nothing if False. """ from tendenci.apps.base.utils import validate_email from tendenci.apps.profiles.models import Profile if instance and instance.group and not instance.group.sync_newsletters: return (name, email) = get_name_email(instance) if email and validate_email(email): add_list = False add_subscriber = True list_map = None # Append custom fields from the profile profile = None if hasattr(instance, 'member'): try: profile = instance.member.profile except Profile.DoesNotExist: profile = None custom_data = [] if profile: fields = ['city', 'state', 'zipcode', 'country', 'sex', 'member_number'] for field in fields: data = {} data['Key'] = field data['Value'] = getattr(profile, field) if not data['Value']: data['Clear'] = True custom_data.append(data) try: list_map = ListMap.objects.get(group=instance.group) list_id = list_map.list_id alist = List(auth, list_id) if alist: # subscriber setup subscriber_obj = Subscriber(auth, list_id) try: # check if this user has already subscribed, if not, subscribe it try: subscriber = subscriber_obj.get(list_id, email) if str(subscriber.State).lower() == 'active': subscriber = subscriber_obj.update(email, name, custom_data, True) add_subscriber = False except BadRequest: pass except Unauthorized: alist = List(auth) add_list = True except ServerError: pass except ListMap.DoesNotExist: alist = List(auth) add_list = True try: if add_list: # this list might be deleted on campaign monitor, add it back list_id = alist.create(cm_client_id, instance.group.name, "", False, "") # custom fields setup setup_custom_fields(alist) subscriber_obj = Subscriber(auth, list_id) if not list_map: list_map = ListMap() list_map.group = instance.group list_map.list_id = list_id list_map.save() if add_subscriber: subscriber_obj.add(list_id, email, name, custom_data, True) # Returns email_address except BadRequest: pass
def add_subscriber(username): my_subscriber = Subscriber(client_auth) custom_fields = [{"Key": 'username', "Value": username}] my_subscriber.add("7c480b336839fbba731ca50c5d269666", "*****@*****.**", username, custom_fields, True, "yes") print("success")
for c in country_list: print(c) ''' #for t in tz_list: # print(t) my_list = List(account_auth) #my_list.create("9cde80d058d8e4955a076d33b6ec2294", "July 13 v8", "", False, "") #print(my_list.list_id) my_subscriber = Subscriber(a_test_client_auth) ''' my_custom_fields = [{"Key": "Favorite Cuisine", "Value": "Pizza"},{'Key': 'Hobby', "Value": "Football"}] new_custom_fields = [{"Key": "things i love", "Value": "new york"}, {"Key": "things i also love", "Value": "coding"}, {"Key": "things i hate", "Value": "watching tv"}] #my_subscriber.add("5926ac888cffa2665144bae9127a89a5", "*****@*****.**", "Subscriber", my_custom_fields, True, "yes") my_subscriber.add("5926ac888cffa2665144bae9127a89a5", "*****@*****.**", "Subscriber", new_custom_fields, True, "yes") ''' subscribers = [{"EmailAddress":"*****@*****.**","Name":"New Subscriber One","CustomFields":[{"Key":"website","Value":"http://example.com"},{"Key":"interests","Value":"magic"},{"Key":"interests","Value":"romantic walks"},{"Key":"age","Value":"","Clear":True}],"ConsentToTrack":"Yes"},{"EmailAddress":"*****@*****.**","Name":"New Subscriber Two","ConsentToTrack":"No"},{"EmailAddress":"*****@*****.**","Name":"New Subscriber Three","ConsentToTrack":"Unchanged"}] #my_subscriber.import_subscribers("5926ac888cffa2665144bae9127a89a5", subscribers, True, False, True)
def sync_cm_subscriber(sender, instance=None, created=False, **kwargs): """Subscribe the subscriber to the campaign monitor list """ from django.core.validators import email_re (name, email) = get_name_email(instance) if email and email_re.match(email): add_list = False add_subscriber = True list_map = None # Append custom fields from the profile profile = None if hasattr(instance, 'member'): profile = instance.member.profile custom_data = [] if profile: fields = ['city', 'state', 'zipcode', 'country', 'sex', 'member_number'] for field in fields: data = {} data['Key'] = field data['Value'] = getattr(profile, field) if not data['Value']: data['Clear'] = True custom_data.append(data) try: list_map = ListMap.objects.get(group=instance.group) list_id = list_map.list_id list = List(list_id) if list: # subscriber setup subscriber_obj = Subscriber(list_id) try: list_stats = list.stats() # check if this user has already subscribed, if not, subscribe it try: subscriber = subscriber_obj.get(list_id, email) if str(subscriber.State).lower() == 'active': subscriber = subscriber_obj.update(email, name, custom_data, True) add_subscriber = False except BadRequest as br: pass except Unauthorized as e: list = List() add_list = True except ListMap.DoesNotExist: list = List() add_list = True try: if add_list: # this list might be deleted on campaign monitor, add it back list_id = list.create(cm_client_id, instance.group.name, "", False, "") # custom fields setup setup_custom_fields(list) subscriber_obj = Subscriber(list_id) if not list_map: list_map = ListMap() list_map.group = instance.group list_map.list_id = list_id list_map.save() if add_subscriber: email_address = subscriber_obj.add(list_id, email, name, custom_data, True) except BadRequest as br: pass