From: Radek Czajka Date: Wed, 29 Aug 2012 10:21:59 +0000 (+0200) Subject: notifications for authors X-Git-Url: https://git.mdrn.pl/prawokultury.git/commitdiff_plain/fe9a2cc82acbe73117398310b96e5740adee502c?ds=inline notifications for authors --- diff --git a/migdal/locale/pl/LC_MESSAGES/django.mo b/migdal/locale/pl/LC_MESSAGES/django.mo index ab57808..5c1a084 100644 Binary files a/migdal/locale/pl/LC_MESSAGES/django.mo and b/migdal/locale/pl/LC_MESSAGES/django.mo differ diff --git a/migdal/locale/pl/LC_MESSAGES/django.po b/migdal/locale/pl/LC_MESSAGES/django.po index c3ab6c9..e274e8b 100644 --- a/migdal/locale/pl/LC_MESSAGES/django.po +++ b/migdal/locale/pl/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: django-migdal 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-28 15:43+0200\n" -"PO-Revision-Date: 2012-08-28 16:41+0100\n" +"POT-Creation-Date: 2012-08-29 12:20+0200\n" +"PO-Revision-Date: 2012-08-29 12:21+0100\n" "Last-Translator: Radek Czajka \n" "Language-Team: FNP \n" "Language: Polish\n" @@ -47,7 +47,7 @@ msgid "latest" msgstr "ostatnie" #: feeds.py:32 -#: models.py:49 +#: models.py:52 msgid "entries" msgstr "wpisy" @@ -63,86 +63,96 @@ msgstr "Tytuł" msgid "Content" msgstr "Treść" -#: models.py:14 +#: models.py:17 msgid "taxonomy" msgstr "taksonomia" -#: models.py:18 +#: models.py:21 msgid "category" msgstr "kategoria" -#: models.py:19 -#: models.py:45 +#: models.py:22 +#: models.py:48 #: urls.py:41 #: urls.py:43 msgid "categories" msgstr "kategorie" -#: models.py:40 +#: models.py:43 msgid "author" msgstr "autor" -#: models.py:41 +#: models.py:44 msgid "author email" msgstr "e-mail autora" -#: models.py:42 +#: models.py:45 msgid "Used only to display gravatar and send notifications." msgstr "Używany tylko do wyświetlenia gravatara i wysyłania powiadomień." -#: models.py:43 +#: models.py:46 msgid "image" msgstr "obrazek" -#: models.py:44 +#: models.py:47 msgid "promoted" msgstr "promowane" -#: models.py:48 +#: models.py:51 msgid "entry" msgstr "wpis" -#: models.py:71 +#: models.py:93 +#, python-format +msgid "Your story has been published at %s." +msgstr "Twój wpis został opublikowany na stronie %s." + +#: models.py:101 msgid "needed" msgstr "potrzebne" -#: models.py:72 +#: models.py:102 msgid "Unneeded" msgstr "Niepotrzebne" -#: models.py:72 +#: models.py:102 msgid "Needed" msgstr "Potrzebne" -#: models.py:72 +#: models.py:102 msgid "Done" msgstr "Ukończone" -#: models.py:78 +#: models.py:108 msgid "title" msgstr "tytuł" -#: models.py:79 +#: models.py:109 msgid "lead" msgstr "lead" -#: models.py:80 -#: models.py:82 +#: models.py:110 +#: models.py:112 msgid "Use Textile syntax." msgstr "Włączona składnia Textile." -#: models.py:81 +#: models.py:111 msgid "body" msgstr "treść" -#: models.py:83 +#: models.py:113 msgid "published" msgstr "opublikowane" -#: models.py:88 +#: models.py:118 msgid "file" msgstr "plik" +#: models.py:136 +#, python-format +msgid "New comment under your story at %s." +msgstr "Nowy komentarz pod Twoim wpisem na stronie %s." + #: urls.py:38 #: urls.py:39 msgid "submit" diff --git a/migdal/models.py b/migdal/models.py index bce76e4..6ba28ee 100644 --- a/migdal/models.py +++ b/migdal/models.py @@ -2,13 +2,16 @@ # This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +from django.conf import settings +from django.contrib.sites.models import Site +from django.core.mail import send_mail from django.db import models +from django.template import loader, Context from django.utils.translation import get_language, ugettext_lazy as _, ugettext +from django_comments_xtd.models import XtdComment from markupfield.fields import MarkupField -from migdal.helpers import add_translatable from migdal import app_settings - - +from migdal.helpers import add_translatable class Category(models.Model): taxonomy = models.CharField(_('taxonomy'), max_length=32, @@ -36,7 +39,7 @@ class Entry(models.Model): type = models.CharField(max_length=16, choices=((t.db, t.slug) for t in app_settings.TYPES), db_index=True) - date = models.DateTimeField(auto_now_add=True, db_index=True) + date = models.DateTimeField(auto_now_add=True, db_index=True, editable=True) author = models.CharField(_('author'), max_length=128) author_email = models.EmailField(_('author email'), max_length=128, null=True, blank=True, help_text=_('Used only to display gravatar and send notifications.')) @@ -53,6 +56,16 @@ class Entry(models.Model): return self.title def save(self, *args, **kwargs): + if self.pk is not None: + orig = type(self).objects.get(pk=self.pk) + published_now = False + for lc, ln in settings.LANGUAGES: + if (not getattr(orig, "published_%s" % lc) and + getattr(self, "published_%s" % lc)): + published_now = True + if published_now: + self.notify_author_published() + # convert blank to null for slug uniqueness check to work for lc, ln in app_settings.OPTIONAL_LANGUAGES: slug_name = "slug_%s" % lc @@ -67,6 +80,23 @@ class Entry(models.Model): def get_type(self): return dict(app_settings.TYPES_DICT)[self.type] + def notify_author_published(self): + if not self.author_email: + return + site = Site.objects.get_current() + mail_text = loader.get_template('migdal/mail/published.txt').render( + Context({ + 'entry': self, + 'site': site, + })) + send_mail( + ugettext(u'Your story has been published at %s.') % site.domain, + mail_text, settings.SERVER_EMAIL, [self.author_email] + ) + + + + add_translatable(Entry, languages=app_settings.OPTIONAL_LANGUAGES, fields={ 'needed': models.CharField(_('needed'), max_length=1, db_index=True, choices=( ('n', _('Unneeded')), ('w', _('Needed')), ('y', _('Done'))), @@ -90,3 +120,21 @@ class Attachment(models.Model): def url(self): return self.file.url if self.file else '' + + + +def notify_new_comment(sender, instance, created, **kwargs): + if (created and isinstance(instance.content_object, Entry) and + instance.content_object.author_email): + site = Site.objects.get_current() + mail_text = loader.get_template('migdal/mail/new_comment.txt').render( + Context({ + 'comment': instance, + 'site': site, + })) + send_mail( + ugettext(u'New comment under your story at %s.') % site.domain, + mail_text, settings.SERVER_EMAIL, + [instance.content_object.author_email] + ) +models.signals.post_save.connect(notify_new_comment, sender=XtdComment) \ No newline at end of file diff --git a/migdal/templates/migdal/mail/new_comment.txt b/migdal/templates/migdal/mail/new_comment.txt new file mode 100755 index 0000000..d7074c2 --- /dev/null +++ b/migdal/templates/migdal/mail/new_comment.txt @@ -0,0 +1,15 @@ +{% load i18n %}{{ comment.content_object.author }}, + +Pod Twoim wpisem pojawił się nowy komentarz. + +{% language 'pl' %}{{ comment.content_object.title }} +http://{{ site.domain }}{{ comment.get_absolute_url }}{% endlanguage %} + + +Autor: {{ comment.name }} + +{{ comment.comment }} + + +-- +{{ site }} diff --git a/migdal/templates/migdal/mail/published.txt b/migdal/templates/migdal/mail/published.txt new file mode 100755 index 0000000..b99e1f3 --- /dev/null +++ b/migdal/templates/migdal/mail/published.txt @@ -0,0 +1,11 @@ +{% load i18n %}{{ entry.author }}, + +Twój wpis został opublikowany: + +{% language 'pl' %}{{ entry.title }} +http://{{ site.domain }}{{ entry.get_absolute_url }}{% endlanguage %} + +Dziękujemy! + +-- +{{ site }}