diff options
| author | Chris McDonough <chrism@plope.com> | 2010-11-04 02:20:15 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2010-11-04 02:20:15 -0400 |
| commit | b3b7132a8c2964bf3638f0be23dcf87dca737877 (patch) | |
| tree | 740ed6b6a8c791e800c51084b1efcf809b7ef71a /docs | |
| parent | 3940b26876f0979c31fcf89f13673757d869491f (diff) | |
| download | pyramid-b3b7132a8c2964bf3638f0be23dcf87dca737877.tar.gz pyramid-b3b7132a8c2964bf3638f0be23dcf87dca737877.tar.bz2 pyramid-b3b7132a8c2964bf3638f0be23dcf87dca737877.zip | |
- The ZODB Wiki tutorial was updated to take into account changes to the
``pyramid_zodb`` paster template.
Diffstat (limited to 'docs')
25 files changed, 184 insertions, 185 deletions
diff --git a/docs/tutorials/wiki/authorization.rst b/docs/tutorials/wiki/authorization.rst index 189401a45..e63a610c2 100644 --- a/docs/tutorials/wiki/authorization.rst +++ b/docs/tutorials/wiki/authorization.rst @@ -51,7 +51,7 @@ Adding ``security.py`` ~~~~~~~~~~~~~~~~~~~~~~ Add a ``security.py`` module within your package (in the same -directory as ``run.py``, ``views.py``, etc) with the following +directory as ``__init__.py``, ``views.py``, etc) with the following content: .. literalinclude:: src/authorization/tutorial/security.py diff --git a/docs/tutorials/wiki/basiclayout.rst b/docs/tutorials/wiki/basiclayout.rst index 2649a345f..a03529e21 100644 --- a/docs/tutorials/wiki/basiclayout.rst +++ b/docs/tutorials/wiki/basiclayout.rst @@ -11,12 +11,53 @@ The source code for this tutorial stage can be browsed via `http://github.com/Pylons/pyramid/tree/master/docs/tutorials/wiki/src/basiclayout/ <http://github.com/Pylons/pyramid/tree/master/docs/tutorials/wiki/src/basiclayout/>`_. -``__init__.py`` ---------------- +App Startup with ``__init__.py`` +-------------------------------- -A directory on disk can be turned into a Python :term:`package` by -containing an ``__init__.py`` file. Even if empty, this marks a -directory as a Python package. +A directory on disk can be turned into a Python :term:`package` by containing +an ``__init__.py`` file. Even if empty, this marks a directory as a Python +package. Our application uses ``__init__.py`` as both a package marker, as +well as to contain application configuration code. + +When you run the application using the ``paster`` command using the +``development.ini`` generated config file, the application configuration +points at an Setuptools *entry point* described as ``egg:tutorial#app``. In +our application, because the application's ``setup.py`` file says so, this +entry point happens to be the ``app`` function within the file named +``__init__.py``: + + .. literalinclude:: src/basiclayout/tutorial/__init__.py + :linenos: + :language: py + +#. *Lines 1-2*. Perform some dependency imports. + +#. *Line 12*. Get the ZODB configuration from the ``development.ini`` + file's ``[app:main]`` section represented by the ``settings`` + dictionary passed to our ``app`` function. This will be a URI + (something like ``file:///path/to/Data.fs``). + +#. *Line 15*. We create a "finder" object using the + ``PersistentApplicationFinder`` helper class, passing it the ZODB + URI and the "appmaker" we've imported from ``models.py``. + +#. *Lines 16 - 17*. We create a :term:`root factory` which uses the + finder to return a ZODB root object. + +#. *Line 18*. We construct a :term:`Configurator` with a :term:`root + factory` and the settings keywords parsed by PasteDeploy. The root + factory is named ``get_root``. + +#. *Lines 19-21*. Begin configuration using the ``begin`` method of + the :meth:`pyramid.configuration.Configurator` class, load the + ``configure.zcml`` file from our package using the + :meth:`pyramid.configuration.Configurator.load_zcml` method, and + end configuration using the + :meth:`pyramid.configuration.Configurator.end` method. + +#. *Line 22*. Use the + :meth:`pyramid.configuration.Configurator.make_wsgi_app` method + to return a :term:`WSGI` application. Configuration With ``configure.zcml`` -------------------------------------- @@ -92,46 +133,3 @@ Here is the source for ``models.py``: commit the transaction. We then return the application root object. -App Startup with ``run.py`` ---------------------------- - -When you run the application using the ``paster`` command using the -``tutorial.ini`` generated config file, the application configuration -points at an Setuptools *entry point* described as -``egg:tutorial#app``. In our application, because the application's -``setup.py`` file says so, this entry point happens to be the ``app`` -function within the file named ``run.py``: - - .. literalinclude:: src/basiclayout/tutorial/run.py - :linenos: - :language: py - -#. *Lines 1-2*. Perform some dependency imports. - -#. *Line 12*. Get the ZODB configuration from the ``tutorial.ini`` - file's ``[app:main]`` section represented by the ``settings`` - dictionary passed to our ``app`` function. This will be a URI - (something like ``file:///path/to/Data.fs``). - -#. *Line 15*. We create a "finder" object using the - ``PersistentApplicationFinder`` helper class, passing it the ZODB - URI and the "appmaker" we've imported from ``models.py``. - -#. *Lines 16 - 17*. We create a :term:`root factory` which uses the - finder to return a ZODB root object. - -#. *Line 18*. We construct a :term:`Configurator` with a :term:`root - factory` and the settings keywords parsed by PasteDeploy. The root - factory is named ``get_root``. - -#. *Lines 19-21*. Begin configuration using the ``begin`` method of - the :meth:`pyramid.configuration.Configurator` class, load the - ``configure.zcml`` file from our package using the - :meth:`pyramid.configuration.Configurator.load_zcml` method, and - end configuration using the - :meth:`pyramid.configuration.Configurator.end` method. - -#. *Line 22*. Use the - :meth:`pyramid.configuration.Configurator.make_wsgi_app` method - to return a :term:`WSGI` application. - diff --git a/docs/tutorials/wiki/definingmodels.rst b/docs/tutorials/wiki/definingmodels.rst index b63d0c21b..3fa72dd87 100644 --- a/docs/tutorials/wiki/definingmodels.rst +++ b/docs/tutorials/wiki/definingmodels.rst @@ -75,7 +75,7 @@ Add an Appmaker --------------- We're using a mini-framework callable named -``PersistentApplicationFinder`` in our application (see ``run.py``). +``PersistentApplicationFinder`` in our application (see ``__init__.py``). A ``PersistentApplicationFinder`` accepts a ZODB URL as well as an "appmaker" callback. This callback typically lives in the ``models.py`` file. diff --git a/docs/tutorials/wiki/definingviews.rst b/docs/tutorials/wiki/definingviews.rst index 41a9ad373..05ce2fbcd 100644 --- a/docs/tutorials/wiki/definingviews.rst +++ b/docs/tutorials/wiki/definingviews.rst @@ -342,20 +342,20 @@ something like so: :linenos: :language: xml -Examining ``tutorial.ini`` -========================== +Examining ``development.ini`` +============================= -Let's take a look at our ``tutorial.ini`` file. The contents of the +Let's take a look at our ``development.ini`` file. The contents of the file are as follows: -.. literalinclude:: src/models/tutorial.ini +.. literalinclude:: src/models/development.ini :linenos: :language: ini The WSGI Pipeline ----------------- -Within ``tutorial.ini``, note the existence of a ``[pipeline:main]`` +Within ``development.ini``, note the existence of a ``[pipeline:main]`` section which specifies our WSGI pipeline. This "pipeline" will be served up as our WSGI application. As far as the WSGI server is concerned the pipeline *is* our application. Simpler configurations @@ -377,10 +377,10 @@ Let's add a piece of middleware to the WSGI pipeline: ``egg:Paste#evalerror`` middleware which displays debuggable errors in the browser while you're developing (not recommended for deployment). Let's insert evalerror into the pipeline right below -"egg:repoze.zodbconn#closer", making our resulting ``tutorial.ini`` +"egg:repoze.zodbconn#closer", making our resulting ``development.ini`` file look like so: -.. literalinclude:: src/views/tutorial.ini +.. literalinclude:: src/views/development.ini :linenos: :language: ini diff --git a/docs/tutorials/wiki/installation.rst b/docs/tutorials/wiki/installation.rst index 237abe7c3..9fff233c1 100644 --- a/docs/tutorials/wiki/installation.rst +++ b/docs/tutorials/wiki/installation.rst @@ -244,11 +244,19 @@ You will see the generated application's default page. Decisions the ``pyramid_zodb`` Template Has Made For You ======================================================== -Creating a project using the ``pyramid_zodb`` template makes the -assumption that you are willing to use :term:`ZODB` as persistent -storage and :term:`traversal` to map URLs to code. :mod:`pyramid` -supports any persistent storage mechanism (e.g. a SQL database or -filesystem files, etc). It also supports an additional mechanism to -map URLs to code (:term:`URL dispatch`). However, for the purposes of -this tutorial, we'll only be using traversal and ZODB. +Creating a project using the ``pyramid_zodb`` template makes the following +assumptions: + +- you are willing to use :term:`ZODB` as persistent storage + +- you are willing to use :term:`traversal` to map URLs to code. + +- you want to use :term:`ZCML` to perform configuration. + +.. note:: + + :mod:`pyramid` supports any persistent storage mechanism (e.g. a SQL + database or filesystem files, etc). :mod:`pyramid` also supports an + additional mechanism to map URLs to code (:term:`URL dispatch`). However, + for the purposes of this tutorial, we'll only be using traversal and ZODB. diff --git a/docs/tutorials/wiki/src/authorization/tutorial.ini b/docs/tutorials/wiki/src/authorization/development.ini index 181682585..181682585 100644 --- a/docs/tutorials/wiki/src/authorization/tutorial.ini +++ b/docs/tutorials/wiki/src/authorization/development.ini diff --git a/docs/tutorials/wiki/src/authorization/setup.py b/docs/tutorials/wiki/src/authorization/setup.py index bb2482cce..ec8b9b1d5 100644 --- a/docs/tutorials/wiki/src/authorization/setup.py +++ b/docs/tutorials/wiki/src/authorization/setup.py @@ -37,7 +37,7 @@ setup(name='tutorial', test_suite="tutorial", entry_points = """\ [paste.app_factory] - app = tutorial.run:app + app = tutorial:app """ ) diff --git a/docs/tutorials/wiki/src/authorization/tutorial/__init__.py b/docs/tutorials/wiki/src/authorization/tutorial/__init__.py index cbdfd3ac6..5eef90841 100644 --- a/docs/tutorials/wiki/src/authorization/tutorial/__init__.py +++ b/docs/tutorials/wiki/src/authorization/tutorial/__init__.py @@ -1,2 +1,22 @@ -# A package +from pyramid.configuration import Configurator +from repoze.zodbconn.finder import PersistentApplicationFinder +from tutorial.models import appmaker + +def app(global_config, **settings): + """ This function returns a WSGI application. + + It is usually called by the PasteDeploy framework during + ``paster serve``. + """ + zodb_uri = settings.get('zodb_uri') + if zodb_uri is None: + raise ValueError("No 'zodb_uri' in application configuration.") + finder = PersistentApplicationFinder(zodb_uri, appmaker) + def get_root(request): + return finder(request.environ) + config = Configurator(root_factory=get_root, settings=settings) + config.begin() + config.load_zcml('configure.zcml') + config.end() + return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/authorization/tutorial/run.py b/docs/tutorials/wiki/src/authorization/tutorial/run.py deleted file mode 100644 index 875e77590..000000000 --- a/docs/tutorials/wiki/src/authorization/tutorial/run.py +++ /dev/null @@ -1,23 +0,0 @@ -from pyramid.configuration import Configurator -from repoze.zodbconn.finder import PersistentApplicationFinder - -from tutorial.models import appmaker - -def app(global_config, **settings): - """ This function returns a WSGI application. - - It is usually called by the PasteDeploy framework during - ``paster serve``. - """ - zodb_uri = settings.get('zodb_uri') - if zodb_uri is None: - raise ValueError("No 'zodb_uri' in application configuration.") - finder = PersistentApplicationFinder(zodb_uri, appmaker) - def get_root(request): - return finder(request.environ) - config = Configurator(root_factory=get_root, settings=settings) - config.begin() - config.load_zcml('configure.zcml') - config.end() - return config.make_wsgi_app() - diff --git a/docs/tutorials/wiki/src/basiclayout/tutorial.ini b/docs/tutorials/wiki/src/basiclayout/development.ini index 897a2bde6..897a2bde6 100644 --- a/docs/tutorials/wiki/src/basiclayout/tutorial.ini +++ b/docs/tutorials/wiki/src/basiclayout/development.ini diff --git a/docs/tutorials/wiki/src/basiclayout/setup.py b/docs/tutorials/wiki/src/basiclayout/setup.py index f4a011c7e..c6c694e3d 100644 --- a/docs/tutorials/wiki/src/basiclayout/setup.py +++ b/docs/tutorials/wiki/src/basiclayout/setup.py @@ -37,6 +37,6 @@ setup(name='tutorial', test_suite="tutorial", entry_points = """\ [paste.app_factory] - app = tutorial.run:app + app = tutorial:app """ ) diff --git a/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py b/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py index cbdfd3ac6..875e77590 100644 --- a/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py +++ b/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py @@ -1,2 +1,23 @@ -# A package +from pyramid.configuration import Configurator +from repoze.zodbconn.finder import PersistentApplicationFinder + +from tutorial.models import appmaker + +def app(global_config, **settings): + """ This function returns a WSGI application. + + It is usually called by the PasteDeploy framework during + ``paster serve``. + """ + zodb_uri = settings.get('zodb_uri') + if zodb_uri is None: + raise ValueError("No 'zodb_uri' in application configuration.") + finder = PersistentApplicationFinder(zodb_uri, appmaker) + def get_root(request): + return finder(request.environ) + config = Configurator(root_factory=get_root, settings=settings) + config.begin() + config.load_zcml('configure.zcml') + config.end() + return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/basiclayout/tutorial/run.py b/docs/tutorials/wiki/src/basiclayout/tutorial/run.py deleted file mode 100644 index 5eef90841..000000000 --- a/docs/tutorials/wiki/src/basiclayout/tutorial/run.py +++ /dev/null @@ -1,22 +0,0 @@ -from pyramid.configuration import Configurator -from repoze.zodbconn.finder import PersistentApplicationFinder - -from tutorial.models import appmaker - -def app(global_config, **settings): - """ This function returns a WSGI application. - - It is usually called by the PasteDeploy framework during - ``paster serve``. - """ - zodb_uri = settings.get('zodb_uri') - if zodb_uri is None: - raise ValueError("No 'zodb_uri' in application configuration.") - finder = PersistentApplicationFinder(zodb_uri, appmaker) - def get_root(request): - return finder(request.environ) - config = Configurator(root_factory=get_root, settings=settings) - config.begin() - config.load_zcml('configure.zcml') - config.end() - return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/models/tutorial.ini b/docs/tutorials/wiki/src/models/development.ini index 897a2bde6..897a2bde6 100644 --- a/docs/tutorials/wiki/src/models/tutorial.ini +++ b/docs/tutorials/wiki/src/models/development.ini diff --git a/docs/tutorials/wiki/src/models/setup.py b/docs/tutorials/wiki/src/models/setup.py index f4a011c7e..c6c694e3d 100644 --- a/docs/tutorials/wiki/src/models/setup.py +++ b/docs/tutorials/wiki/src/models/setup.py @@ -37,6 +37,6 @@ setup(name='tutorial', test_suite="tutorial", entry_points = """\ [paste.app_factory] - app = tutorial.run:app + app = tutorial:app """ ) diff --git a/docs/tutorials/wiki/src/models/tutorial/__init__.py b/docs/tutorials/wiki/src/models/tutorial/__init__.py index cbdfd3ac6..875e77590 100644 --- a/docs/tutorials/wiki/src/models/tutorial/__init__.py +++ b/docs/tutorials/wiki/src/models/tutorial/__init__.py @@ -1,2 +1,23 @@ -# A package +from pyramid.configuration import Configurator +from repoze.zodbconn.finder import PersistentApplicationFinder + +from tutorial.models import appmaker + +def app(global_config, **settings): + """ This function returns a WSGI application. + + It is usually called by the PasteDeploy framework during + ``paster serve``. + """ + zodb_uri = settings.get('zodb_uri') + if zodb_uri is None: + raise ValueError("No 'zodb_uri' in application configuration.") + finder = PersistentApplicationFinder(zodb_uri, appmaker) + def get_root(request): + return finder(request.environ) + config = Configurator(root_factory=get_root, settings=settings) + config.begin() + config.load_zcml('configure.zcml') + config.end() + return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/models/tutorial/run.py b/docs/tutorials/wiki/src/models/tutorial/run.py deleted file mode 100644 index 5eef90841..000000000 --- a/docs/tutorials/wiki/src/models/tutorial/run.py +++ /dev/null @@ -1,22 +0,0 @@ -from pyramid.configuration import Configurator -from repoze.zodbconn.finder import PersistentApplicationFinder - -from tutorial.models import appmaker - -def app(global_config, **settings): - """ This function returns a WSGI application. - - It is usually called by the PasteDeploy framework during - ``paster serve``. - """ - zodb_uri = settings.get('zodb_uri') - if zodb_uri is None: - raise ValueError("No 'zodb_uri' in application configuration.") - finder = PersistentApplicationFinder(zodb_uri, appmaker) - def get_root(request): - return finder(request.environ) - config = Configurator(root_factory=get_root, settings=settings) - config.begin() - config.load_zcml('configure.zcml') - config.end() - return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/viewdecorators/tutorial.ini b/docs/tutorials/wiki/src/viewdecorators/development.ini index 181682585..181682585 100644 --- a/docs/tutorials/wiki/src/viewdecorators/tutorial.ini +++ b/docs/tutorials/wiki/src/viewdecorators/development.ini diff --git a/docs/tutorials/wiki/src/viewdecorators/setup.py b/docs/tutorials/wiki/src/viewdecorators/setup.py index 977990a29..e579c3dae 100644 --- a/docs/tutorials/wiki/src/viewdecorators/setup.py +++ b/docs/tutorials/wiki/src/viewdecorators/setup.py @@ -37,6 +37,6 @@ setup(name='tutorial', test_suite="tutorial", entry_points = """\ [paste.app_factory] - app = tutorial.run:app + app = tutorial:app """ ) diff --git a/docs/tutorials/wiki/src/viewdecorators/tutorial/__init__.py b/docs/tutorials/wiki/src/viewdecorators/tutorial/__init__.py index cbdfd3ac6..875e77590 100644 --- a/docs/tutorials/wiki/src/viewdecorators/tutorial/__init__.py +++ b/docs/tutorials/wiki/src/viewdecorators/tutorial/__init__.py @@ -1,2 +1,23 @@ -# A package +from pyramid.configuration import Configurator +from repoze.zodbconn.finder import PersistentApplicationFinder + +from tutorial.models import appmaker + +def app(global_config, **settings): + """ This function returns a WSGI application. + + It is usually called by the PasteDeploy framework during + ``paster serve``. + """ + zodb_uri = settings.get('zodb_uri') + if zodb_uri is None: + raise ValueError("No 'zodb_uri' in application configuration.") + finder = PersistentApplicationFinder(zodb_uri, appmaker) + def get_root(request): + return finder(request.environ) + config = Configurator(root_factory=get_root, settings=settings) + config.begin() + config.load_zcml('configure.zcml') + config.end() + return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/viewdecorators/tutorial/run.py b/docs/tutorials/wiki/src/viewdecorators/tutorial/run.py deleted file mode 100644 index 5eef90841..000000000 --- a/docs/tutorials/wiki/src/viewdecorators/tutorial/run.py +++ /dev/null @@ -1,22 +0,0 @@ -from pyramid.configuration import Configurator -from repoze.zodbconn.finder import PersistentApplicationFinder - -from tutorial.models import appmaker - -def app(global_config, **settings): - """ This function returns a WSGI application. - - It is usually called by the PasteDeploy framework during - ``paster serve``. - """ - zodb_uri = settings.get('zodb_uri') - if zodb_uri is None: - raise ValueError("No 'zodb_uri' in application configuration.") - finder = PersistentApplicationFinder(zodb_uri, appmaker) - def get_root(request): - return finder(request.environ) - config = Configurator(root_factory=get_root, settings=settings) - config.begin() - config.load_zcml('configure.zcml') - config.end() - return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/views/tutorial.ini b/docs/tutorials/wiki/src/views/development.ini index 181682585..181682585 100644 --- a/docs/tutorials/wiki/src/views/tutorial.ini +++ b/docs/tutorials/wiki/src/views/development.ini diff --git a/docs/tutorials/wiki/src/views/setup.py b/docs/tutorials/wiki/src/views/setup.py index f4a011c7e..c6c694e3d 100644 --- a/docs/tutorials/wiki/src/views/setup.py +++ b/docs/tutorials/wiki/src/views/setup.py @@ -37,6 +37,6 @@ setup(name='tutorial', test_suite="tutorial", entry_points = """\ [paste.app_factory] - app = tutorial.run:app + app = tutorial:app """ ) diff --git a/docs/tutorials/wiki/src/views/tutorial/__init__.py b/docs/tutorials/wiki/src/views/tutorial/__init__.py index cbdfd3ac6..875e77590 100644 --- a/docs/tutorials/wiki/src/views/tutorial/__init__.py +++ b/docs/tutorials/wiki/src/views/tutorial/__init__.py @@ -1,2 +1,23 @@ -# A package +from pyramid.configuration import Configurator +from repoze.zodbconn.finder import PersistentApplicationFinder + +from tutorial.models import appmaker + +def app(global_config, **settings): + """ This function returns a WSGI application. + + It is usually called by the PasteDeploy framework during + ``paster serve``. + """ + zodb_uri = settings.get('zodb_uri') + if zodb_uri is None: + raise ValueError("No 'zodb_uri' in application configuration.") + finder = PersistentApplicationFinder(zodb_uri, appmaker) + def get_root(request): + return finder(request.environ) + config = Configurator(root_factory=get_root, settings=settings) + config.begin() + config.load_zcml('configure.zcml') + config.end() + return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/views/tutorial/run.py b/docs/tutorials/wiki/src/views/tutorial/run.py deleted file mode 100644 index 5eef90841..000000000 --- a/docs/tutorials/wiki/src/views/tutorial/run.py +++ /dev/null @@ -1,22 +0,0 @@ -from pyramid.configuration import Configurator -from repoze.zodbconn.finder import PersistentApplicationFinder - -from tutorial.models import appmaker - -def app(global_config, **settings): - """ This function returns a WSGI application. - - It is usually called by the PasteDeploy framework during - ``paster serve``. - """ - zodb_uri = settings.get('zodb_uri') - if zodb_uri is None: - raise ValueError("No 'zodb_uri' in application configuration.") - finder = PersistentApplicationFinder(zodb_uri, appmaker) - def get_root(request): - return finder(request.environ) - config = Configurator(root_factory=get_root, settings=settings) - config.begin() - config.load_zcml('configure.zcml') - config.end() - return config.make_wsgi_app() |
