2.4.0 release notes

July 2025

Welcome to django CMS versioning 2.4.0!

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 versioning 1.x.

Django and Python compatibility

django CMS supports Django 4.2, 5.0, 5.1, and 5.2. We highly recommend and only support the latest release of each series.

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

Features

DefaultGrouperVersioningAdminMixin

The DefaultGrouperVersioningAdminMixin is a mixin that combines the functionality of both the StateIndicatorMixin and the ExtendedGrouperVersionAdminMixin into as standard recommended way to add versioning UI to grouper admin classes.

It also adds the versioning status indicators and the admin list actions to the grouper change list (if not already done).

Automatic Mixin Integration for GrouperAdmin

  • For models using the GrouperAdmin of django CMS’ core (since 4.1), djangocms-versioning now automatically adds a mixin to the admin of versioned grouper models.

  • This eliminates the need for third-party packages to explicitly depend on djangocms-versioning for mixin imports, enabling better modularity and compatibility with alternative versioning solutions.

  • Inheritance checks ensure full backward compatibility.

Default pattern for versioned models:

Models

Model example

Admin class

Admin mixin

Grouper

Alias

GrouperAdmin

DefaultGrouperVersioningAdminMixin

Content

AliasContent

ModelAdmin

VersioningAdminMixin

To activate this feature, set the grouper_admin_mixin property to "__default__" which will cause the DefaultGrouperVersioningAdminMixin to be used:

VersionableItem(
    ...,
    grouper_admin_mixin="__default__",  # or a custom mixin class
    ...,
)

Backwards incompatible changes in 2.0.0

CMS menu registration

The cms_menu.py and its menu logic - deprecated since version 2.3 - has been removed. Use the CMS menu provided by django CMS 4.1 and later instead.