This is an automated email from the ASF dual-hosted git repository.

brondsem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 509ea6e42ee85346c612918d8c775c6b72584094
Author: Dillon Walls <[email protected]>
AuthorDate: Tue Jul 18 22:43:56 2023 +0000

    [#8516] Wiki - made explicit 'soft_delete' and test to assert deletion
---
 ForgeImporters/forgeimporters/github/wiki.py |  2 +-
 ForgeWiki/forgewiki/model/wiki.py            |  4 ++++
 ForgeWiki/forgewiki/tests/test_models.py     | 19 +++++++++++++++++++
 ForgeWiki/forgewiki/wiki_main.py             |  2 +-
 4 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/ForgeImporters/forgeimporters/github/wiki.py 
b/ForgeImporters/forgeimporters/github/wiki.py
index 7d28fdea8..a0fc47770 100644
--- a/ForgeImporters/forgeimporters/github/wiki.py
+++ b/ForgeImporters/forgeimporters/github/wiki.py
@@ -238,7 +238,7 @@ class GitHubWikiImporter(ToolImporter):
             wiki_page.text = self.convert_markup(
                 h.really_unicode(text), filename)
         else:
-            wiki_page.delete()
+            wiki_page.soft_delete()
         import_id_name = renamed_orig_name if renamed_orig_name else orig_name
         wiki_page.import_id = ImportIdConverter.get().expand(
             import_id_name, self.app)
diff --git a/ForgeWiki/forgewiki/model/wiki.py 
b/ForgeWiki/forgewiki/model/wiki.py
index e62eb4b5e..1c386e75a 100644
--- a/ForgeWiki/forgewiki/model/wiki.py
+++ b/ForgeWiki/forgewiki/model/wiki.py
@@ -276,6 +276,10 @@ class Page(VersionedArtifact, ActivityObject):
         }).all()
 
     def delete(self):
+        self.soft_delete()
+        super().delete()
+
+    def soft_delete(self):
         subject = '{} removed page {}'.format(
             context.user.username, self.title)
         description = self.text
diff --git a/ForgeWiki/forgewiki/tests/test_models.py 
b/ForgeWiki/forgewiki/tests/test_models.py
index 0411ebe86..f4db7c41a 100644
--- a/ForgeWiki/forgewiki/tests/test_models.py
+++ b/ForgeWiki/forgewiki/tests/test_models.py
@@ -94,3 +94,22 @@ class TestPage(TestController):
         assert len(authors) == 1
         assert user not in authors
         assert admin in authors
+
+    @td.with_wiki
+    def test_delete(self):
+        admin = M.User.by_username('test-admin')
+        with h.push_config(c, user=admin):
+            page = Page.upsert('test-delete')
+            _id = page._id
+            session(page).flush(page)
+
+        page.soft_delete()
+        session(page).flush(page)
+
+        page = Page.query.get(_id=_id)
+        assert page
+        assert page.deleted
+
+        page.delete()
+        page = Page.query.get(_id=_id)
+        assert not page
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 1414d2235..b92285e20 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -665,7 +665,7 @@ class PageController(BaseController, FeedController):
             c.app.config.options['mount_point'],
             self.page.title,
         ))
-        self.page.delete()
+        self.page.soft_delete()
         return dict(location='../' + self.page.title + '/?deleted=True')
 
     @without_trailing_slash

Reply via email to