Skip to content

Commit

Permalink
Reorganize the beta release notes a bit and trim down the section on …
Browse files Browse the repository at this point in the history
…feeds.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12390 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
ubernostrum committed Feb 6, 2010
1 parent 2638c90 commit f30f151
Showing 1 changed file with 44 additions and 90 deletions.
134 changes: 44 additions & 90 deletions docs/releases/1.2-beta-1.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,103 +23,39 @@ This document covers changes since the Django 1.2 alpha release; the
updated features in Django between 1.1 and 1.2 alpha.


What's new in 1.2 beta
======================
Deprecations and other changes in 1.2 beta
==========================================

This 1.2 beta release marks the final feature freeze for Django 1.2;
while most feature development was completed for 1.2 alpha (which
constituted a freeze on major features), a few other new features were
added afterward and so are new as of 1.2 beta.
This beta release deprecates one portion of public API, and introduces
a potentially backwards-incompatible change to another. Under `our API
stability policy <misc-api-stability>`, deprecation proceeds over
multiple release cycles: initially, the deprecated API will raise
``PendingDeprecationWarning``, followed by raising
``DeprecationWarning`` in the following release, and finally removal
of the deprecated API. APIs beginning the deprecation process in
Django 1.2 will be removed in the Django 1.4 release.

Additionally, some existing APIs have been deprecated; under `our API
stability policy <misc-api-stability>`, these APIs will continue to
work for now, but will raise ``PendingDeprecationWarning`` in Django
1.2 and ``DeprecationWarning`` in Django 1.3, before being removed in
Django 1.4.


Class-based test runners
------------------------
Unit test runners
-----------------

Django 1.2 changes the test runner tools to use a class-based
approach. Old style function-based test runners will still work, but
should be updated to use the new :ref:`class-based runners
<topics-testing-test_runner>`.


``Feed`` in ``django.contrib.syndication.feeds``
------------------------------------------------
Syndication feeds
-----------------

The :class:`django.contrib.syndication.feeds.Feed` class is being
replaced by the :class:`django.contrib.syndication.views.Feed` class.
The old ``feeds.Feed`` class is deprecated, and will be removed in
Django 1.4.

The new class has an almost identical API, but allows instances to be
used as views. For example, consider the use of the old framework in
the following :ref:`URLconf <topics-http-urls>`::

from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory

feeds = {
'latest': LatestEntries,
'categories': LatestEntriesByCategory,
}

urlpatterns = patterns('',
# ...
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}),
# ...
)

Using the new Feed class, these feeds can be deployed directly as views::

from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory

urlpatterns = patterns('',
# ...
(r'^feeds/latest/$', LatestEntries()),
(r'^feeds/categories/(?P<category_id>\d+)/$', LatestEntriesByCategory()),
# ...
)

If you currently use the ``feed()`` view, the ``LatestEntries`` class
would not need to be modified apart from subclassing the new
:class:`~django.contrib.syndication.views.Feed` class.

However, ``LatestEntriesByCategory`` uses the ``get_object()`` method
with the ``bits`` argument to specify a specific category to show. In
the new :class:`~django.contrib.syndication.views.Feed` class,
``get_object()`` method takes a ``request`` and arguments from the
URL, so it would look like this::

from django.contrib.syndication.views import Feed
from django.shortcuts import get_object_or_404
from myproject.models import Category

class LatestEntriesByCategory(Feed):
def get_object(self, request, category_id):
return get_object_or_404(Category, id=category_id)

# ...

Additionally, the ``get_feed()`` method on ``Feed`` classes now take
different arguments, which may impact you if you use the ``Feed``
classes directly. Instead of just taking an optional ``url`` argument,
it now takes two arguments: the object returned by its own
``get_object()`` method, and the current ``request`` object.

To take into account ``Feed`` classes not being initialized for each
request, the ``__init__()`` method now takes no arguments by default.
Previously it would have taken the ``slug`` from the URL and the
``request`` object.

In accordance with `RSS best practices`_, RSS feeds will now include
an ``atom:link`` element. You may need to update your tests to take
this into account.
The old ``feeds.Feed`` class is deprecated. The new class has an
almost identical API, but allows instances to be used as views.

Also, in accordance with `RSS best practices`_, RSS feeds will now
include an ``atom:link`` element. You may need to update your tests to
take this into account.

For more information, see the full :ref:`syndication framework
documentation <ref-contrib-syndication>`.
Expand All @@ -131,12 +67,21 @@ Cookie encoding
---------------

Due to cookie-handling bugs in Internet Explorer, Safari, and possibly
other browsers, our encoding of cookie values was changed so that the
characters comma (',') and semi-colon (';') are treated as non-safe
characters, and are therefore encoded as ``\054`` and ``\073``
respectively. This could produce backwards incompatibilities if you
are relying on the ability to set these characters directly in cookie
values.
other browsers, Django's encoding of cookie values was changed so that
the characters comma (',') and semi-colon (';') are treated as
non-safe characters, and are therefore encoded as ``\054`` and
``\073`` respectively. This could produce backwards incompatibilities
if you are relying on the ability to set these characters directly in
cookie values.


What's new in 1.2 beta
======================

This 1.2 beta release marks the final feature freeze for Django 1.2;
while most feature development was completed for 1.2 alpha (which
constituted a freeze on major features), a few other new features were
added afterward and so are new as of 1.2 beta.


Object-level permissions
Expand All @@ -163,6 +108,15 @@ is allowed or not to the authorization/authentication system. See the
:ref:`authentication docs <topics-auth>` for more details.


``select_related()`` improvements
---------------------------------

The ``select_related()`` method of ``QuerySet`` now accepts the
``related_name`` of a reverse one-to-one relation in the list of
fields to select. One-to-one relations will not, however, be traversed
by a depth-based ``select_related()`` call.


The Django 1.2 roadmap
======================

Expand Down

0 comments on commit f30f151

Please sign in to comment.