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 Extra media for content types 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 which 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
Influencing request processing through a content type for more information.

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 and has been changed. The inventory
is versioned now, therefore upgrading should not require any action on
your part.

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:

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':lambdapage: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.