notifications for authors
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Wed, 29 Aug 2012 10:21:59 +0000 (12:21 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Wed, 29 Aug 2012 10:21:59 +0000 (12:21 +0200)
migdal/locale/pl/LC_MESSAGES/django.mo
migdal/locale/pl/LC_MESSAGES/django.po
migdal/models.py
migdal/templates/migdal/mail/new_comment.txt [new file with mode: 0755]
migdal/templates/migdal/mail/published.txt [new file with mode: 0755]

index ab57808..5c1a084 100644 (file)
Binary files a/migdal/locale/pl/LC_MESSAGES/django.mo and b/migdal/locale/pl/LC_MESSAGES/django.mo differ
index c3ab6c9..e274e8b 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: django-migdal 0.1\n"
 "Report-Msgid-Bugs-To: \n"
 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 <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: FNP <fundacja@nowoczesnapolska.org.pl>\n"
 "Language: Polish\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: FNP <fundacja@nowoczesnapolska.org.pl>\n"
 "Language: Polish\n"
@@ -47,7 +47,7 @@ msgid "latest"
 msgstr "ostatnie"
 
 #: feeds.py:32
 msgstr "ostatnie"
 
 #: feeds.py:32
-#: models.py:49
+#: models.py:52
 msgid "entries"
 msgstr "wpisy"
 
 msgid "entries"
 msgstr "wpisy"
 
@@ -63,86 +63,96 @@ msgstr "Tytuł"
 msgid "Content"
 msgstr "Treść"
 
 msgid "Content"
 msgstr "Treść"
 
-#: models.py:14
+#: models.py:17
 msgid "taxonomy"
 msgstr "taksonomia"
 
 msgid "taxonomy"
 msgstr "taksonomia"
 
-#: models.py:18
+#: models.py:21
 msgid "category"
 msgstr "kategoria"
 
 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"
 
 #: urls.py:41
 #: urls.py:43
 msgid "categories"
 msgstr "kategorie"
 
-#: models.py:40
+#: models.py:43
 msgid "author"
 msgstr "autor"
 
 msgid "author"
 msgstr "autor"
 
-#: models.py:41
+#: models.py:44
 msgid "author email"
 msgstr "e-mail autora"
 
 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ń."
 
 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"
 
 msgid "image"
 msgstr "obrazek"
 
-#: models.py:44
+#: models.py:47
 msgid "promoted"
 msgstr "promowane"
 
 msgid "promoted"
 msgstr "promowane"
 
-#: models.py:48
+#: models.py:51
 msgid "entry"
 msgstr "wpis"
 
 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"
 
 msgid "needed"
 msgstr "potrzebne"
 
-#: models.py:72
+#: models.py:102
 msgid "Unneeded"
 msgstr "Niepotrzebne"
 
 msgid "Unneeded"
 msgstr "Niepotrzebne"
 
-#: models.py:72
+#: models.py:102
 msgid "Needed"
 msgstr "Potrzebne"
 
 msgid "Needed"
 msgstr "Potrzebne"
 
-#: models.py:72
+#: models.py:102
 msgid "Done"
 msgstr "Ukończone"
 
 msgid "Done"
 msgstr "Ukończone"
 
-#: models.py:78
+#: models.py:108
 msgid "title"
 msgstr "tytuł"
 
 msgid "title"
 msgstr "tytuł"
 
-#: models.py:79
+#: models.py:109
 msgid "lead"
 msgstr "lead"
 
 msgid "lead"
 msgstr "lead"
 
-#: models.py:80
-#: models.py:82
+#: models.py:110
+#: models.py:112
 msgid "Use <a href=\"http://textile.thresholdstate.com/\">Textile</a> syntax."
 msgstr "Włączona składnia <a href=\"http://textile.thresholdstate.com/\">Textile</a>."
 
 msgid "Use <a href=\"http://textile.thresholdstate.com/\">Textile</a> syntax."
 msgstr "Włączona składnia <a href=\"http://textile.thresholdstate.com/\">Textile</a>."
 
-#: models.py:81
+#: models.py:111
 msgid "body"
 msgstr "treść"
 
 msgid "body"
 msgstr "treść"
 
-#: models.py:83
+#: models.py:113
 msgid "published"
 msgstr "opublikowane"
 
 msgid "published"
 msgstr "opublikowane"
 
-#: models.py:88
+#: models.py:118
 msgid "file"
 msgstr "plik"
 
 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"
 #: urls.py:38
 #: urls.py:39
 msgid "submit"
index bce76e4..6ba28ee 100644 (file)
@@ -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.
 #
 # 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.db import models
+from django.template import loader, Context
 from django.utils.translation import get_language, ugettext_lazy as _, ugettext
 from django.utils.translation import get_language, ugettext_lazy as _, ugettext
+from django_comments_xtd.models import XtdComment
 from markupfield.fields import MarkupField
 from markupfield.fields import MarkupField
-from migdal.helpers import add_translatable
 from migdal import app_settings
 from migdal import app_settings
-
-
+from migdal.helpers import add_translatable
 
 class Category(models.Model):
     taxonomy = models.CharField(_('taxonomy'), max_length=32,
 
 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)
     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.'))
     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):
         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
         # 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 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'))),
 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 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 (executable)
index 0000000..d7074c2
--- /dev/null
@@ -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 (executable)
index 0000000..b99e1f3
--- /dev/null
@@ -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 }}