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
