notify reviewers via email when a changeset is proposed

This commit is contained in:
Laura Klünder 2017-12-20 13:44:36 +01:00
parent da115171d1
commit 2964ddf0f4
2 changed files with 26 additions and 0 deletions

View file

@ -18,6 +18,7 @@ from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
from c3nav.editor.models.changedobject import ApplyToInstanceError, ChangedObject
from c3nav.editor.tasks import send_changeset_proposed_notification
from c3nav.editor.wrappers import ModelInstanceWrapper, ModelWrapper, is_created_pk
from c3nav.mapdata.models import LocationSlug, MapUpdate
from c3nav.mapdata.models.locations import LocationRedirect
@ -517,6 +518,7 @@ class ChangeSet(models.Model):
self.last_update = update
self.last_state_update = update
self.save()
send_changeset_proposed_notification.delay(changeset=self)
def unpropose(self, user):
new_state = {'proposed': 'unproposed', 'reproposed': 'rejected'}[self.state]

24
src/c3nav/editor/tasks.py Normal file
View file

@ -0,0 +1,24 @@
import logging
from django.conf import settings
from django.contrib.auth.models import User
from django.core.mail import send_mail
from c3nav.celery import app
logger = logging.getLogger('c3nav')
@app.task(bind=True, max_retries=3)
def send_changeset_proposed_notification(self, changeset):
subject = '[c3nav] New Changeset by %s: %s' % (changeset.author.username, changeset.title)
for user in User.objects.filter(permissions__review_changesets=True):
if not user.email:
continue
text = (
('Hi %s!\n\n' % user.username) +
('A new Changeset has been proposed by %s:\n\n' % changeset.author.username) +
('---\n\n') +
(changeset.title+'\n\n'+changeset.description)
)
send_mail(subject, text, settings.MAIL_FROM, [user.email])