comments: Mail bei neuem Kommentar
Veröffentlich am 18.02.2009, 21:53
Eines der Dinge, die ich in django.contrib.comments vermisse, ist eine E-Mail Benachrichtigung bei neuen Kommentaren. Nach etwas Suchen habe ich nur eine alte Variante aus dem Jahr 2006 gefunden.
Das nehme ich als Anlass, hier mal meine aktuelle - 1.0 kompatible - Umsetzung zu veröffentlichen.
Ich habe diesen Code einfach in die __init__.py meiner Blog App gespeichert (kann auch woanders gespeichert werden, hauptsache Django verarbeitet die Datei automatisch).
from django.contrib.comments.models import Comment
from django.contrib.sites.models import Site
from django.core.mail import mail_managers
from django.db.models import signals
def comment_notification(sender, instance, **kwargs):
subject = 'New Comment on %s' % instance.content_object
msg = 'http://%s%s\n\nComment:\n%s' % (
Site.objects.get_current().domain,
instance.content_object.get_absolute_url(),
instance.comment
)
mail_managers(subject, msg, fail_silently=True)
signals.post_save.connect(comment_notification, sender=Comment)
Wichtig: MANAGERS in der settings.py korrekt konfigurieren, z.B.:
MANAGERS = (
('Webmaster', 'mail@example.com'),
)