=========================
FeinCMS 1.8 release notes
=========================

Welcome to FeinCMS 1.8!


FeinCMS finally got continuous integration
==========================================

Have a look at the status page here:

`Travis CI <https://travis-ci.org/feincms/feincms>`_


Preliminary Python 3.3 support
==============================

The testsuite runs through on Python 3.3.


Singleton templates
===================

Templates can be defined to be singletons, which means that those templates
can only occur once on a whole site. The page module additionally allows
specifying that singleton templates must not have any children, and also
that the page cannot be deleted.


Dependencies are automatically installed
========================================

Now that distribute and setuptools have merged, ``setup.py`` has been
converted to use setuptools again which means that all dependencies
of FeinCMS should be installed automatically.


Backwards-incompatible changes
==============================

* The template naming and order used in the section content has been changed
  to be more similar to the media library. The naming is now
  ``<mediafile type>_<section content type>``, additionally the media file type
  is considered more important for template resolution than the section content
  type.

* The mechanism for finding the best application content match has been
  massively simplified and also made customizable. The default implementation
  of ``ApplicationContent.closest_match`` now only takes the current language
  into account.


Removal of deprecated features
------------------------------

* The module ``feincms.admin.editor`` has been removed. Import the classes
  from ``feincms.admin.item_editor`` or ``feincms.admin.tree_editor`` directly.

* The HTML cleansing module :mod:`feincms.utils.html.cleanse` has been removed.
  Use the standalone package
  `feincms-cleanse <http://pypi.python.org/pypi/feincms-cleanse>`_ instead.

* Registering extensions using shorthand notation is not possible anymore.
  Always use the full python path to the extension module.

* The two navigation template tags ``feincms_navigation`` and
  ``feincms_navigation_extended`` have been removed. The improved
  ``feincms_nav`` tag has been introduced with FeinCMS v1.6.

* The function-based generic views in :mod:`feincms.views.generic` have been
  removed. The decorator function
  :func:`feincms.views.decorators.add_page_to_extra_context` is therefore
  obsolete and has also been removed.

* The old media library content type module
  :py:mod:`feincms.content.medialibrary.models` has been replaced with the
  contents of :py:mod:`feincms.content.medialibrary.v2`. The model field
  ``position`` has been renamed to ``type``, instead of ``POSITION_CHOICES``
  you should use ``TYPE_CHOICES`` now. The code has been simplified and
  hacks to imitate ``raw_id_fields`` have been replaced by working stock
  code. The ``v2`` module will stay around for another release and will be
  removed in FeinCMS v1.8. The now-unused template
  ``admin/content/mediafile/init.html`` has been deleted.

* ``Page.setup_request()`` has been removed because it has not been doing
  anything for some time now.


New deprecations
================

* Page extensions should start explicitly adding their fields to the
  administration interface using ``modeladmin.add_extension_options``.
  FeinCMS v1.8 will warn about fields collected automatically, the next
  release will not add unknown fields to the administration interface
  anymore.

* All extensions should inherit from ``feincms.extensions.Extension``.
  Support for ``register(cls, admin_cls)``-style functions will be removed
  in FeinCMS v1.9.


Notable features and improvements
=================================

* The template tags ``feincms_render_region`` and ``feincms_render_content``
  do not require a request object anymore. If you omit the ``request``
  parameter, the request will not be passed to the ``render()`` methods.

* The code is mostly `flake8 <https://pypi.python.org/pypi/flake8>`_ clean.

* The new management command ``medialibrary_orphans`` can be used to find
  files which aren't referenced in the media library anymore.

* The test suite has been moved into its own top-level module.


Bugfixes
========

* The item and tree editor finally take Django permissions into account.

* The datepublisher response processor should not crash during daylight
  savings time changes anymore.

* The undocumented attribute ``PageAdmin.unknown_fields`` has been removed
  because it was modified at class level and not instance level which made
  reuse harder than necessary.


Compatibility with Django and other apps
========================================

FeinCMS 1.8 requires Django 1.4 or better. The testsuite is successfully run
against Django 1.4, 1.5 and 1.6. Django 1.7 is not supported.
