summaryrefslogtreecommitdiff
path: root/TODO.txt
blob: 0033eb3b3d63cc18032ea43247396b80b301ebac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
Pyramid TODOs
=============

Must-Have (before 1.0)
----------------------

- Add a ``handler`` ZCML directive.  This implies some slightly dicey
  refactoring of the configurator to allow it to generate ZCML
  "discriminators" for views and routes, that could be implemented in terms
  of "twophase configuration" in "should have" below.

- Provide a .flash API on session object.

- Use ``@register_view`` instead of ``@view_config`` and change view docs to
  use "view registration" instead of "view configuration".

Should-Have
-----------

- Add docs for httpexceptions module for each webob.exc class that inherits
  from WSGIHTTPException.

- Remove "BFG" from Pyramid-specific environ variables.

- translationdir ZCML directive use of ``path_spec`` should maybe die.

- Add CRSF token creation/checking machinery (only "should have" vs. "must
  have" because I'm not sure it belongs in Pyramid.. it definitely must exist
  in formgen libraries, and *might* belong in Pyramid).

- Change "Cleaning up After a Request" in the urldispatch chapter to
  use ``request.add_response_callback``.

- Twophase configuration (config = Configurator(autocommit=False)).  Maybe
  use ``zope.configuration`` ConfigurationContext as config.registry.ctx and
  push execution into the configurator.

Nice-to-Have
------------

- 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.

- ``decorator=`` parameter to view_config.  This would replace the existing
  _map_view "decorator" if it existed.

- 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 route matching decision.

- 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

- Provide a response_cookies attribute on the request for rendered
  responses that can be used as input to response.set_cookie.

- 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``.

- One way to split up views chapter: views with renderers / views without
  renderers.