From: Michael Tremer Date: Tue, 4 Dec 2018 14:47:35 +0000 (+0000) Subject: wiki: Send email when page has been changed X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4ed1dadb188c8f58b1ec6f4a828c53ab4f4eefa5;p=ipfire.org.git wiki: Send email when page has been changed Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index c9d95919..322348da 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/src/backend/wiki.py b/src/backend/wiki.py index 5e058ff6..3c8b04a5 100644 --- a/src/backend/wiki.py +++ b/src/backend/wiki.py @@ -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 index 00000000..a5f6c32b --- /dev/null +++ b/src/templates/wiki/messages/page-changed.txt @@ -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 %}