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
Page
model decoupled from the site navigationPage copy between sites
better behaviour of the language chooser for published/unpublished languages
improved handling, refactored code for language fallbacks
improved repr for
Page
,Title
,Placeholder
andCMSPlugin
modelsgeneric publishing controls no longer refer to “page”
improved documentation
Bug Fixes
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
menus.py
(usecms_menus.py
).The
cms.utils.django_load.py
module has been removed (in favour of standard Django helpers)Support for Django Reversion has been removed.
The
urls
andmenus
attributes are no longer supported onCMSApp
(apphook) classes. All apphook subclasses now need aget_urls()
method. In addition, if your apphook has amenus
attribute, that will need to be replaced by aget_menus()
method.Page.revision_id
has been removedDeprecated content creation wizard settings have been removed.
Backward-incompatible changes
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 nowPage.object.order_by('node__path')
.Pages are no longer ordered by path. For ordering, use
order_by('node__path')
.Pages no longer have a
site
field. Whereas previously you could usefilter(site=id)
, now usefilter(node__site==id)
.Pages no longer have a
parent
field. Instead aparent
property now returns the newparent_page
attribute, 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.Using
self.request.path
orself.request.path_info
in aCMSToolbar
subclass method is no longer reliable and is discouraged. Instead, useself.toolbar.request_path
.
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.
Then run:
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.
Run:
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
0.9.8
)specify the version to install as
develop
:djangocms --cms-version=develop mysite
The user name and password will both be admin
.
Contributors to this release
Alexander Paramonov
Andras Gyömrey
Daniele Procida
Gianluca Guarini
Iacopo Spalletti
Jacob Rief
Jens Diemer
Júlio R. Lucchese
Leon Smith
Ludwig Hähne
Mark Walker
Nicolas PASCAL
Nina Zakharenko
Paulo Alvarado
Robert Stein
Salmanul Farzy
Sergey Fedoseev
Shaun Brady
Stefan Foulis
Tim Graham
Vadim Sikora
alskgj