commit
4dbf3ab725
|
@ -13,7 +13,8 @@ from tempfile import SpooledTemporaryFile
|
||||||
import requests
|
import requests
|
||||||
from ckeditor.fields import RichTextField
|
from ckeditor.fields import RichTextField
|
||||||
from notification import models as notification
|
from notification import models as notification
|
||||||
from postmonkey import PostMonkey, MailChimpException
|
from mailchimp3 import MailChimp
|
||||||
|
from mailchimp3.mailchimpclient import MailChimpError
|
||||||
|
|
||||||
#django imports
|
#django imports
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
@ -95,7 +96,7 @@ from .bibmodels import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from .rh_models import Claim, RightsHolder
|
from .rh_models import Claim, RightsHolder
|
||||||
pm = PostMonkey(settings.MAILCHIMP_API_KEY)
|
mc_client = MailChimp(mc_api=settings.MAILCHIMP_API_KEY)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -1256,10 +1257,17 @@ class UserProfile(models.Model):
|
||||||
# use @example.org email addresses for testing!
|
# use @example.org email addresses for testing!
|
||||||
return False
|
return False
|
||||||
try:
|
try:
|
||||||
return settings.MAILCHIMP_NEWS_ID in pm.listsForEmail(email_address=self.user.email)
|
member = mc_client.lists.members.get(
|
||||||
except MailChimpException, e:
|
list_id=settings.MAILCHIMP_NEWS_ID,
|
||||||
if e.code != 215: # don't log case where user is not on a list
|
subscriber_hash=self.user.email
|
||||||
|
)
|
||||||
|
if member['status'] == 'subscribed':
|
||||||
|
return 'True'
|
||||||
|
except MailChimpError, e:
|
||||||
|
if e[0]['status'] != 404: # don't log case where user is not on a list
|
||||||
logger.error("error getting mailchimp status %s" % (e))
|
logger.error("error getting mailchimp status %s" % (e))
|
||||||
|
except ValueError, e:
|
||||||
|
logger.error("bad email address %s" % (self.user.email))
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.error("error getting mailchimp status %s" % (e))
|
logger.error("error getting mailchimp status %s" % (e))
|
||||||
return False
|
return False
|
||||||
|
@ -1267,7 +1275,7 @@ class UserProfile(models.Model):
|
||||||
def ml_subscribe(self, **kwargs):
|
def ml_subscribe(self, **kwargs):
|
||||||
if "@example.org" in self.user.email:
|
if "@example.org" in self.user.email:
|
||||||
# use @example.org email addresses for testing!
|
# use @example.org email addresses for testing!
|
||||||
return True
|
return
|
||||||
from regluit.core.tasks import ml_subscribe_task
|
from regluit.core.tasks import ml_subscribe_task
|
||||||
ml_subscribe_task.delay(self, **kwargs)
|
ml_subscribe_task.delay(self, **kwargs)
|
||||||
|
|
||||||
|
@ -1276,7 +1284,14 @@ class UserProfile(models.Model):
|
||||||
# use @example.org email addresses for testing!
|
# use @example.org email addresses for testing!
|
||||||
return True
|
return True
|
||||||
try:
|
try:
|
||||||
return pm.listUnsubscribe(id=settings.MAILCHIMP_NEWS_ID, email_address=self.user.email)
|
mc_client.lists.members.delete(
|
||||||
|
list_id=settings.MAILCHIMP_NEWS_ID,
|
||||||
|
subscriber_hash=self.user.email,
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
except MailChimpError, e:
|
||||||
|
if e[0]['status'] != 404: # don't log case where user is not on a list
|
||||||
|
logger.error("error getting mailchimp status %s" % (e))
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.error("error unsubscribing from mailchimp list %s" % (e))
|
logger.error("error unsubscribing from mailchimp list %s" % (e))
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -17,6 +17,10 @@ from django.utils.timezone import now
|
||||||
from notification.engine import send_all
|
from notification.engine import send_all
|
||||||
from notification import models as notification
|
from notification import models as notification
|
||||||
|
|
||||||
|
from mailchimp3 import MailChimp
|
||||||
|
from mailchimp3.mailchimpclient import MailChimpError
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
regluit imports
|
regluit imports
|
||||||
"""
|
"""
|
||||||
|
@ -33,6 +37,7 @@ from regluit.core.parameters import RESERVE, REWARDS, THANKS
|
||||||
from regluit.utils.localdatetime import date_today
|
from regluit.utils.localdatetime import date_today
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
mc_client = MailChimp(mc_api=settings.MAILCHIMP_API_KEY)
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def populate_edition(isbn):
|
def populate_edition(isbn):
|
||||||
|
@ -183,14 +188,17 @@ def convert_to_mobi(input_url, input_format="application/epub+zip"):
|
||||||
def generate_mobi_ebook_for_edition(edition):
|
def generate_mobi_ebook_for_edition(edition):
|
||||||
return mobigen.generate_mobi_ebook_for_edition(edition)
|
return mobigen.generate_mobi_ebook_for_edition(edition)
|
||||||
|
|
||||||
from postmonkey import PostMonkey, MailChimpException
|
|
||||||
pm = PostMonkey(settings.MAILCHIMP_API_KEY)
|
|
||||||
|
|
||||||
@task
|
@task
|
||||||
def ml_subscribe_task(profile, **kwargs):
|
def ml_subscribe_task(profile, **kwargs):
|
||||||
try:
|
try:
|
||||||
if not profile.on_ml:
|
if not profile.on_ml:
|
||||||
return pm.listSubscribe(id=settings.MAILCHIMP_NEWS_ID, email_address=profile.user.email, **kwargs)
|
data = {"email_address": profile.user.email, "status_if_new": "pending"}
|
||||||
|
mc_client.lists.members.create_or_update(
|
||||||
|
list_id=settings.MAILCHIMP_NEWS_ID,
|
||||||
|
subscriber_hash=profile.user.email,
|
||||||
|
data=data,
|
||||||
|
)
|
||||||
|
return True
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.error("error subscribing to mailchimp list %s" % (e))
|
logger.error("error subscribing to mailchimp list %s" % (e))
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -1010,10 +1010,11 @@ class MailingListTests(TestCase):
|
||||||
#mostly to check that MailChimp account is setp correctly
|
#mostly to check that MailChimp account is setp correctly
|
||||||
|
|
||||||
def test_mailchimp(self):
|
def test_mailchimp(self):
|
||||||
from postmonkey import PostMonkey
|
from mailchimp3 import MailChimp
|
||||||
pm = PostMonkey(settings.MAILCHIMP_API_KEY)
|
mc_client = MailChimp(settings.MAILCHIMP_API_KEY)
|
||||||
if settings.TEST_INTEGRATION:
|
if settings.TEST_INTEGRATION:
|
||||||
self.assertEqual(pm.ping(), "Everything's Chimpy!")
|
root = mc_client.root.get()
|
||||||
|
self.assertEqual(root[u'account_id'], u'15472878790f9faa11317e085')
|
||||||
self.user = User.objects.create_user('chimp_test', 'eric@gluejar.com', 'chimp_test')
|
self.user = User.objects.create_user('chimp_test', 'eric@gluejar.com', 'chimp_test')
|
||||||
self.assertTrue(self.user.profile.on_ml)
|
self.assertTrue(self.user.profile.on_ml)
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ oauth2==1.5.211
|
||||||
oauthlib==1.1.2
|
oauthlib==1.1.2
|
||||||
pandas==0.19.1
|
pandas==0.19.1
|
||||||
paramiko==1.14.1
|
paramiko==1.14.1
|
||||||
postmonkey==1.0b
|
mailchimp3==3.0.4
|
||||||
pycrypto==2.6
|
pycrypto==2.6
|
||||||
pymarc==3.0.2
|
pymarc==3.0.2
|
||||||
pyoai==2.5.0
|
pyoai==2.5.0
|
||||||
|
|
Loading…
Reference in New Issue