[Zope-Checkins] SVN: Zope/branches/ajung-zpt-integration/lib/python/Products/PageTemplates/ZopePageTemplate.py added backward compatibility with non-unicode ZPT instance

Andreas Jung andreas at andreas-jung.com
Thu Jan 5 10:08:38 EST 2006


Log message for revision 41149:
  added backward compatibility with non-unicode ZPT instance
  by providing a (dumb) implicit conversion (needs more cleverness)
  

Changed:
  U   Zope/branches/ajung-zpt-integration/lib/python/Products/PageTemplates/ZopePageTemplate.py

-=-
Modified: Zope/branches/ajung-zpt-integration/lib/python/Products/PageTemplates/ZopePageTemplate.py
===================================================================
--- Zope/branches/ajung-zpt-integration/lib/python/Products/PageTemplates/ZopePageTemplate.py	2006-01-05 14:21:20 UTC (rev 41148)
+++ Zope/branches/ajung-zpt-integration/lib/python/Products/PageTemplates/ZopePageTemplate.py	2006-01-05 15:08:38 UTC (rev 41149)
@@ -279,6 +279,7 @@
         try:
             # XXX: check the parameters for pt_render()! (aj)
             result = self.pt_render(self.pt_getContext())
+        
 
 #            result = self.pt_render(extra_context=bound_names)
             if keyset is not None:
@@ -350,6 +351,7 @@
                               'title': 'This template has an error'},)
         return icons
 
+
     security.declareProtected(view, 'pt_source_file')
     def pt_source_file(self):
         """Returns a file name to be compiled into the TAL code."""
@@ -363,6 +365,24 @@
     def wl_isLocked(self):
         return 0
 
+
+    def __setstate__(self, state):
+        """ convert non-unicode templates to unicode """
+        text = state['_text']
+        if not isinstance(text, unicode):
+
+            # ATT: the encoding guessing should be made more flexible
+            for encoding in ('iso-8859-15', 'utf-8'):
+                try:
+                    state['_text'] = unicode(text, encoding)
+                    self.__dict__.update(state)
+                    return
+                except UnicodeDecodeError:
+                    pass
+
+        raise RuntimeError('Pagetemplate could not be converted to unicode')
+                    
+
     security.declareProtected(view_management_screens, 'getSource')
     getSource = Src()
     source_dot_xml = Src()



More information about the Zope-Checkins mailing list