[Checkins] SVN: z3c.reference/branches/flash/ fixed unicode problems

Juergen Kartnaller juergen at kartnaller.at
Wed Sep 12 03:17:17 EDT 2007


Log message for revision 79582:
  fixed unicode problems

Changed:
  U   z3c.reference/branches/flash/CHANGES.txt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/README.txt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/serialize.py
  U   z3c.reference/branches/flash/src/z3c/reference/browser/serialize.txt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/widget.py

-=-
Modified: z3c.reference/branches/flash/CHANGES.txt
===================================================================
--- z3c.reference/branches/flash/CHANGES.txt	2007-09-12 06:12:52 UTC (rev 79581)
+++ z3c.reference/branches/flash/CHANGES.txt	2007-09-12 07:17:17 UTC (rev 79582)
@@ -5,6 +5,8 @@
 Before first release
 ====================
 
+- fixed unicode problems
+
 - added tests for back references
 - added back reference support
 - buildoutify

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/README.txt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/README.txt	2007-09-12 06:12:52 UTC (rev 79581)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/README.txt	2007-09-12 07:17:17 UTC (rev 79582)
@@ -160,10 +160,10 @@
 Let us write some data to it.
 
   >>> IZopeDublinCore(vr).title = u"The DC Title"
-  >>> IZopeDublinCore(vr).description = u"The DC Description"
+  >>> IZopeDublinCore(vr).description = "The DC Description \xc3\xa4".decode('utf8')
   >>> print widget()
   <...
-  value="form.title=The+DC+Title&amp;form.view=&amp;form.description=The+DC+Description"...
+  value="form.title=The+DC+Title&amp;form.view=&amp;form.description=The+DC+Description+%C3%A4"...
 
 Now we can setup a test request and set the values for the widget:
 

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/serialize.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/serialize.py	2007-09-12 06:12:52 UTC (rev 79581)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/serialize.py	2007-09-12 07:17:17 UTC (rev 79582)
@@ -1,18 +1,22 @@
 import cElementTree
 import urllib
+
 from BeautifulSoup import BeautifulSoup
+
+
 def serializeForm(html):
-
     tags = BeautifulSoup(html)(['input', 'textarea'])
-    html = ''.join([str(tag) for tag in tags])
+    html = ''.join([unicode(tag) for tag in tags])
     html = '<div>%s</div>' % html
-    elem = cElementTree.fromstring(html)
+    elem = cElementTree.fromstring(html.encode('utf-8'))
     res = []
     for e in elem.findall('input'):
         name = e.get('name')
-        value = e.get('value')
+        value = e.get('value').encode('utf-8')
         t = e.get('type')
-        if t not in ('hidden', 'text') or None in (name, value):
+        if (   t not in ('hidden', 'text')
+            or None in (name, value)
+           ):
             continue
         res.append((name, value))
     for e in elem.findall('textarea'):
@@ -20,6 +24,6 @@
         value = e.text or ''
         if name is None:
             continue
-        res.append((name, value))
+        res.append((name, value.encode('utf-8')))
     return urllib.urlencode(res)
 

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/serialize.txt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/serialize.txt	2007-09-12 06:12:52 UTC (rev 79581)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/serialize.txt	2007-09-12 07:17:17 UTC (rev 79582)
@@ -6,10 +6,14 @@
 
     >>> from z3c.reference.browser.serialize import serializeForm
 
-    >>> html = """<input type="text" value="one" name="m.one"/><br/>"""\
-    ...        """<input type="text" value="two" name="m.two"/>""" \
-    ...        """<textarea name="m.area">tarea</textarea>""" \
-    ...        """<input type="text" value="second" name="m.two"/>"""
+    >>> html = """<input type="text" value="one" name="m.one"/><br/>
+    ...           <input type="text" value="two" name="m.two"/>
+    ...           <textarea name="m.area">tarea</textarea>
+    ...           <input type="text" value="second" name="m.two"/>"""
     >>> print serializeForm(html)
     m.one=one&m.two=two&m.two=second&m.area=tarea
 
+    >>> html = u"""<input type="text" value="\xe4" name="m.one"/><br/>"""
+    >>> print serializeForm(html)
+    m.one=%C3%A4
+

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/widget.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/widget.py	2007-09-12 06:12:52 UTC (rev 79581)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/widget.py	2007-09-12 07:17:17 UTC (rev 79582)
@@ -243,10 +243,10 @@
         formData = self.request.get(formDataName)
         if not formData:
             return ref
-        data = cgi.parse_qs(formData)
+        data = cgi.parse_qs(str(formData))
         for k, v in data.items():
             if type(v) is type([]) and len(v)==1:
-                data[k] = v[0]
+                data[k] = v[0].decode('utf8')
 
         data['form.actions.apply'] = u''
         r = TestRequest(form=data)



More information about the Checkins mailing list