<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pyramid/docs/tutorials/bfgwiki2/src/models, branch main</title>
<subtitle>Pyramid web framework (fork of https://github.com/Pylons/pyramid).</subtitle>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/'/>
<entry>
<title>remove bfgwiki2 old dir</title>
<updated>2010-10-25T21:58:23+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@plope.com</email>
</author>
<published>2010-10-25T21:58:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=c426c49cd433997aac10045052d77d9c749680b2'/>
<id>c426c49cd433997aac10045052d77d9c749680b2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>first cut at converting bfg to pyramid</title>
<updated>2010-10-25T14:30:28+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@plope.com</email>
</author>
<published>2010-10-25T14:30:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=b60bdb238fbf7965121ef6073e70343428d6dc83'/>
<id>b60bdb238fbf7965121ef6073e70343428d6dc83</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>long lines</title>
<updated>2010-10-14T01:42:09+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2010-10-14T01:42:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=c0b29e305cb9737978a0bc1cd340a4b2ae33beb2'/>
<id>c0b29e305cb9737978a0bc1cd340a4b2ae33beb2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge tutorialfix branch</title>
<updated>2010-10-13T23:55:28+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2010-10-13T23:55:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=3dbdfef11d770a5b79df08c01258e070ee8b7f70'/>
<id>3dbdfef11d770a5b79df08c01258e070ee8b7f70</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>- The ``repoze.bfg.urldispatch.Route`` constructor (not an API) now</title>
<updated>2010-09-08T04:25:35+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2010-09-08T04:25:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=74409d12f7eb085bc992a200cc74799e4d1ff355'/>
<id>74409d12f7eb085bc992a200cc74799e4d1ff355</id>
<content type='text'>
  accepts a different ordering of arguments.  Previously it was
  ``(pattern, name, factory=None, predicates=())``.  It is now
  ``(name, pattern, factory=None, predicates=())``.  This is in
  support of consistency with ``configurator.add_route``.

- The ``repoze.bfg.urldispatch.RoutesMapper.connect`` method (not an
  API) now accepts a different ordering of arguments.  Previously it
  was ``(pattern, name, factory=None, predicates=())``.  It is now
  ``(name, pattern, factory=None, predicates=())``.  This is in
  support of consistency with ``configurator.add_route``.

- The ``repoze.bfg.urldispatch.RoutesMapper`` object now has a
  ``get_route`` method which returns a single Route object or
  ``None``.

- A new interface ``repoze.bfg.interfaces.IRoute`` was added.  The
  ``repoze.bfg.urldispatch.Route`` object implements this interface.

- The canonical attribute for accessing the routing pattern from a
  route object is now ``pattern`` rather than ``path``.

- The argument to ``repoze.bfg.configuration.Configurator.add_route``
  which was previously called ``path`` is now called ``pattern`` for
  better explicability.  For backwards compatibility purposes, passing
  a keyword argument named ``path`` to ``add_route`` will still work
  indefinitely.

- The ``path`` attribute to the ZCML ``route`` directive is now named
  ``pattern`` for better explicability.  The older ``path`` attribute
  will continue to work indefinitely.

- All narrative, API, and tutorial docs which referred to a route
  pattern as a ``path`` have now been updated to refer to them as a
  ``pattern``.

- The routesalchemy template has been updated to use ``pattern`` in
  its route declarations rather than ``path``.



</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  accepts a different ordering of arguments.  Previously it was
  ``(pattern, name, factory=None, predicates=())``.  It is now
  ``(name, pattern, factory=None, predicates=())``.  This is in
  support of consistency with ``configurator.add_route``.

- The ``repoze.bfg.urldispatch.RoutesMapper.connect`` method (not an
  API) now accepts a different ordering of arguments.  Previously it
  was ``(pattern, name, factory=None, predicates=())``.  It is now
  ``(name, pattern, factory=None, predicates=())``.  This is in
  support of consistency with ``configurator.add_route``.

- The ``repoze.bfg.urldispatch.RoutesMapper`` object now has a
  ``get_route`` method which returns a single Route object or
  ``None``.

- A new interface ``repoze.bfg.interfaces.IRoute`` was added.  The
  ``repoze.bfg.urldispatch.Route`` object implements this interface.

- The canonical attribute for accessing the routing pattern from a
  route object is now ``pattern`` rather than ``path``.

- The argument to ``repoze.bfg.configuration.Configurator.add_route``
  which was previously called ``path`` is now called ``pattern`` for
  better explicability.  For backwards compatibility purposes, passing
  a keyword argument named ``path`` to ``add_route`` will still work
  indefinitely.

- The ``path`` attribute to the ZCML ``route`` directive is now named
  ``pattern`` for better explicability.  The older ``path`` attribute
  will continue to work indefinitely.

- All narrative, API, and tutorial docs which referred to a route
  pattern as a ``path`` have now been updated to refer to them as a
  ``pattern``.

- The routesalchemy template has been updated to use ``pattern`` in
  its route declarations rather than ``path``.



</pre>
</div>
</content>
</entry>
<entry>
<title>Next release</title>
<updated>2010-04-29T18:08:51+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2010-04-29T18:08:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=7a3c22a7dcb688a637a6b9a0a317cf46f4d07af2'/>
<id>7a3c22a7dcb688a637a6b9a0a317cf46f4d07af2</id>
<content type='text'>
============

Paster Templates
----------------

- The ``bfg_alchemy`` and ``bfg_routesalchemy`` templates no longer
  register a ``handle_teardown`` event listener which calls
  ``DBSession.remove``.  This was found by Chris Withers to be
  unnecessary.

Documentation
-------------

- The "bfgwiki2" (URL dispatch wiki) tutorial code and documentation
  was changed to remove the ``handle_teardown`` event listener which
  calls ``DBSession.remove``.

- Any mention of the ``handle_teardown`` event listener as used by the
  paster templates was removed from the URL Dispatch narrative chapter.


</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
============

Paster Templates
----------------

- The ``bfg_alchemy`` and ``bfg_routesalchemy`` templates no longer
  register a ``handle_teardown`` event listener which calls
  ``DBSession.remove``.  This was found by Chris Withers to be
  unnecessary.

Documentation
-------------

- The "bfgwiki2" (URL dispatch wiki) tutorial code and documentation
  was changed to remove the ``handle_teardown`` event listener which
  calls ``DBSession.remove``.

- Any mention of the ``handle_teardown`` event listener as used by the
  paster templates was removed from the URL Dispatch narrative chapter.


</pre>
</div>
</content>
</entry>
<entry>
<title>- In ``bfg_routesalchemy``, ``bfg_alchemy`` and ``bfgwiki2`` tutorial,</title>
<updated>2010-01-13T15:14:03+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2010-01-13T15:14:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=788748e2afedb3d1e180a3033e20ed2d995056a3'/>
<id>788748e2afedb3d1e180a3033e20ed2d995056a3</id>
<content type='text'>
  clean up the SQLAlchemy connection by registering a
  ``repoze.tm.after_end`` callback instead of relying on a ``__del__``
  method of a ``Cleanup`` class added to the WSFI environment.  The
  ``__del__`` strategy was fragile and caused problems in the wild.
  Thanks to Daniel Holth for testing.


</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  clean up the SQLAlchemy connection by registering a
  ``repoze.tm.after_end`` callback instead of relying on a ``__del__``
  method of a ``Cleanup`` class added to the WSFI environment.  The
  ``__del__`` strategy was fragile and caused problems in the wild.
  Thanks to Daniel Holth for testing.


</pre>
</div>
</content>
</entry>
<entry>
<title>Normalize.</title>
<updated>2010-01-05T19:38:23+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2010-01-05T19:38:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=4a3a68da7707cdb3c1dfaf61a3fb8a29644d431d'/>
<id>4a3a68da7707cdb3c1dfaf61a3fb8a29644d431d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Overlong lines.</title>
<updated>2009-12-29T05:09:56+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2009-12-29T05:09:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=27477816ba22b1f1edead0c4ec6efe5459b33e94'/>
<id>27477816ba22b1f1edead0c4ec6efe5459b33e94</id>
<content type='text'>
Fix table.

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix table.

</pre>
</div>
</content>
</entry>
<entry>
<title>Features</title>
<updated>2009-12-17T16:00:02+00:00</updated>
<author>
<name>Chris McDonough</name>
<email>chrism@agendaless.com</email>
</author>
<published>2009-12-17T16:00:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.kingdread.de/cgit.cgi/pyramid/commit/?id=bc857e7e6e71a4001f03c608a18bac7dab36ccff'/>
<id>bc857e7e6e71a4001f03c608a18bac7dab36ccff</id>
<content type='text'>
--------

- The ``Configurator`` object now has two new methods: ``begin`` and
  ``end``.  The ``begin`` method is meant to be called before any
  "configuration" begins (e.g. before ``add_view``, et. al are
  called).  The ``end`` method is meant to be called after all
  "configuration" is complete.

  Previously, before there was imperative configuration at all (1.1
  and prior), configuration begin and end was invariably implied by
  the process of loading a ZCML file.  When a ZCML load happened, the
  threadlocal data structure containing the request and registry was
  modified before the load, and torn down after the load, making sure
  that all framework code that needed ``get_current_registry`` for the
  duration of the ZCML load was satisfied.

  Some API methods called during imperative configuration, (such as
  ``Configurator.add_view`` when a renderer is involved) end up for
  historical reasons calling ``get_current_registry``.  However, in
  1.2a5 and below, the Configurator supplied no functionality that
  allowed people to make sure that ``get_current_registry`` returned
  the registry implied by the configurator being used.  ``begin`` now
  serves this purpose.  Inversely, ``end`` pops the thread local
  stack, undoing the actions of ``begin``.

  We make this boundary explicit to reduce the potential for confusion
  when the configurator is used in different circumstances (e.g. in
  unit tests and app code vs. just in initial app setup).

  Existing code written for 1.2a1-1.2a5 which does not call ``begin``
  or ``end`` continues to work in the same manner it did before.  It
  is however suggested that this code be changed to call ``begin`` and
  ``end`` to reduce the potential for confusion in the future.

- All ``paster`` templates which generate an application skeleton now
  make use of the new ``begin`` and ``end`` methods of the
  Configurator they use in their respective copies of ``run.py`` and
  ``tests.py``.

Documentation
-------------

- All documentation that makes use of a ``Configurator`` object to do
  application setup and test setup now makes use of the new ``begin``
  and ``end`` methods of the configurator.

Bug Fixes
---------

- When a ``repoze.bfg.exceptions.NotFound`` or
  ``repoze.bfg.exceptions.Forbidden`` *class* (as opposed to instance)
  was raised as an exception within a root factory (or route root
  factory), the exception would not be caught properly by the
  ``repoze.bfg.`` Router and it would propagate to up the call stack,
  as opposed to rendering the not found view or the forbidden view as
  would have been expected.


</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
--------

- The ``Configurator`` object now has two new methods: ``begin`` and
  ``end``.  The ``begin`` method is meant to be called before any
  "configuration" begins (e.g. before ``add_view``, et. al are
  called).  The ``end`` method is meant to be called after all
  "configuration" is complete.

  Previously, before there was imperative configuration at all (1.1
  and prior), configuration begin and end was invariably implied by
  the process of loading a ZCML file.  When a ZCML load happened, the
  threadlocal data structure containing the request and registry was
  modified before the load, and torn down after the load, making sure
  that all framework code that needed ``get_current_registry`` for the
  duration of the ZCML load was satisfied.

  Some API methods called during imperative configuration, (such as
  ``Configurator.add_view`` when a renderer is involved) end up for
  historical reasons calling ``get_current_registry``.  However, in
  1.2a5 and below, the Configurator supplied no functionality that
  allowed people to make sure that ``get_current_registry`` returned
  the registry implied by the configurator being used.  ``begin`` now
  serves this purpose.  Inversely, ``end`` pops the thread local
  stack, undoing the actions of ``begin``.

  We make this boundary explicit to reduce the potential for confusion
  when the configurator is used in different circumstances (e.g. in
  unit tests and app code vs. just in initial app setup).

  Existing code written for 1.2a1-1.2a5 which does not call ``begin``
  or ``end`` continues to work in the same manner it did before.  It
  is however suggested that this code be changed to call ``begin`` and
  ``end`` to reduce the potential for confusion in the future.

- All ``paster`` templates which generate an application skeleton now
  make use of the new ``begin`` and ``end`` methods of the
  Configurator they use in their respective copies of ``run.py`` and
  ``tests.py``.

Documentation
-------------

- All documentation that makes use of a ``Configurator`` object to do
  application setup and test setup now makes use of the new ``begin``
  and ``end`` methods of the configurator.

Bug Fixes
---------

- When a ``repoze.bfg.exceptions.NotFound`` or
  ``repoze.bfg.exceptions.Forbidden`` *class* (as opposed to instance)
  was raised as an exception within a root factory (or route root
  factory), the exception would not be caught properly by the
  ``repoze.bfg.`` Router and it would propagate to up the call stack,
  as opposed to rendering the not found view or the forbidden view as
  would have been expected.


</pre>
</div>
</content>
</entry>
</feed>
