=================
See: `upgrade_notes_0.13` for special notes on upgrading to this release.
Restructuring
-------------
* The basic component base classes (``Adapter``, ``MultiAdapter``,
``GlobalUtility``), their grokkers, as well as many of the basic
directives have been factored out to a reusable
``grokcore.component`` package.
* Ported directives to Martian's new directive implementation. As a
result, many helper functions that were available from ``grok.util``
were removed. The functionality is mostly available from the
directives themselves now.
* Refactored class grokkers to make use of Martian's new declarative
way for retrieving directive data from classes, and Martian's new
declarative way to write grokkers. See `upgrade_notes_0.13`
for more information.
Feature changes
---------------
* ``GrokTemplate`` sets up the namespaces for the template by calling
``default_namespace() ``on the view component the template is
associated with. As a result, ``ViewletManagers`` and ``Viewlet``
can now push in the ``viewletmanager`` and ``viewlet`` namespaces
into the template.
* Updated tutorial section about grokproject to fit the latest changes.
* Added ``grok.traversable`` directive for easy traversal to attributes and
methods.
* ``grok.require()`` can refer to subclasses of ``grok.Permission``
directly, instead of their id. This, for one, avoids making typos in
permission ids. Permission components *do* still need the
grok.name() directive for defining the permission's id.
* Added an optional parameter ``data`` to the method ``url()`` that
accepts a dictionary that is then converted to a query string. See
http://grok.zope.org/documentation/how-to/generate-urls-with-the-url-function-in-views/view
* Added an ``OrderedContainer`` component.
* Introduced the new `sphinx`-based documentation engine. See
grokdocs/README.txt for details.
* Merged the versions from the 3.4 KGS (known good set):
http://download.zope.org/zope3.4/versions-3.4.0c1.cfg
We are now using the latest Zope 3 releases for all Zope packages.
See `upgrade_notes_0.13` for more information.
* Added support for easier test setup based on ``z3c.testsetup``. This
is a more stable and more powerful implementation of
``grok.testing.register_all_tests()``. See
http://grok.zope.org/documentation/how-to/tests-with-grok-testing
for details.
* There is now a new ``IContext`` interface available. If you make
your class implement that interface, it (and its subclasses) will be
candidates for being a context in a module (for automatic context
lookup if ``grok.context`` is not present). This relies on a feature
introduced in ``grokcore.component`` 1.1.
* ``grok.Model`` implements ``grok.interfaces.IContext`` now (which is
imported from ``grokcore.component``). ``grok.Container`` now
implements ``grok.interfaces.IContainer``. Traversers and default
views have been set up for these interfaces, so that new
implementations that function as a model or container can be easily
created. Just use ``grok.implements(IContainer)`` or
``grok.implements(IContext)``. This is useful for Grok extensions
that want to implement new content classes.
Bug fixes
---------
* Fix https://bugs.launchpad.net/grok/+bug/226555: the ``url()`` method on
``ViewletManager`` and ``Viewlet`` has been removed now that there's easy
access to the view component the viewlet(manager) is registered for.
* Fix https://bugs.launchpad.net/grok/+bug/231106: Use the
viewletmanager.sort() method for sorting viewlets by using
util.sort_components().
* grok.REST views now have a properly set ``__parent__`` attribute and
will correctly allow acquisition from parent objects, as it's used
by the security policy for acquiring local grants, for example.
* Fix https://bugs.launchpad.net/grok/+bug/229677:
zope.app.securitypolicy egg missing. Now zope.app.securitypolicy
3.4.6 is additionally required by Grok and fetched by buildout.
* Removed first testsetup hack from grok.testing.
* Version 2.1 of z3c.autoinclude contained code that caused Grok to
fail to start on some platforms if the system-supplied Python was
used (at least on some versions of Ubuntu and Debian). Now include
version 2.2 of z3c.autoinclude which should fix this problem. This
fix was also made on Grok 0.12 in its online versions list after
release.
* Port fix of zope.formlib to correctly adapt the context to a FormField's
interface, not the field.