Pyramid TODOs ============= Must-Have (before 1.0) ---------------------- - Write a "Whats New" (delta from BFG 1.3) - API docs for ``pyramid.views.action``. (also, @action decorator uses ``name`` for the method name; consider whether this will be confused with ``name`` of ``view_config`` which means something else) - Add docs for ``__action_decorator__`` attr of handler. - Use a commit veto when configuring repoze.tm2 in paster templates for non-1X, 2X, or 3X responses. - Figure out how to slim the herd of paster templates. Related: https://github.com/Pylons/pyramid/issues#issue/40, https://github.com/Pylons/pyramid/issues#issue/42, https://github.com/Pylons/pyramid/issues#issue/44, https://github.com/Pylons/pyramid/issues#issue/94 , https://github.com/Pylons/pyramid/issues#issue/95 - Explain how to use i18n localization in Mako and Jinja2. - Turn Forbidden status code into a 403 (it's currently a 401, which is for bw compat, but is misleading). - Fix too-long template lines in tutorials for PDF renderings. - Bug in URL dispatch pattern matching: https://github.com/Pylons/pyramid/issues#issue/90 - Allow ``pyramid.security.remember`` to accept a list of tokens for use when there's an ``auth_tkt`` authentication policy: https://github.com/Pylons/pyramid/issues#issue/81 and https://github.com/Pylons/pyramid/issues#issue/78 - Add docs for ``route_path`` and ``route_url``, etc to Request API docs (see also https://github.com/Pylons/pyramid/issues#issue/19). Should-Have ----------- - Consider adding a default exception view for HTTPException and attendant ``redirect`` and ``abort`` functions ala Pylons. - Add notes about renderer response attrs to request docs. - Add an example of using a cascade to serve static assets from the root. - Explore static file return from handler action using wsgiapp2 + fileapp. - Static (URL-generation only) routes. - Add narrative docs for wsgiapp and wsgiapp2. - translationdir ZCML directive use of ``path_spec`` should maybe die. - Change "Cleaning up After a Request" in the urldispatch chapter to use ``request.add_response_callback``. - Provide a response_set_cookie method on the request for rendered responses that can be used as input to response.set_cookie? - Make it possible to get at ACLDenied data from Forbidden response in exceptionview. - ``config.meta`` or ``config.extend`` classmethod which adds a new method ("directive") to the Configurator class. Nice-to-Have ------------ - Better "Extending" chapter. - Try to make test suite pass on IronPython. - 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. - Supply ``X-Vhm-Host`` support. - Basic WSGI documentation (pipeline / app / server). - Fix message catalog extraction / compilation documentation. - Change docs about creating a venusian decorator to not use ZCA. - 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). - Create a ``render_view`` that works by using config.derive_view against an existing view instead of querying the registry. - Create a function which performs a recursive request. - Debug option to print view matching decision. - Script or paster command that prints, for a given URL, the views that might match. Underneath each potentially matching route, list the predicates required. Underneath each route+predicate set, print each view that might match and its predicates. E.g. with the input URL ``/foo``:: '/foo' (foo_xhr) xhr = True (no view predicates) mypackage.views.MyXHRFooView.__call__ '/{action}' (action_route) request_method = 'POST' action = '^foo$' mypackage.views.MyView.foo_POST request_method = 'GET' action = '^foo$' mypackage.views.MyView.foo_GET - Raise an exception when a value in response_headerlist is not a string or decide to encode. - Update App engine chapter with less creaky directions. - 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.