[Checkins] SVN: Zope3/trunk/ Fixed bug #98307: PROPFIND with a unicode ID fails

Dmitry Vasiliev dima at hlabs.spb.ru
Tue Apr 24 11:38:01 EDT 2007


Log message for revision 74705:
  Fixed bug #98307: PROPFIND with a unicode ID fails

Changed:
  U   Zope3/trunk/doc/CHANGES.txt
  U   Zope3/trunk/src/zope/app/dav/tests/test_propfind.py
  U   Zope3/trunk/src/zope/app/dav/widget.py

-=-
Modified: Zope3/trunk/doc/CHANGES.txt
===================================================================
--- Zope3/trunk/doc/CHANGES.txt	2007-04-24 14:45:32 UTC (rev 74704)
+++ Zope3/trunk/doc/CHANGES.txt	2007-04-24 15:38:00 UTC (rev 74705)
@@ -18,6 +18,8 @@
 
     Bugs fixed
 
+      - #98307: PROPFIND with a unicode ID fails
+
       - Password managers now accept full Unicode characters range for
         passwords
 

Modified: Zope3/trunk/src/zope/app/dav/tests/test_propfind.py
===================================================================
--- Zope3/trunk/src/zope/app/dav/tests/test_propfind.py	2007-04-24 14:45:32 UTC (rev 74704)
+++ Zope3/trunk/src/zope/app/dav/tests/test_propfind.py	2007-04-24 15:38:00 UTC (rev 74705)
@@ -331,13 +331,13 @@
         root = self.rootFolder
         zpt = traverse(root, 'zpt')
         dc = IZopeDublinCore(zpt)
-        dc.title = u'Test Title'
+        dc.title = u'Test Title \N{COPYRIGHT SIGN}'
         req = '''<prop xmlns:DC="http://www.purl.org/dc/1.1">
         <DC:title />
         </prop>'''
 
         expect = '''<prop xmlns:a0="http://www.purl.org/dc/1.1">
-        <title xmlns="a0">Test Title</title></prop>'''
+        <title xmlns="a0">Test Title \xc2\xa9</title></prop>'''
         self._checkPropfind(zpt, req, expect)
 
     def test_davpropdccreated(self):
@@ -355,12 +355,12 @@
         root = self.rootFolder
         zpt = traverse(root, 'zpt')
         dc = IZopeDublinCore(zpt)
-        dc.subjects = (u'Bla', u'Ble', u'Bli')
+        dc.subjects = (u'Bla', u'Ble', u'Bli', u'\N{COPYRIGHT SIGN}')
         req = '''<prop xmlns:DC="http://www.purl.org/dc/1.1">
         <DC:subjects /></prop>'''
 
         expect = '''<prop xmlns:a0="http://www.purl.org/dc/1.1">
-        <subjects xmlns="a0">%s</subjects></prop>''' % u', '.join(dc.subjects)
+        <subjects xmlns="a0">Bla, Ble, Bli, \xc2\xa9</subjects></prop>'''
         self._checkPropfind(zpt, req, expect)
 
     def test_davpropname(self):

Modified: Zope3/trunk/src/zope/app/dav/widget.py
===================================================================
--- Zope3/trunk/src/zope/app/dav/widget.py	2007-04-24 14:45:32 UTC (rev 74704)
+++ Zope3/trunk/src/zope/app/dav/widget.py	2007-04-24 15:38:00 UTC (rev 74705)
@@ -27,6 +27,7 @@
 from zope.app.form import InputWidget
 from zope.interface import implements
 
+
 class DAVWidget(InputWidget):
 
     implements(IDAVWidget)
@@ -37,12 +38,9 @@
     def getInputValue(self):
         return self._data
 
-    def __str__(self):
-        return str(self._data)
-
     def __call__(self):
-        return str(self)
-    
+        return unicode(self._data)
+
     def setRenderedValue(self, value):
         if isinstance(value, minidom.Node):
             text = u''
@@ -51,23 +49,26 @@
                     continue
                 text += node.nodeValue
             value = text
-        
+
         super(DAVWidget, self).setRenderedValue(value)
 
+
 class TextDAVWidget(DAVWidget):
 
     implements(ITextDAVWidget)
 
+
 class SequenceDAVWidget(DAVWidget):
 
     implements(ISequenceDAVWidget)
 
-    def __str__(self):
+    def __call__(self):
         return u', '.join(self._data)
-    
+
     def getInputValue(self):
         return [v.strip() for v in self._data.split(',')]
 
+
 class XMLDAVWidget(DAVWidget):
 
     implements(IXMLDAVWidget)
@@ -75,13 +76,10 @@
     def getInputValue(self):
         return self._data
 
-    def __str__(self):
-        raise ValueError("xmldavwidget is not a string.")
-
     def __call__(self):
         return self._data
 
     def setRenderedValue(self, value):
         if not isinstance(value, minidom.Node):
-            value = ''
+            value = u''
         self._data = value



More information about the Checkins mailing list