[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