diff options
Diffstat (limited to 'docs/tutorials')
| -rw-r--r-- | docs/tutorials/bfgwiki2/basiclayout.rst | 23 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/authorization/tutorial/run.py | 18 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/basiclayout/tutorial/run.py | 14 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/models/tutorial/run.py | 17 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/views/tutorial/run.py | 17 |
5 files changed, 43 insertions, 46 deletions
diff --git a/docs/tutorials/bfgwiki2/basiclayout.rst b/docs/tutorials/bfgwiki2/basiclayout.rst index 5392660da..d30d919c1 100644 --- a/docs/tutorials/bfgwiki2/basiclayout.rst +++ b/docs/tutorials/bfgwiki2/basiclayout.rst @@ -119,26 +119,21 @@ function within the file named ``run.py``: :linenos: :language: py -#. *Lines 1-4*. Imports to support later code. +#. *Lines 1-8*. Imports to support later code. -#. *Lines 6-10*. We define a ``Cleanup`` class which has a - ``__del__`` method (the method called at Python object - destruction), which calls a function. +#. *Lines 10-14*. An event :term:`subscriber` which performs cleanup + at transaction boundaries. As a result of registering this event + subscriber, after the current transaction is committed or aborted, + our database connection will be removed. -#. *Lines 12-14*. An event :term:`subscriber` which adds a - ``Cleanup`` instance to the WSGI environment as - ``tutorial.sasession``. As a result of registering this event - subscriber, when the WSGI environment is cleaned up, our database - connection will be removed. - -#. *Lines 21-23*. Get the database configuration string from the +#. *Lines 22-25*. Get the database configuration string from the ``tutorial.ini`` file's ``[app:sql]`` section. This will be a URI (something like ``sqlite://``). -#. Line *24*. We initialize our SQL database using SQLAlchemy, passing +#. Line *26*. We initialize our SQL database using SQLAlchemy, passing it the db string. -#. *Line 25*. We construct a :term:`Configurator`. The first +#. *Line 27*. We construct a :term:`Configurator`. The first argument provided to the configurator is the :term:`root factory`, which is used by the :mod:`repoze.bfg` :term:`traversal` mechanism. Since this is a URL dispatch application, the root factory is @@ -146,7 +141,7 @@ function within the file named ``run.py``: argument. It contains a dictionary of settings parsed by PasteDeploy. -#. *Lines 26-29*. We then load a ZCML file to do application +#. *Lines 28-31*. We then load a ZCML file to do application configuration, and use the :meth:`repoze.bfg.configuration.Configurator.make_wsgi_app` method to return a :term:`WSGI` application. diff --git a/docs/tutorials/bfgwiki2/src/authorization/tutorial/run.py b/docs/tutorials/bfgwiki2/src/authorization/tutorial/run.py index 2506ca939..2e38bd29b 100644 --- a/docs/tutorials/bfgwiki2/src/authorization/tutorial/run.py +++ b/docs/tutorials/bfgwiki2/src/authorization/tutorial/run.py @@ -1,18 +1,18 @@ +import transaction + from repoze.bfg.configuration import Configurator +from repoze.tm import after_end +from repoze.tm import isActive from tutorial.models import DBSession from tutorial.models import initialize_sql from tutorial.models import RootFactory -class Cleanup: - def __init__(self, cleaner): - self.cleaner = cleaner - def __del__(self): - self.cleaner() - def handle_teardown(event): environ = event.request.environ - environ['tutorial.sasession'] = Cleanup(DBSession.remove) + if isActive(environ): + t = transaction.get() + after_end.register(DBSession.remove, t) def app(global_config, **settings): """ This function returns a WSGI application. @@ -22,8 +22,8 @@ def app(global_config, **settings): """ db_string = settings.get('db_string') if db_string is None: - raise ValueError( - "No 'db_string' value in application configuration.") + raise ValueError("No 'db_string' value in application " + "configuration.") initialize_sql(db_string) config = Configurator(settings=settings, root_factory=RootFactory) config.begin() diff --git a/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/run.py b/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/run.py index bc1197115..6105d3eea 100644 --- a/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/run.py +++ b/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/run.py @@ -1,17 +1,17 @@ +import transaction + from repoze.bfg.configuration import Configurator +from repoze.tm import after_end +from repoze.tm import isActive from tutorial.models import DBSession from tutorial.models import initialize_sql -class Cleanup: - def __init__(self, cleaner): - self.cleaner = cleaner - def __del__(self): - self.cleaner() - def handle_teardown(event): environ = event.request.environ - environ['tutorial.sasession'] = Cleanup(DBSession.remove) + if isActive(environ): + t = transaction.get() + after_end.register(DBSession.remove, t) def app(global_config, **settings): """ This function returns a WSGI application. diff --git a/docs/tutorials/bfgwiki2/src/models/tutorial/run.py b/docs/tutorials/bfgwiki2/src/models/tutorial/run.py index d00d32265..6105d3eea 100644 --- a/docs/tutorials/bfgwiki2/src/models/tutorial/run.py +++ b/docs/tutorials/bfgwiki2/src/models/tutorial/run.py @@ -1,17 +1,17 @@ +import transaction + from repoze.bfg.configuration import Configurator +from repoze.tm import after_end +from repoze.tm import isActive from tutorial.models import DBSession from tutorial.models import initialize_sql -class Cleanup: - def __init__(self, cleaner): - self.cleaner = cleaner - def __del__(self): - self.cleaner() - def handle_teardown(event): environ = event.request.environ - environ['tutorial.sasession'] = Cleanup(DBSession.remove) + if isActive(environ): + t = transaction.get() + after_end.register(DBSession.remove, t) def app(global_config, **settings): """ This function returns a WSGI application. @@ -21,7 +21,8 @@ def app(global_config, **settings): """ db_string = settings.get('db_string') if db_string is None: - raise ValueError("No 'db_string' value in application configuration.") + raise ValueError("No 'db_string' value in application " + "configuration.") initialize_sql(db_string) config = Configurator(settings=settings) config.begin() diff --git a/docs/tutorials/bfgwiki2/src/views/tutorial/run.py b/docs/tutorials/bfgwiki2/src/views/tutorial/run.py index d00d32265..6105d3eea 100644 --- a/docs/tutorials/bfgwiki2/src/views/tutorial/run.py +++ b/docs/tutorials/bfgwiki2/src/views/tutorial/run.py @@ -1,17 +1,17 @@ +import transaction + from repoze.bfg.configuration import Configurator +from repoze.tm import after_end +from repoze.tm import isActive from tutorial.models import DBSession from tutorial.models import initialize_sql -class Cleanup: - def __init__(self, cleaner): - self.cleaner = cleaner - def __del__(self): - self.cleaner() - def handle_teardown(event): environ = event.request.environ - environ['tutorial.sasession'] = Cleanup(DBSession.remove) + if isActive(environ): + t = transaction.get() + after_end.register(DBSession.remove, t) def app(global_config, **settings): """ This function returns a WSGI application. @@ -21,7 +21,8 @@ def app(global_config, **settings): """ db_string = settings.get('db_string') if db_string is None: - raise ValueError("No 'db_string' value in application configuration.") + raise ValueError("No 'db_string' value in application " + "configuration.") initialize_sql(db_string) config = Configurator(settings=settings) config.begin() |
