Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
c2e643f9
Commit
c2e643f9
authored
Mar 08, 2011
by
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Marked `processInputs` and `setPageEncoding` as deprecated.
parent
92047edf
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
19 deletions
+54
-19
doc/CHANGES.rst
doc/CHANGES.rst
+4
-0
src/Products/Five/browser/decode.py
src/Products/Five/browser/decode.py
+16
-3
src/Products/Five/browser/tests/test_decode.py
src/Products/Five/browser/tests/test_decode.py
+34
-16
No files found.
doc/CHANGES.rst
View file @
c2e643f9
...
...
@@ -54,6 +54,10 @@ Features Added
Restructuring
+++++++++++++
- Five.browser: Marked `processInputs` and `setPageEncoding` as deprecated.
`processInputs` was replaced by the `postProcessInputs` request method and
the charset negotiation done by `setPageEncoding` was never fully supported.
- Factored out the `Products.ZCatalog` and `Products.PluginIndexes` packages
into a new `Products.ZCatalog` distribution.
...
...
src/Products/Five/browser/decode.py
View file @
c2e643f9
...
...
@@ -15,6 +15,8 @@
encoding.
"""
from
warnings
import
warn
from
zope.publisher.browser
import
isCGI_NAME
from
zope.i18n.interfaces
import
IUserPreferredCharsets
...
...
@@ -34,7 +36,10 @@ def processInputValue(value, charsets):
"""Recursively look for values (e.g. elements of lists, tuples or dicts)
and attempt to decode.
"""
warn
(
u'processInputValue() is deprecated and will be removed in Zope '
u'2.16.'
,
DeprecationWarning
,
stacklevel
=
2
)
if
isinstance
(
value
,
list
):
return
[
processInputValue
(
v
,
charsets
)
for
v
in
value
]
elif
isinstance
(
value
,
tuple
):
...
...
@@ -53,14 +58,18 @@ def processInputs(request, charsets=None):
the passed-in list of charsets. If none are passed in, look up the user's
preferred charsets. The default is to use utf-8.
"""
warn
(
u'processInputs() is deprecated and will be removed in Zope 2.16. If '
u'your view implements IBrowserPage, similar processing is now '
u'executed automatically.'
,
DeprecationWarning
,
stacklevel
=
2
)
if
charsets
is
None
:
envadapter
=
IUserPreferredCharsets
(
request
,
None
)
if
envadapter
is
None
:
charsets
=
[
'utf-8'
]
else
:
charsets
=
envadapter
.
getPreferredCharsets
()
or
[
'utf-8'
]
for
name
,
value
in
request
.
form
.
items
():
if
not
(
isCGI_NAME
(
name
)
or
name
.
startswith
(
'HTTP_'
)):
request
.
form
[
name
]
=
processInputValue
(
value
,
charsets
)
...
...
@@ -70,6 +79,10 @@ def setPageEncoding(request):
ZPublisher uses the value of this header to determine how to
encode unicode data for the browser.
"""
warn
(
u'setPageEncoding() is deprecated and will be removed in Zope 2.16. '
u'It is recommended to let the ZPublisher use the default_encoding. '
u'Please consider setting default-zpublisher-encoding to utf-8.'
,
DeprecationWarning
,
stacklevel
=
2
)
envadapter
=
IUserPreferredCharsets
(
request
)
charsets
=
envadapter
.
getPreferredCharsets
()
or
[
'utf-8'
]
request
.
RESPONSE
.
setHeader
(
...
...
src/Products/Five/browser/tests/test_decode.py
View file @
c2e643f9
...
...
@@ -18,7 +18,9 @@ def test_processInputs():
"""
Testing processInputs
>>> import warnings
>>> from Products.Five.browser.decode import processInputs
>>> charsets = ['iso-8859-1']
>>> class DummyRequest:
... form = {}
...
...
@@ -27,59 +29,75 @@ def test_processInputs():
Strings are converted to unicode::
>>> request.form['foo'] = u'f
\
xf6
\
xf6
'.encode('iso-8859-1')
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == u'f
\
xf6
\
xf6
'
True
Strings in lists are converted to unicode::
>>> request.form['foo'] = [u'f
\
xf6
\
xf6
'.encode('iso-8859-1')]
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == [u'f
\
xf6
\
xf6
']
True
Strings in tuples are converted to unicode::
>>> request.form['foo'] = (u'f
\
xf6
\
xf6
'.encode('iso-8859-1'),)
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == (u'f
\
xf6
\
xf6
',)
True
Ints in lists are not lost::
>>> request.form['foo'] = [1, 2, 3]
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == [1, 2, 3]
True
Ints in tuples are not lost::
>>> request.form['foo'] = (1, 2, 3,)
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == (1, 2, 3)
True
Mixed lists work:
>>> request.form['foo'] = [u'f
\
xf6
\
xf6
'.encode('iso-8859-1'), 2, 3]
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == [u'f
\
xf6
\
xf6
', 2, 3]
True
Mixed dicts work:
>>> request.form['foo'] = {'foo': u'f
\
xf6
\
xf6
'.encode('iso-8859-1'), 'bar': 2}
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == {'foo': u'f
\
xf6
\
xf6
', 'bar': 2}
True
Deep recursion works:
>>> request.form['foo'] = [{'foo': u'f
\
xf6
\
xf6
'.encode('iso-8859-1'), 'bar': 2}, {'foo': u"one", 'bar': 3}]
>>> processInputs(request, charsets)
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore')
... processInputs(request, charsets)
>>> request.form['foo'] == [{'foo': u'f
\
xf6
\
xf6
', 'bar': 2}, {'foo': u"one", 'bar': 3}]
True
"""
def
test_suite
():
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment