Upgrading from previous versions
3.0 introduces some changes that require action if you are upgrading from a previous version.
django CMS 3.0 introduces a new Frontend Editing system as well as a customizable django admin skin.
In the new system, Placeholders and their Plugins are no longer managed in the Admin site, but only from the Frontend.
In addition, the system now offer two editing views:
Page titles can also be modified directly from the frontend.
The Toolbar’s code has been simplified and its appearance refreshed.
The Toolbar is now a more consistent management tool for adding and changing objects in a django CMS-based system. See Extending the Toolbar.
Upgrading from previous versions
3.0 now requires django messages application for the toolbar to work. See Enable messages on how to enable it.
We’ve added experimental support for Python 3.3. Support for Python 2.5 has been dropped.
Improvements in the environment django CMS provides for managing a multi-lingual site include:
Removed, along with the SEO fieldset in admin.
It’s now possible to specify fallback languages for a placeholder if the placeholder is empty for the current language. This must be activated in CMS_PLACEHOLDER_CONF per placeholder. Default to False to maintain pre-3.0 behavior.
The language_chooser templatetag now only displays languages that are public. Use the toolbar language chooser to change the language to non-public languages.
If you have django-reversion installed you now have undo and redo options available directly in the toolbar. These can now revert plugin content as well as page content.
Stacks are a way to display the same content on multiple locations.
When upgrading from previous django CMS version, you need to add cms.stacks to INSTALLED_APPS.
See Displaying the same content on multiple locations for in depth information about stacks.
We have removed plugins from the core. This is not because you are not expected to use them, but because django CMS should not impose unnecessary choices about what to install upon its adopters.
The most significant of these removals is cms.plugins.text.
We provide djangocms-text-ckeditor, a CKEditor-based Text Plugin. It’s available from https://github.com/divio/djangocms-text-ckeditor. You may of course use your preferred editor; others are available.
Plugin Context Processors have had an argument added so that the rest of the context is available to them. So if you have existing Plugin Context Processors you will need to change their function signature to add the extra argument.
Apphooks have moved from the title to the page model. This means there are no more separate apphooks possible per language. A new namespace field has been added.
The reverse id is not used for the namespace anymore. If you used namespaced apphooks before, be sure to update your pages and fill out the namespace fields.
If you use apphook apps with app_name for app namespaces be sure to fill out the namespace field as of now it is required to have a namespace defined if you use app namespaces.
request.current_app has been removed. If you relied on this, use the following code instead in your views:
def my_view(request): current_app = resolve(request.path).namespace context = RequestContext(request, current_app=current_app) return render_to_response("my_templace.html", context_instance=context)
Details can be found here: Attaching an Application multiple times
PlaceholderAdmin has no language tabs anymore and the plugin editor is gone. The plugin API has changed and is now more consistent. PageAdmin uses the same API as PlaceholderAdmin now. If your APP talked with the Plugin API directly be sure to read the code and the changed parameters. If you use PlaceholderFields you still need the PlaceholderAdmin as it delivers the API for editing the plugins and the placeholders.
The workflow in the future should look like this:
Twitter disabled V1 of their API. We removed the twitter plugin because of this.
For an alternative have a look at this plugins:
In adition to model level permission Placeholder now checks if user has permission on specific object of that model. Details can be found here: Permissions
Is now possible to configure module and plugins labels to show in the toolbar UI. See CMS_PLACEHOLDER_CONF for details.
A new copy-lang subcommand exists to copy content between languages.
Added a management command to copy content (titles and plugins) from one language to another.
The command can be run with:
manage.py cms copy_lang from_lang to_lang
Please read cms copy-lang before using.