3.5.0 release notes#
This release of django CMS concentrates on usability and user-experience, by improving its responsiveness while performing editing operations, particularly those that involve updates to plugin trees.
It also continues our move to decouple logical layers in the system. Most significant in this release is the new separation of the structure board from page rendering, which allows the structure board to be updated without requiring the page to be re-rendered. This vastly speeds up page editing, especially when dealing with complex plugin structures.
Another significant example is that the Page model has been decoupled from the site navigation hierarchy. The navigation tree now exists independently, offering further speed advantages, as well as future benefits for development and extensibility.
Our work to improve separation of concerns can also be seen in the renaming of publishing controls, so that they no longer refer to specifically to pages. Ultimately, publishing actions could apply to any kind of content, and this is a step in that direction.
What’s new in 3.5.0#
Improvements and new features#
structure board now decoupled from page rendering
Pagemodel decoupled from the site navigation
Page copy between sites
better behaviour of the language chooser for published/unpublished languages
improved handling, refactored code for language fallbacks
improved repr for
generic publishing controls no longer refer to “page”
This release fixes:
a Page template settings permission issue (failed to check for “Change advanced settings permission”)
a bug allowing Pages to be pasted without the correct translations for the target site
a bug that prevented users from seeing the welcome screen when debug is off
a bug allowing aliased plugins to render even if their host page was unpublished
a bug where focusing inputs in modal would require two clicks in some browsers
minor issues with initialisation of interface widgets.
minor clipboard bugs
Removal of deprecated functionality#
Previously deprecated functionality has been removed:
Menu modules can no longer be named
cms.utils.django_load.pymodule has been removed (in favour of standard Django helpers)
Support for Django Reversion has been removed.
menusattributes are no longer supported on
CMSApp(apphook) classes. All apphook subclasses now need a
get_urls()method. In addition, if your apphook has a
menusattribute, that will need to be replaced by a
Page.revision_idhas been removed
Deprecated content creation wizard settings have been removed.
The home page is no longer automatically the root page in the tree (since there is no longer a page tree). Instead, the home page is set manually in the page list admin.
Previously, ordered pages could be obtained via
Page.object.order_by('path'); the equivalent is now
Pages are no longer ordered by path. For ordering, use
Pages no longer have a
sitefield. Whereas previously you could use
filter(site=id), now use
Pages no longer have a
parentfield. Instead a
parentproperty now returns the new
parent_pageattribute, which relies on the node tree.
Never-published pages can no longer have a ‘pending’ publishing state. A data migration,
cms/migrations/0018_pagenode.py, removes this.
CMSToolbarsubclass method is no longer reliable and is discouraged. Instead, use
How to upgrade to 3.5#
We assume you are upgrading from django CMS 3.4.
Please make sure that your current database is consistent and in a healthy state, and make a copy of the database before proceeding further.
python manage.py migrate # to ensure that your database is up-to-date with migrations
python manage.py cms fix-tree
Check custom code and third-party applications for use of deprecated or removed functionality or APIs (see above). Some third-party components may need to be updated.
Install the new version of django CMS from GitHub.
python manage.py migrate
to apply the new migrations.
Create a new django CMS 3.5 project#
On the Divio Cloud#
The Divio Cloud offers an easy way to set up django CMS projects. In the Divio Cloud Control Panel, create a new django CMS project and Deploy it.
Using the django CMS Installer#
See our installation guide in the tutorial. However, make sure that you:
have installed the latest version of django CMS Installer (at least version
specify the version to install as
djangocms --cms-version=develop mysite
The user name and password will both be
Contributors to this release#
Júlio R. Lucchese