From d8f73fd408666bc448b6522e247d2b34975df812 Mon Sep 17 00:00:00 2001 From: Jacob Rief Date: Tue, 9 Jan 2024 09:23:52 +0100 Subject: [PATCH 1/2] fix issue #7745 discard specific verbose_name from perms_needed --- cms/admin/pageadmin.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cms/admin/pageadmin.py b/cms/admin/pageadmin.py index 652652a1109..573cc046ac9 100644 --- a/cms/admin/pageadmin.py +++ b/cms/admin/pageadmin.py @@ -371,12 +371,10 @@ def delete_view(self, request, object_id, extra_context=None): **get_deleted_objects_additional_kwargs ) - # This is bad and I should feel bad. - if _('placeholder') in perms_needed: - perms_needed.remove('placeholder') - - if _('page content') in perms_needed: - perms_needed.remove('page content') + # `django.contrib.admin.utils.get_deleted_objects()` only returns the verbose_name of a model, + # we hence have to use that name in order to allow the deletion of objects otherwise prevented. + perms_needed.discard(Placeholder._meta.verbose_name) + perms_needed.discard(PageContent._meta.verbose_name) if request.POST and not protected: # The user has confirmed the deletion. if perms_needed: From 2a7090bd91272544257a103929266ab8e5006a4d Mon Sep 17 00:00:00 2001 From: Jacob Rief Date: Tue, 9 Jan 2024 09:36:13 +0100 Subject: [PATCH 2/2] =?UTF-8?q?remove=20menu=20item=20"Delete=20page?= =?UTF-8?q?=E2=80=A6"=20from=20toolbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As discussed with @fsbraun on Slack, pages shall exclusively be deletable through the page tree but not through the toolbar. --- CHANGELOG.rst | 8 ++++++++ cms/cms_toolbars.py | 7 ------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 77b4c609aa6..a62111290a5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,11 @@ +4.2 (in progress) +================= + +Features: +--------- +* Remove menu item "Delete page…" from toolbar. + + 4.1.0 (2023-12-22) ================== diff --git a/cms/cms_toolbars.py b/cms/cms_toolbars.py index 167e294246e..268dc399c2c 100644 --- a/cms/cms_toolbars.py +++ b/cms/cms_toolbars.py @@ -672,10 +672,3 @@ def add_page_menu(self): disabled=(not edit_mode or not can_change), on_success=refresh, ) - - # delete - delete_url = admin_reverse('cms_page_delete', args=(self.page.pk,)) - delete_disabled = not edit_mode or not user_can_delete_page(self.request.user, page=self.page) - on_delete_redirect_url = self.get_on_delete_redirect_url() - current_page_menu.add_modal_item(_('Delete page'), url=delete_url, on_close=on_delete_redirect_url, - disabled=delete_disabled)