From cdd28014b04b2f55703a70818b5ab6243d9387c8 Mon Sep 17 00:00:00 2001 From: NishikawaKoharu Date: Wed, 15 Jul 2026 14:59:05 +0900 Subject: [PATCH 1/4] =?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/4] =?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')) From a95af0ed97a991218ec47a935a012d0293ddbf6d Mon Sep 17 00:00:00 2001 From: NishikawaKoharu Date: Wed, 22 Jul 2026 14:51:19 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=E6=9C=AA=E4=BF=9D=E5=AD=98=E7=A2=BA?= =?UTF-8?q?=E8=AA=8D=E3=83=A2=E3=83=BC=E3=83=80=E3=83=AB=E3=81=A8=E7=BF=BB?= =?UTF-8?q?=E8=A8=B3=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/templates/edit.mako | 19 +++++++++++++++++++ .../translations/ja/LC_MESSAGES/messages.po | 16 ++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/addons/wiki/templates/edit.mako b/addons/wiki/templates/edit.mako index e8a6d51ecdf..c4fd10d92da 100644 --- a/addons/wiki/templates/edit.mako +++ b/addons/wiki/templates/edit.mako @@ -269,6 +269,25 @@ + + diff --git a/website/translations/ja/LC_MESSAGES/messages.po b/website/translations/ja/LC_MESSAGES/messages.po index fe3c9a10b93..b8193edde4a 100644 --- a/website/translations/ja/LC_MESSAGES/messages.po +++ b/website/translations/ja/LC_MESSAGES/messages.po @@ -1224,6 +1224,22 @@ msgstr "重要な情報、リンク、または画像をここに追加して、 msgid "Close" msgstr "閉じる" +#: addons/wiki/templates/edit.mako:277 +msgid "Unsaved Changes" +msgstr "未保存の変更" + +#: addons/wiki/templates/edit.mako:280 +msgid "Your changes have not been saved. Do you want to save before closing?" +msgstr "編集内容は保存されていません。閉じる前に保存しますか?" + +#: addons/wiki/templates/edit.mako:284 +msgid "Discard" +msgstr "破棄" + +#: addons/wiki/templates/edit.mako:285 +msgid "Save and Close" +msgstr "保存して閉じる" + #: addons/wiki/templates/edit.mako:218 addons/wiki/templates/edit.mako:225 msgid "Compare" msgstr "比較" From 23cadf39ad39b44325f0141039c0c348adf18833 Mon Sep 17 00:00:00 2001 From: NishikawaKoharu Date: Fri, 24 Jul 2026 11:25:40 +0900 Subject: [PATCH 4/4] =?UTF-8?q?CI=E5=86=8D=E5=AE=9F=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit