[Checkins] SVN: z3c.reference/trunk/ - removed dependency on elementtree

Juergen Kartnaller juergen at kartnaller.at
Fri Dec 7 10:46:43 EST 2007


Log message for revision 82187:
  - removed dependency on elementtree
  - changed serializer to accept namespaces
  

Changed:
  U   z3c.reference/trunk/CHANGES.txt
  U   z3c.reference/trunk/setup.py
  U   z3c.reference/trunk/src/z3c/reference/browser/README.txt
  U   z3c.reference/trunk/src/z3c/reference/browser/serialize.py
  U   z3c.reference/trunk/src/z3c/reference/browser/serialize.txt

-=-
Modified: z3c.reference/trunk/CHANGES.txt
===================================================================
--- z3c.reference/trunk/CHANGES.txt	2007-12-07 15:15:19 UTC (rev 82186)
+++ z3c.reference/trunk/CHANGES.txt	2007-12-07 15:46:42 UTC (rev 82187)
@@ -5,6 +5,10 @@
 After
 =====
 
+- removed dependency on elementtree
+
+- changed serializer to accept namespaces
+
 - seting the new input data from an editor updated the html content via
   javascript
 

Modified: z3c.reference/trunk/setup.py
===================================================================
--- z3c.reference/trunk/setup.py	2007-12-07 15:15:19 UTC (rev 82186)
+++ z3c.reference/trunk/setup.py	2007-12-07 15:46:42 UTC (rev 82187)
@@ -42,9 +42,7 @@
         'lovely.relation>=0.3.0',
         'z3c.javascript',
         'z3c.viewtemplate',
-        'cElementTree',
-        'elementtree'
         ],
     dependency_links = ['http://download.zope.org/distribution'],
-    zip_safe = False,    
+    zip_safe = False,
     )

Modified: z3c.reference/trunk/src/z3c/reference/browser/README.txt
===================================================================
--- z3c.reference/trunk/src/z3c/reference/browser/README.txt	2007-12-07 15:15:19 UTC (rev 82186)
+++ z3c.reference/trunk/src/z3c/reference/browser/README.txt	2007-12-07 15:46:42 UTC (rev 82187)
@@ -81,7 +81,7 @@
   ...                              IViewReferenceOpener)
 
   >>> print widget()
-  <a class="popupwindow" href="http://127.0.0.1/Intro/viewReferenceEditor.html?formdata=&amp;target=&amp;settingName=introRefs&amp;name=field.intro" id="field.intro.tag" name="field.intro" onclick="" rel="window">
+  <a class="popupwindow" href="http://127.0.0.1/Intro/viewReferenceEditor.html?formdata=&amp;target=&amp;settingName=introRefs&amp;name=field.intro" id="field.intro.tag" name="field.intro" onclick="" rel="height:550,width:800,status:0,scrollbars:1,resizable:1">
   <span id="field.intro.title">Undefined</span>
   </a>
   <input class="hiddenType" id="field.intro.function" name="field.intro.function" type="hidden" value="setDefaultReferenceInput" rel="window" />

Modified: z3c.reference/trunk/src/z3c/reference/browser/serialize.py
===================================================================
--- z3c.reference/trunk/src/z3c/reference/browser/serialize.py	2007-12-07 15:15:19 UTC (rev 82186)
+++ z3c.reference/trunk/src/z3c/reference/browser/serialize.py	2007-12-07 15:46:42 UTC (rev 82187)
@@ -1,4 +1,3 @@
-import cElementTree
 import urllib
 
 from BeautifulSoup import BeautifulSoup
@@ -10,25 +9,17 @@
 
 
 def serializeForm(html):
-    tags = BeautifulSoup(html)(['input', 'textarea'])
-    html = ''.join([unicode(tag) for tag in tags])
-    html = '<div>%s</div>' % html
-    elem = cElementTree.fromstring(html.encode('utf-8'))
     res = []
-    for e in elem.findall('input'):
-        name = e.get('name')
-        value = e.get('value').encode('utf-8')
-        t = e.get('type')
+    for tag in BeautifulSoup(html)(['input', 'textarea']):
+        name = tag.get('name', None)
+        t = tag.get('type', 'text')
+        value = tag.get('value', None)
+        if value is None:
+            value = tag.renderContents(encoding=None)
         if (   t not in ('hidden', 'text')
             or None in (name, value)
            ):
             continue
-        res.append((name, value))
-    for e in elem.findall('textarea'):
-        name = e.get('name')
-        value = e.text or ''
-        if name is None:
-            continue
         res.append((name, value.encode('utf-8')))
     return urllib.urlencode(res)
 

Modified: z3c.reference/trunk/src/z3c/reference/browser/serialize.txt
===================================================================
--- z3c.reference/trunk/src/z3c/reference/browser/serialize.txt	2007-12-07 15:15:19 UTC (rev 82186)
+++ z3c.reference/trunk/src/z3c/reference/browser/serialize.txt	2007-12-07 15:46:42 UTC (rev 82187)
@@ -11,8 +11,17 @@
     ...           <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
+    m.one=one&m.two=two&m.area=tarea&m.two=second
 
+Also namespace parameters are handled correct.
+
+    >>> html = """<input type="text" value="one" name="m.one"/><br/>
+    ...           <input type="text" value="two" name="m.two" ajax:inputlen="123"/>
+    ...           <textarea name="m.area">tarea</textarea>
+    ...           <input type="text" value="second" name="m.two"/>"""
+    >>> print serializeForm(html)
+    m.one=one&m.two=two&m.area=tarea&m.two=second
+
     >>> html = u"""<input type="text" value="\xe4" name="m.one"/><br/>"""
     >>> print serializeForm(html)
     m.one=%C3%A4



More information about the Checkins mailing list