From e7d92bee553dc31f7fcd6a60f5523d90b4d040c5 Mon Sep 17 00:00:00 2001 From: Ralph Thesen Date: Sat, 16 Nov 2024 23:32:27 +0100 Subject: [PATCH] feature: allow renaming of folders, allow removing of pages without their attachments - Renaming of folders was brought up in #149. - Deleting pages without deleting their subpages (subpages are technically just attachments) was brought up in #150. --- otterwiki/templates/delete.html | 18 +++++++++++------- otterwiki/templates/page.html | 15 +-------------- otterwiki/templates/pageindex.html | 5 +++++ .../snippets/navbardropdown_rename_remove.html | 15 +++++++++++++++ otterwiki/views.py | 1 + otterwiki/wiki.py | 12 ++++++++++-- tests/test_otterwiki.py | 2 +- 7 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 otterwiki/templates/snippets/navbardropdown_rename_remove.html diff --git a/otterwiki/templates/delete.html b/otterwiki/templates/delete.html index ec0b9971..a1f3aedd 100644 --- a/otterwiki/templates/delete.html +++ b/otterwiki/templates/delete.html @@ -4,14 +4,18 @@
- +
-
-
- Reverting a delete will restore the file. -
+
+ + +
+
+ + Cancel +
+
+ Note: Reverting a delete will restore the deleted file(s).
- - Cancel {% endblock %} diff --git a/otterwiki/templates/page.html b/otterwiki/templates/page.html index 00eca8ed..c39c7424 100644 --- a/otterwiki/templates/page.html +++ b/otterwiki/templates/page.html @@ -44,20 +44,7 @@ View Source {% endif %} -{% if has_permission('WRITE') %} - - - - - Rename - - - - - - Delete - -{% endif %} +{% include 'snippets/navbardropdown_rename_remove.html' %} {{ super() }} {% endblock %} diff --git a/otterwiki/templates/pageindex.html b/otterwiki/templates/pageindex.html index ca462b5e..0dfb23d2 100644 --- a/otterwiki/templates/pageindex.html +++ b/otterwiki/templates/pageindex.html @@ -5,6 +5,11 @@ {% include 'snippets/menu.html' %} {% include 'snippets/menutree.html' %} {% endblock %} +{% block navbardropdown %} +{% include 'snippets/navbardropdown_rename_remove.html' %} + +{{ super() }} +{% endblock %} {% block content %}

{{ title }}

diff --git a/otterwiki/templates/snippets/navbardropdown_rename_remove.html b/otterwiki/templates/snippets/navbardropdown_rename_remove.html new file mode 100644 index 00000000..b2f9a568 --- /dev/null +++ b/otterwiki/templates/snippets/navbardropdown_rename_remove.html @@ -0,0 +1,15 @@ +{#- vim: set et ts=8 sts=4 sw=4 ai: -#} +{% if has_permission('WRITE') %} + + + + + Rename + + + + + + Delete + +{% endif %} diff --git a/otterwiki/views.py b/otterwiki/views.py index 89b40601..e5257032 100644 --- a/otterwiki/views.py +++ b/otterwiki/views.py @@ -383,6 +383,7 @@ def delete(path): return p.delete( message=request.form.get("message"), author=otterwiki.auth.get_author(), + recursive=request.form.get("recursive", False) == "recursive", ) return p.delete_form() diff --git a/otterwiki/wiki.py b/otterwiki/wiki.py index 65ea4651..2fbe4e81 100644 --- a/otterwiki/wiki.py +++ b/otterwiki/wiki.py @@ -932,13 +932,21 @@ def rename_form(self, new_pagename=None, message=None): ), ) - def delete(self, message, author): + def delete(self, message, author, recursive=True): if not has_permission("WRITE"): abort(403) if empty(message): message = "{} deleted.".format(self.pagename) + files = [] + if self.exists: + files.append(self.filename) + if recursive: + files.append(self.attachment_directoryname) + if len(files) < 1: + toast("Nothing to delete.") + return redirect(url_for("view", path=self.pagepath)) storage.delete( - [self.filename, self.attachment_directoryname], + files, message=message, author=author, ) diff --git a/tests/test_otterwiki.py b/tests/test_otterwiki.py index aaf2b206..6b5d44ce 100644 --- a/tests/test_otterwiki.py +++ b/tests/test_otterwiki.py @@ -573,7 +573,7 @@ def test_nested_files(test_client): # delete the image rv = test_client.post( "/{}/delete".format(pagename), - data={"message": "deleted ..."}, + data={"message": "deleted ...", "recursive": "recursive"}, follow_redirects=True, ) assert rv.status_code == 200