aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views
diff options
context:
space:
mode:
Diffstat (limited to 'pysite/views')
-rw-r--r--pysite/views/wiki/delete.py5
-rw-r--r--pysite/views/wiki/move.py7
2 files changed, 12 insertions, 0 deletions
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")