From 89ea2e2b367a1de04408c98e06e73766b2b8e4a7 Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Tue, 27 Dec 2016 13:57:52 +0200 Subject: [PATCH 1/6] m --- emencia/django/newsletter/forms.py | 3 ++- emencia/django/newsletter/mailer.py | 3 +++ events/views.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/emencia/django/newsletter/forms.py b/emencia/django/newsletter/forms.py index cae37b70..41a2593e 100644 --- a/emencia/django/newsletter/forms.py +++ b/emencia/django/newsletter/forms.py @@ -224,7 +224,8 @@ class ContactForm(forms.ModelForm): self.instance = Contact.objects.get(email__iexact=email) return email except (Contact.DoesNotExist, ): - return email + pass + return email class ContactSettingsForm(forms.ModelForm): diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index 85f79411..e4dfae9a 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -332,9 +332,12 @@ class NewsLetterSender(object): return message_attachment def gen_attachment_logo(self, obj=None, prefix='logo_', resize=None, logo=None, **kwargs): + logo_path = None if obj is not None: if prefix == 'blog': logo = obj.get_blog_preview2() + if logo: + logo_path = logo.logo_path else: logo = getattr(obj, 'logo') if not logo: diff --git a/events/views.py b/events/views.py index 5768b162..c18430c8 100644 --- a/events/views.py +++ b/events/views.py @@ -122,7 +122,7 @@ class SubscribeView(FormView): try: contact = Contact.objects.filter(Q(user=user) | Q(email=user.email))[0] except (Contact.DoesNotExist, IndexError): - contact = Contact(defaults) + contact = Contact(**defaults) contact.save() return contact From d97a985db2840ad5c69cba34e6c9b90e9360d41e Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Tue, 27 Dec 2016 14:37:39 +0200 Subject: [PATCH 2/6] m --- emencia/django/newsletter/mailer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index e4dfae9a..4ba2db36 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -337,7 +337,7 @@ class NewsLetterSender(object): if prefix == 'blog': logo = obj.get_blog_preview2() if logo: - logo_path = logo.logo_path + logo_path = logo.file_path else: logo = getattr(obj, 'logo') if not logo: From 18e3717898a9ddded61f606b8d6f06d167cfdc5d Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Tue, 27 Dec 2016 14:45:27 +0200 Subject: [PATCH 3/6] m --- emencia/django/newsletter/mailer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index 4ba2db36..1f4118dd 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -340,7 +340,7 @@ class NewsLetterSender(object): logo_path = logo.file_path else: logo = getattr(obj, 'logo') - if not logo: + if not logo and not logo_path: logo_path = default_storage.path('newsletter/images/no-logo.png') else: logo_path = logo.path From 66b9873113fd79fe31abb74f9f0e16782f186515 Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Tue, 27 Dec 2016 14:51:37 +0200 Subject: [PATCH 4/6] m --- emencia/django/newsletter/mailer.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index 1f4118dd..ec98a7bc 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -335,14 +335,13 @@ class NewsLetterSender(object): logo_path = None if obj is not None: if prefix == 'blog': - logo = obj.get_blog_preview2() - if logo: - logo_path = logo.file_path + logo = getattr(obj.get_blog_preview2(), file_path) else: logo = getattr(obj, 'logo') - if not logo and not logo_path: + if not logo: logo_path = default_storage.path('newsletter/images/no-logo.png') else: + log.info(logo, type(logo), dir(logo)) logo_path = logo.path try: From 48fd32feb07978d97f652989b016930a10c11f91 Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Tue, 27 Dec 2016 15:04:05 +0200 Subject: [PATCH 5/6] m --- emencia/django/newsletter/mailer.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index ec98a7bc..e2504d4d 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -335,13 +335,12 @@ class NewsLetterSender(object): logo_path = None if obj is not None: if prefix == 'blog': - logo = getattr(obj.get_blog_preview2(), file_path) + logo_path = getattr(obj.get_blog_preview2(), 'file_path') else: logo = getattr(obj, 'logo') - if not logo: + if not logo or not logo_path: logo_path = default_storage.path('newsletter/images/no-logo.png') else: - log.info(logo, type(logo), dir(logo)) logo_path = logo.path try: From 06e8f48665255933646351f794b28d69c1e68f3d Mon Sep 17 00:00:00 2001 From: Alexander Burdeinyi Date: Tue, 27 Dec 2016 15:56:13 +0200 Subject: [PATCH 6/6] fixes --- emencia/django/newsletter/mailer.py | 23 ++++++++++++++++--- emencia/django/newsletter/utils/newsletter.py | 5 +++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index e2504d4d..d93d23b9 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -335,13 +335,16 @@ class NewsLetterSender(object): logo_path = None if obj is not None: if prefix == 'blog': - logo_path = getattr(obj.get_blog_preview2(), 'file_path') + preview = obj.get_blog_preview2() + if preview and preview.file_path: + logo_path = preview.file_path.path else: logo = getattr(obj, 'logo') - if not logo or not logo_path: + if not logo and not logo_path: logo_path = default_storage.path('newsletter/images/no-logo.png') - else: + elif logo and not logo_path: logo_path = logo.path + print(logo, logo_path, obj) try: ctype, encoding = mimetypes.guess_type(logo_path) @@ -571,6 +574,20 @@ class NewsLetterSender(object): params.update({'ab': self.ab_state}) ContactMailingStatus.objects.create(**params) +def test(): + from django.utils.translation import activate + activate('ru') + n = Newsletter.objects.get(pk=119) + m = Mailer(n, test=True) + m.smtp_connect() + m.attachments = m.build_daily_attachments() + for ct in m.expedition_list: + m.build_preheader_ctx(ct) + announce_context = ct.get_announce_context_v2() if m.announce else None + message = m.build_message(ct, announce_context) + m.smtp.sendmail(m.newsletter.header_sender, + ct.email, + message.as_string()) class Mailer(NewsLetterSender): """Mailer for generating and sending newsletters diff --git a/emencia/django/newsletter/utils/newsletter.py b/emencia/django/newsletter/utils/newsletter.py index 6ffb8fca..8eb19f01 100644 --- a/emencia/django/newsletter/utils/newsletter.py +++ b/emencia/django/newsletter/utils/newsletter.py @@ -35,8 +35,11 @@ def track_links(content, context): 'no-track' not in link_markup.get('rel', ''): link_href = link_markup['href'] link_title = link_markup.get('title', link_href) - link, created = Link.objects.get_or_create(url=link_href, + try: + link, created = Link.objects.get_or_create(url=link_href, defaults={'title': link_title}) + except Link.MultipleObjectsReturned: + link = Link.objects.filter(url=link_href)[0] link_markup['href'] = 'http://%s%s' % (context['domain'], reverse('newsletter_newsletter_tracking_link', args=[context['newsletter'].slug, context['uidb36'], context['token'],