Log message for revision 78766:
  - fix for collector #2339 (unicode decode error when using the 'structure'
    directive
  - ZopeContext: added evaluateStructure() method in order to catch 
    UnicodeDecodeErrors and handle them properly using the unicode conflict
    resolver
  
  

Changed:
  U   Zope/branches/2.10/lib/python/Products/PageTemplates/Expressions.py
  U   
Zope/branches/2.10/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py

-=-
Modified: Zope/branches/2.10/lib/python/Products/PageTemplates/Expressions.py
===================================================================
--- Zope/branches/2.10/lib/python/Products/PageTemplates/Expressions.py 
2007-08-12 10:33:25 UTC (rev 78765)
+++ Zope/branches/2.10/lib/python/Products/PageTemplates/Expressions.py 
2007-08-12 10:44:35 UTC (rev 78766)
@@ -217,12 +217,20 @@
             return value
         return bool(value)
 
+    def evaluateStructure(self, expr):
+        text = super(ZopeContext, self).evaluateStructure(expr)
+        return self._handleText(text, expr)
+
     def evaluateText(self, expr):
         """ customized version in order to get rid of unicode
             errors for all and ever
         """
         text = self.evaluate(expr)
+        return self._handleText(text, expr)
 
+
+    def _handleText(self, text, expr):
+
         if text is self.getDefault() or text is None:
             # XXX: should be unicode???
             return text

Modified: 
Zope/branches/2.10/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py
===================================================================
--- 
Zope/branches/2.10/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py
  2007-08-12 10:33:25 UTC (rev 78765)
+++ 
Zope/branches/2.10/lib/python/Products/PageTemplates/tests/testZopePageTemplate.py
  2007-08-12 10:44:35 UTC (rev 78766)
@@ -121,7 +121,17 @@
         result = zpt.pt_render()
         self.assertEqual(result.startswith(unicode('<div>üöä</div>', 
'iso-8859-15')), False)
 
+    def testStructureWithAccentedChars(self):
+        manage_addPageTemplate(self.app, 'test', 
+                               text='<div tal:content="structure python: %s" 
/>' % "'üöä'",
+                               encoding='iso-8859-15')
+        zpt = self.app['test']
+        self.app.REQUEST.set('HTTP_ACCEPT_CHARSET', 'iso-8859-15,utf-8')
+        self.app.REQUEST.set('data', unicode('üöä', 
'iso-8859-15').encode('utf-8'))
+        result = zpt.pt_render()
+        self.assertEqual(result.startswith(unicode('<div>üöä</div>', 
'iso-8859-15')), True)
 
+
 class ZopePageTemplateFileTests(ZopeTestCase):
 
     def testPT_RenderWithAscii(self):

_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to