2.0.0 release notes (unreleased)

October 2023

Welcome to django CMS versioning 2.0.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 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.

Features

Status indicators in page tree

  • Status indicators are shown in the page tree as of django CMS 4.1+

  • For a more consistent user experience djangocms-versioning uses icons provided by django CMS 4.1+ and does not provide its own icons any more.

  • If djangocms_admin_style is listed in the INSTALLED_APPS setting make sure that at least version 3.2.1 is installed. Older versions contain a bug that interferes with djangocms-versioning’s icons.

Status indicators for custom versioned models

  • The new StateIndicatorMixin allows to add state indicators to a grouper or content model’s admin changelist view.

  • The new ExtendedIndicatorVersionAdminMixin combines the ExtendedVersionAdminMixin and the StateIndicatorMixin, where the version state is replaced by the indicator and the versioning actions are part of the indicator drop down menu.

Deletion protection

By default Version objects which are sources for later versions are protected from deletion. This implies that neither the corresponding content object nor the grouper object can be deleted. To allow deletion of Version objects set DJANGOCMS_VERSIONING_ALLOW_DELETING_VERSIONS to True in the project’s settings.py.

Version-locking

Previously a separate package, djangocms-version-locking has now been included in djangocms-versioning. Upon setting DJANGOCMS_VERSIONING_LOCK_VERSIONS to True, draft versions will be locked by default and can only be edited by the person who created the draft. This is to avoid conflicts in certain editorial situations.

Backwards incompatible changes in 2.0.0

Monkey patching

  • Version 2.0.0 uses new configuration possibilities of django CMS 4.1+ and therefor is incompatible with versions 4.0.x

  • As a result monkey patching has been removed from djangocms-versioning and is discouraged

Accessing helper functions

  • Direct imports from djangocms_versioning are discouraged. They block drop-in replacements of djangocms_versioning.

  • djangocms_verisoning.helpers.remove_published_where has been removed. Use the admin_manager of a verisoned content object instead.

Title Extension

As of django CMS 4.1 TitleExtension in cms.extensions.models has been renamed to PageContentExtension to keep a consistent language in the page models. This change is reflected in djangocms-versioning 2.0.0.

See this PR.

Icon use

Djangocms-versioning now uses icons from the core which are only available as of django CMS v4.1+.

Miscellaneous

  • Adds compatibility for User models with no username field (see this PR): Adds the possibility to configure which field of the User model uniquely identifies the User. Default is username.

Bug fixes

  • Adjust migrations to ensure MySql compatibility (see this PR)