Skip to content

Commit f1e715e

Browse files
committedJun 12, 2019
Modernize request parameter handling #641
Tests broken due to backward incompatible changes not yet fixed
1 parent e9f1010 commit f1e715e

10 files changed

+2285
-1109
lines changed
 

‎CHANGES.rst

+68
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,74 @@ https://zope.readthedocs.io/en/2.13/CHANGES.html
88
For the change log of the alpha versions see
99
https://github.com/zopefoundation/Zope/blob/4.0a6/CHANGES.rst
1010

11+
4.1 (unreleased)
12+
----------------
13+
14+
Features
15+
++++++++
16+
17+
- Modernized request paramter handling
18+
(`#641 <https://github.com/zopefoundation/Zope/issues/641>`_):
19+
20+
- fully recursive aggregation which can handle structures of arbitrary depth
21+
22+
- simplified processing model
23+
24+
- support for special HTML5 features: ``_charset_`` informs
25+
about the used form encoding; character references used
26+
to work around encoding limitations
27+
28+
- treats parameter values internally as text
29+
(this means unicode for Python 2).
30+
For Python 2, the conversion to unicode is skipped if it
31+
results in a ``UnicodeDecodeError``. The value is then used
32+
as is.
33+
34+
For Python 2,
35+
the final values for parameters without converter and encoding directive
36+
are encoded with Zope's default encoding; character references
37+
are used for characters which cannot be encoded.
38+
39+
- Errors encountered during request parameter processing are
40+
not reported immediately (at this stage, application specific
41+
error handling has not yet been set up). Instead, a
42+
``post_traverse`` is registered which will raise
43+
a ``RequestParameterError`` exception after the traversal
44+
in the proper application context.
45+
The ``RequestParameterError`` describes all errors
46+
encountered during request parameter processing.
47+
48+
- ``FileUpload`` has new attributes ``type`` (the associated
49+
MIME type or ``None``) and the ``dict`` ``type_options``
50+
(containing the provided MIME type parameters).
51+
52+
Backward incompatibilities:
53+
54+
- a parameter must now follow a corresponding default parameter
55+
to override the default paramter; formerly the relative order
56+
of parameter and default parameter was of no importance.
57+
58+
There is a new directive "conditional" which can also be used
59+
to define a default value. A conditional parameter is ignored,
60+
if there is already a corresponding parameter, and
61+
otherwise acts like a default parameter. Thus, its behaviour
62+
is comparable to the former bahaviour of "default".
63+
64+
- aggregators are now applied from left to right; especially,
65+
their relative order is important.
66+
Formerly, aggregators were applied in a fixed order --
67+
independent of the order in which they were specified.
68+
69+
- the converter *functions* (in ``ZPublisher.Converters``)
70+
no longer support the conversion of files (because they
71+
do not know the encoding applicable for the file).
72+
The converter *directives*, however, can still be applied
73+
to (uploaded) files. They use the encoding explicitly
74+
specified via an encoding directive or fall back to
75+
Zope's default encoding.
76+
77+
78+
1179
4.0.1 (unreleased)
1280
------------------
1381

0 commit comments

Comments
 (0)