[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form. - fixed prefix and unicode handling
Yvo Schubbe
cvs-admin at zope.org
Thu May 2 10:43:58 UTC 2013
Log message for revision 130224:
- fixed prefix and unicode handling
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
U Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.txt
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2013-05-02 10:36:32 UTC (rev 130223)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.py 2013-05-02 10:43:58 UTC (rev 130224)
@@ -68,9 +68,11 @@
kw['portal_status_message'] = message
for k in keys.split(','):
k = k.strip()
- v = self.request.form.get(k, None)
- # filter out keys without values or with redundant default values
- if v and v != '0':
+ v = self.request.form.get(k,
+ self.request.form.get('{0}.{1}'.format(self.prefix, k), None))
+ if v:
+ if isinstance(v, unicode):
+ v = v.encode(self._getBrowserCharset())
kw[k] = v
query = kw and '?{0}'.format(make_query(kw)) or ''
Modified: Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.txt 2013-05-02 10:36:32 UTC (rev 130223)
+++ Products.CMFDefault/trunk/Products/CMFDefault/formlib/form.txt 2013-05-02 10:43:58 UTC (rev 130224)
@@ -1,3 +1,43 @@
+_EditFormMixin
+--------------
+
+Create mockup and _EditFormMixin instance.
+
+ >>> import sys
+ >>> from Products.CMFDefault.formlib.form import _EditFormMixin
+
+ >>> class Mockup(object): pass
+ >>> provider = Mockup()
+ >>> provider.getActionInfo = lambda *args, **kw: {'url': 'ACTION_URL'}
+ >>> context = Mockup()
+ >>> context.portal_actions = provider
+ >>> response = Mockup()
+ >>> response.redirect = lambda x: sys.stdout.write(x)
+ >>> request = Mockup()
+ >>> request.response = response
+
+ >>> obj = _EditFormMixin(context, request)
+ >>> request.form = {'foo': 1, 'PREFIX.bar': u'BAR'}
+ >>> obj.prefix = 'PREFIX'
+ >>> obj.status = None
+ >>> obj._getBrowserCharset = lambda: 'utf-8'
+
+The _setRedirect method helps creating the correct redirect url.
+
+ >>> print obj._setRedirect('portal_actions', 'ACTION')
+ ACTION_URL
+
+ >>> print obj._setRedirect('portal_actions', 'ACTION', 'foo, bar')
+ ACTION_URL?foo:int=1&bar=BAR
+
+ >>> request.form = {'foo': 0, 'bar': '0'}
+ >>> print obj._setRedirect('portal_actions', 'ACTION', 'foo, bar')
+ ACTION_URL?bar=0
+
+ >>> obj.status = u'STATUS \xc4\xd6\xdc'
+ >>> print obj._setRedirect('portal_actions', 'ACTION', 'foo, bar')
+ ACTION_URL?portal_status_message=STATUS%20%C3%84%C3%96%C3%9C&bar=0
+
Add Forms
---------
More information about the checkins
mailing list