Pyramid TODOs
|
=============
|
|
Nice-to-Have
|
------------
|
|
- config.set_registry_attr with conflict detection... make sure the attr is
|
added before a commit, but register an action so a conflict can be detected.
|
|
- Provide the presumed renderer name to the called view as an attribute of
|
the request.
|
|
- Have action methods return their discriminators.
|
|
- Modify view mapper narrative docs to not use pyramid_handlers.
|
|
- Modify the urldispatch chapter examples to assume a scan rather than
|
``add_view``.
|
|
- Introspection:
|
|
* ``default root factory`` category (prevent folks from needing to searh
|
"root factories" category)?
|
|
* ``default view mapper`` category (prevent folks from needing to search
|
"view mappers" category)?
|
|
* get rid of "tweens" category (can't sort properly?)
|
|
- Fix deployment recipes in cookbook (discourage proxying without changing
|
server).
|
|
- Try "with transaction.manager" in an exception view with SQLA (preempt
|
homina homina response about how to write "to the database" from within in
|
an exception view). Note: tried this and couldn't formulate the right
|
situation where the database could not be written to within an exception
|
view (but didn't try exhaustively).
|
|
- Add narrative docs for wsgiapp and wsgiapp2.
|
|
- Basic WSGI documentation (pipeline / app / server).
|
|
- Change docs about creating a venusian decorator to not use ZCA (use
|
configurator methods instead).
|
|
- Try to better explain the relationship between a renderer and a template in
|
the templates chapter and elsewhere. Scan the documentation for reference
|
to a renderer as *only* view configuration (it's a larger concept now).
|
|
- Add better docs about what-to-do-when-behind-a-proxy: rutter ("/foo =
|
app1" and "domain app1.localhost = app1"), ProxyPreserveHost and the nginx
|
proxy_params, preserving HTTPS URLs.
|
|
- Debug option to print view matching decision (e.g. debug_viewlookup or so).
|
|
- Non-bwcompat use of threadlocals that need to be documented or ameliorated:
|
|
security.principals_allowed_by_permission
|
|
resource.OverrideProvider._get_overrides: can't credibly be removed,
|
because it stores an overrideprovider as a module-scope global.
|
|
traversal.traverse: this API is a stepchild, and needs to be changed.
|
|
Configurator.add_translation_dirs: not passed any context but a message,
|
can't credibly be removed.
|
|
- Deprecate pyramid.security.view_execution_permitted (it only works for
|
traversal).
|
|
- Provide a ``has_view`` function.
|
|
- Update App engine chapter with less creaky directions.
|
|
- Idea from Zart:
|
|
diff --git a/pyramid/paster.py b/pyramid/paster.py
|
index b0e4d79..b3bd82a 100644
|
--- a/pyramid/paster.py
|
+++ b/pyramid/paster.py
|
@@ -8,6 +8,7 @@ from paste.deploy import (
|
from pyramid.compat import configparser
|
from logging.config import fileConfig
|
from pyramid.scripting import prepare
|
+from pyramid.config import Configurator
|
|
def get_app(config_uri, name=None, loadapp=loadapp):
|
""" Return the WSGI application named ``name`` in the PasteDeploy
|
@@ -111,3 +112,10 @@ def bootstrap(config_uri, request=None):
|
env['app'] = app
|
return env
|
|
+def make_pyramid_app(global_conf, app=None, **settings):
|
+ """Return pyramid application configured with provided settings"""
|
+ config = Configurator(package='pyramid', settings=settings)
|
+ if app:
|
+ config.include(app)
|
+ app = config.make_wsgi_app()
|
+ return app
|
diff --git a/setup.py b/setup.py
|
index 03ebb42..91e0e21 100644
|
--- a/setup.py
|
+++ b/setup.py
|
@@ -118,6 +118,8 @@ setup(name='pyramid',
|
[paste.server_runner]
|
wsgiref = pyramid.scripts.pserve:wsgiref_server_runner
|
cherrypy = pyramid.scripts.pserve:cherrypy_server_runner
|
+ [paster.app_factory]
|
+ main = pyramid.paster:make_pyramid_app
|
"""
|
)
|
|
|
Future
|
------
|
|
- 1.9: Remove set_request_property.
|
- 1.9: Remove extra code enabling ``pyramid.security.remember(principal=...)``
|
and force use of ``userid``.
|
|
Probably Bad Ideas
|
------------------
|
|
- Add functionality that mocks the behavior of ``repoze.browserid``.
|
|
- Consider implementing the API outlined in
|
http://plope.com/pyramid_auth_design_api_postmortem, phasing out the
|
current auth-n-auth abstractions in a backwards compatible way.
|
|
- Maybe add ``add_renderer_globals`` method to Configurator.
|
|
- Supply ``X-Vhm-Host`` support (probably better to do what paste#prefix
|
middleware does).
|
|
- Have ``remember`` and ``forget`` actually set headers on the response using
|
a response callback (and return the empty list)?
|
|
- http://pythonguy.wordpress.com/2011/06/22/dynamic-variables-revisited/
|
instead of thread locals
|
|
- Context manager for creating a new configurator (replacing
|
``with_package``). E.g.::
|
|
with config.partial(package='bar') as c:
|
c.add_view(...)
|
|
or::
|
|
with config.partial(introspection=False) as c:
|
c.add_view(..)
|
|
- _fix_registry should dictify the registry being fixed.
|
|
- Apply a prefix to the userid principal to avoid poisoning the principal
|
namespace. See https://github.com/Pylons/pyramid/issues/2060
|