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)
Esempio n. 2
0
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")
Esempio n. 3
0
 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)
Esempio n. 5
0
    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
Esempio n. 6
0
    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
Esempio n. 7
0
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")
Esempio n. 8
0
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)
Esempio n. 9
0
    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