.. _upgrade-to-enter-version-here:

*****************
4.1 release notes
*****************

*December 20, 2022*

Welcome to django CMS 4.1!

These release notes cover the new features, as well as some backwards
incompatible changes you’ll want to be aware of when upgrading from
django CMS 4.0. If you are upgrading from django CMS 3.11 or earlier
please urgently read the release notes of django CMS 4.0.


Django and Python compatibility
===============================

django CMS supports **Django 3.2, 4.0, and 4.1**. We highly recommend and only
support the latest release of each series.

It supports **Python 3.8, 3.9, 3.10, and 3.11**. As for Django we highly recommend and only
support the latest release of each series.

*****************
What's new in 4.1
*****************

Status indicators in page tree
==============================

* Status indicators are shown in the page tree. For django CMS core only two
  states are available: public and empty.
* Django CMS core provides hooks to allow other packages to patch the status
  indicators, e.g., djangocms-versioning.
* Djangocms-versioning will add more functionality to the indicators (e.g.,
  publish from page tree).


Bug Fixes
=========

* In rare cases moving plugins from one placeholder to another could result in
  a server error and an inconsistent plugin tree.
* Empty page contents (e.g., due to a missing translation of a page) will now
  render correctly in the page tree.
* Adding a page will trigger the form in the language viewd not in the browser
  language
* The "Empty all" menus for placeholders now works.


************************************
Backward incompatible changes in 4.1
************************************

TitleExtension
==============

``TitleExtension`` in ``cms.extensions.models`` has been renamed to
``PageContentExtension`` to keep a consistent language in the page models.

Any packages using ``TitleExtension`` will need to adapt the name change in
their code base.

Monkey patching
===============

django CMS v4.1 does not support monkey patching as for djangocms-versioning
before version 2.0. Please only use djangocms-versioning >= 2.0

Miscellaneous
=============

* The Django setting ``SEND_BROKEN_LINK_EMAILS`` (removed from Django since
  version 1.8) was used as a signal to send an email to the site managers
  if ``page_url`` could not reverse the url name. Since this version the
  outdated setting is ignored. If managers want to receive mails add
  ``django.middleware.common.BrokenLinkEmailsMiddleware`` to the project's
  ``settings.MIDDLEWARE``.
* ``cms.api.create_title`` has been renamed to :class:`~cms.api.create_page_content`.
  A compatibility shim remains and issues a deprecation warning.
* ``cms.models.pluginmodel.CMSPlugin.copy_plugin`` was removed.
