Twelve days ago, the first preview for FeinCMS 1.3 has been released.
If we don't hit any bugs in the next few days, I'll probably release
1.3.0 final in about a week.


What is FeinCMS anyway?
=======================


FeinCMS is one of the most advanced Content Management Systems built on top
of Django. FeinCMS not only includes a page module with many bundled content
types (plugins), a media library and up-to-date documentation but also the
tools to build your own CMS if our view of how a page CMS is supposed to
act like does not fit your requirements.


PyPI: http://pypi.python.org/pypi/FeinCMS/
Github: https://github.com/matthiask/feincms/
Docs: http://www.feinheit.ch/media/labs/feincms/

Please report any issues you find in the issue tracker of github:
https://github.com/matthiask/feincms/issues


Changes since the last announcement mail (for 1.3.0.pre1):

* The tree editor now correctly uses django.contrib.admin's permission
  checking mechanisms.
* The ContentProxy implementation is even lazier now and does nearly
  nothing that isn't absolutely required up front.
* The media files have been moved from feincms/media to feincms/static
  for the convenience of everyone using django.contrib.staticfiles
* The 3rd party application embedding content type (ApplicationContent)
  supports TemplateResponse return values.
* The bundled jQuery has been updated to 1.5.1.
* A few bugfixes and documentation improvements.



This release would not have been possible without the contributions by the
community. Thanks for all the patches, bug reports and ideas which went into
this release.





====================================
FeinCMS 1.3 release notes (upcoming)
====================================


FeinCMS 1.3 includes many bugfixes and cleanups and a number of new features.
The cleanups and features caused a few backwards incompatible changes. The
upgrade path is outlined below.

Highlights
==========

* FeinCMS pages use the standard Django permalink mechanism inside the
  ``get_absolute_url`` implementation. This means that you have to update the
  URL definition if you did not include ``feincms.urls`` directly.

  Change this::

      url(r'^$|^(.*)/$', 'feincms.views.base.handler'),

  to this::

      url(r'', include('feincms.urls')),

  Defining the URL patterns directly is still possible. Have a look at
  ``feincms.urls`` to find out how this should be done.

* FeinCMS requires at least Django 1.2 but already has support for Django 1.3
  features such as staticfiles. The FeinCMS media file folder has been moved
  from ``feincms/media/feincms`` to ``feincms/static/feincms`` - if you use
  ``django.contrib.staticfiles`` with Django 1.3 (and you should!), FeinCMS'
  media files for the administration interface will automatically be made
  available without any further work on your part.

* Content types can specify the media files (Javascript and CSS files) they
  need to work correctly. See :ref:`contenttypes-extramedia` for information
  on how to use this in your own content types.

* The content type loading process has been streamlined and requires much
  less database queries than before. The performance hit on sites with deep
  page hierarchies, inheritance and many regions is several times smaller
  than before.

* The content type interface has been extended with two new methods, available
  for all content types who need it: ``process`` is called before rendering
  pages and is guaranteed to receive the current request instance. Each and
  every content type (not only application contents as before) has the
  ability to return full HTTP responses which are returned directly to the
  user. ``finalize`` is called after rendering and can be used to set
  HTTP headers and do other post-processing tasks. See
  :ref:`contenttypes-processfinalize` for more information.


(Backwards incompatible and other) Changes
==========================================

* The default ``ContentProxy`` has been rewritten to load all content type
  instances on initialization. The instances stay around for the full
  request-response cycle which allows us to remove many quasi-global variables
  (variables attached to the ``request`` object). The new initialization is
  much more efficient in terms of SQL queries needed; the implementation is
  contained inside the ``ContentProxy`` class and not distributed all over
  the place.

* The ``ContactFormContent`` has been updated to take advantage of the
  new content type interface where content types can influence the
  request-response cycle in more ways.

* The ``ct_tracker`` extension has been rewritten to take advantage of the
  new ``ContentProxy`` features. This means that the format of ``_ct_inventory``
  could not be kept backwards compatible. Because of this you have to empty
  the ``_ct_inventory`` fields yourself on upgrading::

      $ ./manage.py shell
      >>> from feincms.module.page.models import Page
      >>> Page.objects.all().update(_ct_inventory=None)

* ``feincms_site`` is not available in the context anymore. It was undocumented,
  mostly unused and badly named anyway. If you still need this functionality you
  should use ``django.contrib.sites`` directly yourself.

* The ``_feincms_appcontent_parameters`` has been folded into the
  ``_feincms_extra_context`` attribute on the current request. The
  ``appcontent_parameters`` template tag is not necessary anymore
  (the content of ``_feincms_extra_context`` is guaranteed to be available in
  the template context) and has been removed.

  In your appcontent code, change all references of
``_feincms_appcontent_parameters``
  to ``_feincms_extra_context``, e.g.

      params = getattr(request, '_feincms_appcontent_parameters', {})

  becomes

      params = getattr(request, '_feincms_extra_context', {})

* As part of the effort to reduce variables attached to the request object
  (acting as a replacement for global variables), ``request.extra_path``
  has been removed. The same information can be accessed via
  ``request._feincms_extra_context['extra_path']``.

* The ``feincms.views.applicationcontent`` module has been removed. The
  special casing it provided for application content-using pages aren't
  necessary anymore.

* The page's ``get_absolute_url`` method uses URL reversion for determining the
  URL of pages instead of returning ``_cached_url``. This means that you need
  to modify your URLconf entries if you added them to your own ``urls.py``
  instead of including ``feincms.urls``. Please make sure that you have two
  named URL patterns, ``feincms_home`` and ``feincms_handler``::

      from feincms.views.base import handler

      urlpatterns = patterns('',
          # ... your patterns ...

          url(r'^$', handler, name='feincms_home'),
          url(r'^(.*)/$', handler, name='feincms_handler'),
      )

  If you want the old behavior back, all you need to do is add the following
  code to your ``settings.py``::

      ABSOLUTE_URL_OVERRIDES = {
          'page.page': lambda page: page._cached_url,
          }

* The copy/replace and preview mechanisms never worked quite right. They were
  completely dropped from this release. If you still need the ability to create
  copies of objects, use the standard Django ``ModelAdmin.save_as`` feature.



-- 
Matthias Kestenholz - Dipl. Umwelt-Natw. ETH - Konzept & Programmierung
FEINHEIT GmbH - Molkenstrasse 21 - CH-8004 Zürich - www.feinheit.ch

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to