Chris McDonough
2011-01-31 699da1dc1582538dbd817e53fbc51333a0d525cf
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Pyramid TODOs
=============
 
Should-Have
-----------
 
- https://github.com/Pylons/pyramid/issues#issue/67 (fixing would make it
  possible to render a static site from a static dir).
 
- Consider per-form_id CSRF instead of per-session global CSRF token.
 
- I18N support for pyramid_jinja2.  See also -
  http://groups.google.com/group/pylons-devel/msg/ab58353594b135c9 and
  https://github.com/Pylons/pyramid_jinja2/pull/14 
 
- Speed up startup time (defer _bootstrap and registerCommonDirectives()
  until needed by ZCML, as well as unfound speedups).
 
- Reversing (context, request) in function view callable arglist produces
  incomprehensible traceback::
 
   def aview(request, context):
       return {}
 
   if __name__ == '__main__':
       from pyramid.config import Configurator
       from paste.httpserver import serve
       c = Configurator()
       c.add_view(aview, renderer='__main__:foo.pt')
       serve(c.make_wsgi_app())
 
   File "/home/chrism/projects/pyramid/pyramid/config.py", line 2981, in map_nonclass
   ronly = requestonly(view, self.attr)
   File "/home/chrism/projects/pyramid/pyramid/config.py", line 3071, in requestonly
   if len(args) - len(defaults) == 1:
   zope.configuration.config.ConfigurationExecutionError: <type 'exceptions.TypeError'>: object of type 'NoneType' has no len()                                    in:
    ('reversed.py', 14, '<module>', "c.add_view(aview, renderer='__main__:foo.pt')")
 
- Fix misleading conflict error reports for static views ala
  http://cluebin.appspot.com/pasted/7242843
 
- Nicer Mako exceptions in WebError.
 
- 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.
 
- 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.
 
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.
 
- Add doc string for BeforeRender event with more details.