Fix CMS page tree admin on Django 6: pass cl to the change list templates

Django 6's change list templates read cl.opts, but django-cms 3.11 only
provides opts, so /admin/cms/page/ and /admin/cms/pagetype/ returned 500.
This commit is contained in:
sajeyks 2026-10-06 20:24:56 +03:00
commit c9cbcc9d55

View file

@ -72,3 +72,18 @@ class CompatConfig(AppConfig):
if not hasattr(auth_admin, 'csrf_protect_m'):
auth_admin.csrf_protect_m = options.csrf_protect_m
# Django 6's change list templates read "cl.opts"; the django-cms 3.11
# page tree view only passes "opts", which breaks the page list.
from types import SimpleNamespace
from cms.admin.pageadmin import BasePageAdmin
changelist_view = BasePageAdmin.changelist_view
def changelist_view_with_cl(self, request, extra_context=None):
response = changelist_view(self, request, extra_context)
if hasattr(response, 'context_data'):
response.context_data.setdefault('cl', SimpleNamespace(opts=self.model._meta))
return response
BasePageAdmin.changelist_view = changelist_view_with_cl