]> git.ipfire.org Git - ipfire.org.git/commitdiff
wiki: Send email when page has been changed
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 4 Dec 2018 14:47:35 +0000 (14:47 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 4 Dec 2018 14:47:35 +0000 (14:47 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/backend/wiki.py
src/templates/wiki/messages/page-changed.txt [new file with mode: 0644]

index c9d95919ce0306eae5b97bcf680310abcb68cb56..322348da28eb876979fe35b11c98db68dee96e89 100644 (file)
@@ -276,6 +276,11 @@ templates_wiki_files_DATA = \
 
 templates_wiki_filesdir = $(templates_wikidir)/files
 
+templates_wiki_messages_DATA = \
+       src/templates/wiki/messages/page-changed.txt
+
+templates_wiki_messagesdir = $(templates_wikidir)/messages
+
 templates_wiki_modules_DATA = \
        src/templates/wiki/modules/diff.html \
        src/templates/wiki/modules/list.html \
index 5e058ff62d9080360da7017cde58bb1248d17419..3c8b04a5d02775d84e59911699fb0d3d08855d5a 100644 (file)
@@ -1,6 +1,7 @@
 #!/usr/bin/python3
 
 import PIL
+import difflib
 import io
 import logging
 import os.path
@@ -220,6 +221,10 @@ class Page(misc.Object):
        def url(self):
                return self.page
 
+       @property
+       def full_url(self):
+               return "https://wiki.ipfire.org%s" % self.url
+
        @property
        def page(self):
                return self.data.page
@@ -366,6 +371,16 @@ class Page(misc.Object):
 
        # Watchers
 
+       @lazy_property
+       def diff(self):
+               if self.previous_revision:
+                       diff = difflib.unified_diff(
+                               self.previous_revision.markdown.splitlines(),
+                               self.markdown.splitlines(),
+                       )
+
+                       return "\n".join(diff)
+
        @property
        def watchers(self):
                res = self.db.query("SELECT uid FROM wiki_watchlist \
@@ -413,7 +428,9 @@ class Page(misc.Object):
 
                        logging.debug("Sending watcher email to %s" % watcher)
 
-                       pass # TODO
+                       # Compose message
+                       self.backend.messages.send_template("wiki/messages/page-changed",
+                               recipients=[watcher], page=self, priority=-10)
 
 
 class File(misc.Object):
diff --git a/src/templates/wiki/messages/page-changed.txt b/src/templates/wiki/messages/page-changed.txt
new file mode 100644 (file)
index 0000000..a5f6c32
--- /dev/null
@@ -0,0 +1,14 @@
+Subject: [{{ _("IPFire Wiki") }}] {{ _("Page Changed: %s") % page.title }}
+
+Hey,
+
+the wiki page has been changed by {{ page.author }}.
+Check out the current version at {{ page.full_url }}.
+
+{% if page.changes %}  {{ page.changes }}{% end %}
+
+You can see what has changed here:
+
+  {{ page.full_url }}?action=diff&a={{ page.previous_revision.timestamp.isoformat() }}&b={{ page.timestamp.isoformat() }}
+
+{% raw page.diff %}