From 88671cab7f1c20dbfa8f6ded1827acd9e892cdbc Mon Sep 17 00:00:00 2001 From: Joseph Date: Tue, 29 May 2018 12:29:43 +0100 Subject: Revisions improvements (#77) * Support moving of revisions * Support removal of revisions upon page delete --- pysite/views/wiki/delete.py | 5 +++++ pysite/views/wiki/move.py | 7 +++++++ 2 files changed, 12 insertions(+) (limited to 'pysite') diff --git a/pysite/views/wiki/delete.py b/pysite/views/wiki/delete.py index 47759a87..4c88a955 100644 --- a/pysite/views/wiki/delete.py +++ b/pysite/views/wiki/delete.py @@ -43,6 +43,11 @@ class DeleteView(RouteView, DBMixin): self.db.delete(self.table_name, page) self.db.delete(self.revision_table_name, page) + revisions = self.db.filter(self.revision_table_name, lambda revision: revision["slug"] == page) + + for revision in revisions: + self.db.delete(self.revision_table_name, revision["id"]) + self.audit_log(obj) return redirect(url_for("wiki.page", page="home"), code=303) # Redirect, ensuring a GET diff --git a/pysite/views/wiki/move.py b/pysite/views/wiki/move.py index 0d7985b4..9f898c43 100644 --- a/pysite/views/wiki/move.py +++ b/pysite/views/wiki/move.py @@ -56,6 +56,13 @@ class MoveView(RouteView, DBMixin): self.db.delete(self.table_name, page) + # Move all revisions for the old slug to the new slug. + revisions = self.db.filter(self.revision_table_name, lambda revision: revision["slug"] == obj["slug"]) + + for revision in revisions: + revision["slug"] = location + self.db.insert(self.revision_table_name, revision, conflict="update") + obj["slug"] = location self.db.insert(self.table_name, obj, conflict="update") -- cgit v1.2.3