summaryrefslogtreecommitdiff
path: root/CHANGES.txt
blob: e092b15453bdcaeda41f6f70e4b0bee8d4ec13bf (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
Next release
============

Bug Fixes
---------

- Forward port from 1.3 branch: When no authentication policy was configured,
  a call to ``pyramid.security.effective_principals`` would unconditionally
  return the empty list.  This was incorrect, it should have unconditionally
  returned ``[Everyone]``, and now does.

- Explicit url dispatch regexes can now contain colons.
  https://github.com/Pylons/pyramid/issues/629

- On at least one 64-bit Ubuntu system under Python 3.2, using the
  ``view_config`` decorator caused a ``RuntimeError: dictionary changed size
  during iteration`` exception.  It no longer does.  See
  https://github.com/Pylons/pyramid/issues/635 for more information.

- In Mako Templates lookup, check if the uri is already adjusted and bring
  it back to an asset spec. Normally occurs with inherited templates or
  included components.
  https://github.com/Pylons/pyramid/issues/606
  https://github.com/Pylons/pyramid/issues/607

Features
--------

- Third-party custom view and route predicates can now be added for use by
  view authors via ``pyramid.config.Configurator.add_view_predicate`` and
  ``pyramid.config.Configurator.add_route_predicate``.  So, for example,
  doing this::

     config.add_view_predicate('abc', my.package.ABCPredicate)

  Might allow a view author to do this in an application that configured that
  predicate::

     @view_config(abc=1)

  See "Adding A Third Party View or Route Predicate" in the Hooks chapter for
  more information.

  Note that changes made to support the above feature now means that only
  actions registered using the same "order" can conflict with one another.
  It used to be the case that actions registered at different orders could
  potentially conflict, but to my knowledge nothing ever depended on this
  behavior (it was a bit silly).

- Custom objects can be made easily JSON-serializable in Pyramid by defining
  a ``__json__`` method on the object's class. This method should return
  values natively serializable by ``json.dumps`` (such as ints, lists,
  dictionaries, strings, and so forth).

- The JSON renderer now allows for the definition of custom type adapters to
  convert unknown objects to JSON serializations.

- As of this release, the ``request_method`` predicate, when used, will also
  imply that ``HEAD`` is implied when you use ``GET``.  For example, using
  ``@view_config(request_method='GET')`` is equivalent to using
  ``@view_config(request_method=('GET', 'HEAD'))``.  Using
  ``@view_config(request_method=('GET', 'POST')`` is equivalent to using
  ``@view_config(request_method=('GET', 'HEAD', 'POST')``.  This is because
  HEAD is a variant of GET that omits the body, and WebOb has special support
  to return an empty body when a HEAD is used.

- ``config.set_request_property`` now causes less code to be executed at
  request construction time.

- Don't add a ``?`` to URLs generated by request.resource_url if the
  ``query`` argument is provided but empty.

- Don't add a ``?`` to URLs generated by request.route_url if the
  ``_query`` argument is provided but empty.

- The static view machinery now raises (rather than returns) ``HTTPNotFound``
  and ``HTTPMovedPermanently`` exceptions, so these can be caught by the
  NotFound view (and other exception views).

- The mako renderer now accepts a def name and returns the template def
  result for the view being called. The uri format using an asset spec is
  package:path/to/template#defname.mako. The old way of returning a tuple
  from the view is supported for backward compatibility, ('defname', {}).

- When there is a predicate mismatch exception (seen when no view matches for
  a given request due to predicates not working), the exception now contains
  a textual description of the predicate which didn't match.