From 4120191306c31dac18817244cb91697638e2d738 Mon Sep 17 00:00:00 2001 From: Giancarlo Razzolini Date: Fri, 25 Oct 2019 14:06:52 -0300 Subject: news: Change the news app to use the EmailMessage class to be able to include the mailman password Due to spamming to arch-announce mail list, we now use a poster password to make sure only authorized emails are allowed through to the list. --- news/views.py | 18 +++++++++++------- settings.py | 3 +++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/news/views.py b/news/views.py index 48295944..20a74c3c 100644 --- a/news/views.py +++ b/news/views.py @@ -1,5 +1,6 @@ from django import forms -from django.core.mail import send_mail +from django.conf import settings +from django.core.mail import EmailMessage from django.http import HttpResponse from django.shortcuts import get_object_or_404, redirect from django.template import loader @@ -39,16 +40,19 @@ class NewsCreateView(CreateView): newsitem.author = self.request.user newsitem.slug = find_unique_slug(News, newsitem.title) newsitem.save() - if newsitem.send_announce: + if newsitem.send_announce and settings.MAILMAN_PASSWORD: ctx = { 'news': newsitem, } + headers = { + 'Approved': settings.MAILMAN_PASSWORD, + } template = loader.get_template('news/news_email_notification.txt') - send_mail('[arch-announce] %s' % newsitem.title, - template.render(ctx), - '"Arch Linux: Recent news updates: %s" ' % newsitem.author.get_full_name(), - ['arch-announce@archlinux.org'], - fail_silently=True) + EmailMessage(subject='[arch-announce] %s' % newsitem.title, + body=template.render(ctx), + from_email='"Arch Linux: Recent news updates: %s" ' % newsitem.author.get_full_name(), + to=['arch-announce@archlinux.org'], + headers=headers).send() return super(NewsCreateView, self).form_valid(form) diff --git a/settings.py b/settings.py index e91b5aa6..3201f218 100644 --- a/settings.py +++ b/settings.py @@ -178,6 +178,9 @@ COUNTRIES_OVERRIDE = { # Make this unique, and don't share it with anybody. SECRET_KEY = '00000000000000000000000000000000000000000000000' +# Mailman poster password for announcements +MAILMAN_PASSWORD = '' + DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', -- cgit v1.2.3-55-g3dc8 From d3a927e4e0d8257f35f3e45e59ca9161ce0760f6 Mon Sep 17 00:00:00 2001 From: Giancarlo Razzolini Date: Fri, 25 Oct 2019 14:58:33 -0300 Subject: news: Make the check for MAILMAN_PASSWORD backwards compatible This makes the check work with previous versions of archweb while also taking into account downstreams that might not want or need this change. --- news/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/news/views.py b/news/views.py index 20a74c3c..24423cca 100644 --- a/news/views.py +++ b/news/views.py @@ -40,13 +40,13 @@ class NewsCreateView(CreateView): newsitem.author = self.request.user newsitem.slug = find_unique_slug(News, newsitem.title) newsitem.save() - if newsitem.send_announce and settings.MAILMAN_PASSWORD: + if newsitem.send_announce: ctx = { 'news': newsitem, } - headers = { - 'Approved': settings.MAILMAN_PASSWORD, - } + headers = dict() + if settings.MAILMAN_PASSWORD: + headers['Approved'] = settings.MAILMAN_PASSWORD template = loader.get_template('news/news_email_notification.txt') EmailMessage(subject='[arch-announce] %s' % newsitem.title, body=template.render(ctx), -- cgit v1.2.3-55-g3dc8