From cdd28014b04b2f55703a70818b5ab6243d9387c8 Mon Sep 17 00:00:00 2001 From: NishikawaKoharu Date: Wed, 15 Jul 2026 14:59:05 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Wiki=E3=83=9A=E3=83=BC=E3=82=B8=E4=B8=A6?= =?UTF-8?q?=E3=81=B3=E6=9B=BF=E3=81=88API=E3=81=AB=E6=9B=B8=E3=81=8D?= =?UTF-8?q?=E8=BE=BC=E3=81=BF=E6=A8=A9=E9=99=90=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/wiki/tests/test_wiki.py | 25 +++++++++++++++++++++++++ addons/wiki/views.py | 2 ++ 2 files changed, 27 insertions(+) diff --git a/addons/wiki/tests/test_wiki.py b/addons/wiki/tests/test_wiki.py index ed9e8dacc77..6daffd6dead 100644 --- a/addons/wiki/tests/test_wiki.py +++ b/addons/wiki/tests/test_wiki.py @@ -3340,6 +3340,31 @@ def test_bulk_update_wiki_sort(self): self.assertEqual(result_wiki_child_page2, {'parent_id': wiki_page2_id, 'sort_order': 1}) self.assertEqual(result_wiki_child_page3, {'parent_id': wiki_child_page2_id, 'sort_order': 1}) + def _wiki_sort_payload(self): + return { + 'sortedData': [ + {'name': 'wiki page1', 'id': self.guid1, 'sortOrder': 1, 'children': [], 'fold': False}, + {'name': 'wiki page2', 'id': self.guid2, 'sortOrder': 2, 'children': [ + {'name': 'wiki child page1', 'id': self.child_guid1, 'sortOrder': 1, 'children': [], 'fold': False}, + {'name': 'wiki child page2', 'id': self.child_guid2, 'sortOrder': 2, 'children': [ + {'name': 'wiki child page3', 'id': self.child_guid3, 'sortOrder': 1, 'children': [], 'fold': False} + ], 'fold': False} + ], 'fold': False} + ] + } + + def test_project_update_wiki_page_sort_requires_login(self): + url = self.project.api_url_for('project_update_wiki_page_sort') + res = self.app.post_json(url, self._wiki_sort_payload(), expect_errors=True) + assert_equal(res.status_code, http_status.HTTP_401_UNAUTHORIZED) + + def test_project_update_wiki_page_sort_requires_write_permission(self): + read_user = AuthUserFactory() + self.project.add_contributor(read_user, permissions=READ, auth=Auth(self.user)) + url = self.project.api_url_for('project_update_wiki_page_sort') + res = self.app.post_json(url, self._wiki_sort_payload(), auth=read_user.auth, expect_errors=True) + assert_equal(res.status_code, http_status.HTTP_403_FORBIDDEN) + def test_project_update_wiki_page_sort(self): url = self.project.api_url_for('project_update_wiki_page_sort') res = self.app.post_json(url, { 'sortedData': [{'name': 'wiki page1', 'id': self.guid1, 'sortOrder': 1, 'children': [], 'fold': False}, {'name': 'wiki page2', 'id': self.guid2, 'sortOrder': 2, 'children': [{'name': 'wiki child page1', 'id': self.child_guid1, 'sortOrder': 1, 'children': [], 'fold': False}, {'name': 'wiki child page2', 'id': self.child_guid2, 'sortOrder': 2, 'children': [{'name': 'wiki child page3', 'id': self.child_guid3, 'sortOrder': 1, 'children': [], 'fold': False}], 'fold': False}], 'fold': False}]}, auth=self.user.auth) diff --git a/addons/wiki/views.py b/addons/wiki/views.py index 3ada8ed4b84..a1051ba9110 100644 --- a/addons/wiki/views.py +++ b/addons/wiki/views.py @@ -1368,6 +1368,8 @@ def set_wiki_import_task_proces_end(node): qs_alive_task.update(process_end=process_end) @must_be_valid_project # returns project +@must_have_permission(WRITE) # returns user, project +@must_not_be_registration @must_have_addon('wiki', 'node') def project_update_wiki_page_sort(node, **kwargs): data = request.get_json() From 6cc4d41291fb1a0c3bda922de8a5063683e2f075 Mon Sep 17 00:00:00 2001 From: NishikawaKoharu Date: Thu, 16 Jul 2026 14:35:18 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Wiki=E3=83=9A=E3=83=BC=E3=82=B8=E4=B8=A6?= =?UTF-8?q?=E3=81=B3=E6=9B=BF=E3=81=88API=E3=81=AB=E6=9B=B8=E3=81=8D?= =?UTF-8?q?=E8=BE=BC=E3=81=BF=E6=A8=A9=E9=99=90=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/wiki/tests/test_wiki_import.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/wiki/tests/test_wiki_import.py b/addons/wiki/tests/test_wiki_import.py index d8e55d1dc17..73fe2c3a941 100644 --- a/addons/wiki/tests/test_wiki_import.py +++ b/addons/wiki/tests/test_wiki_import.py @@ -2746,7 +2746,7 @@ def test_project_update_wiki_page_sort(self): } ] }, - auth=self.auth + auth=self.user.auth ) page_names = ['importpagea1', 'importpageb2', 'wiki child page1', 'wiki child page2', 'wiki child page3'] result_list = list(WikiPage.objects.filter(page_name__in=page_names).order_by('page_name').values_list('page_name', 'parent_id', 'sort_order'))