[Zope-Checkins] SVN: Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py - removed 'encoding' parameter from pt_edit() to restore the original API

Andreas Jung andreas at andreas-jung.com
Sun Dec 17 14:49:12 EST 2006


Log message for revision 71575:
  - removed 'encoding' parameter from pt_edit() to restore the original API
  - moved the encoding detection into pt_edit() to make it available in a single place
  
  

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

-=-
Modified: Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py
===================================================================
--- Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py	2006-12-17 19:35:18 UTC (rev 71574)
+++ Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py	2006-12-17 19:49:11 UTC (rev 71575)
@@ -123,15 +123,30 @@
         self.expand = 0                                                               
         self.ZBindings_edit(self._default_bindings)
         self.output_encoding = encoding
+
+        # default content
         if not text:
             text = open(self._default_content_fn).read()
             encoding = 'utf-8'
             content_type = 'text/html'
-        self.pt_edit(text, content_type, encoding)
+        self.pt_edit(text, content_type)
 
     security.declareProtected(change_page_templates, 'pt_edit')
-    def pt_edit(self, text, content_type, encoding='utf-8'):
+    def pt_edit(self, text, content_type):
+
         text = text.strip()
+        
+        guessed_content_type = guess_type('', text)
+        if guessed_content_type != content_type:
+            raise ValueError('Guessed content-type != passed content-type (%s vs. %s)' % 
+                             (guessed_content_type, content_type))
+
+        encoding = sniffEncoding(text)
+        if content_type == 'text/xml':
+            self.output_encoding = 'utf-8'
+        else:   
+            self.output_encoding = encoding
+
         if not isinstance(text, unicode):
             text = unicode(text, encoding)
 
@@ -195,8 +210,7 @@
         if not content_type in ('text/html', 'text/xml'):
             raise ValueError('Unsupported mimetype: %s' % content_type)
 
-        encoding = sniffEncoding(text)
-        self.pt_edit(text, content_type, encoding)
+        self.pt_edit(text, content_type)
         return self.pt_editForm(manage_tabs_message='Saved changes')
 
     security.declareProtected(change_page_templates, 'pt_changePrefs')
@@ -302,12 +316,7 @@
         self.dav__simpleifhandler(REQUEST, RESPONSE, refresh=1)
         text = REQUEST.get('BODY', '')
         content_type = guess_type('', text) 
-        encoding = sniffEncoding(text)
-        if content_type == 'text/xml':
-            self.output_encoding = 'utf-8'
-        else:   
-            self.output_encoding = encoding
-        self.pt_edit(text, content_type, encoding)
+        self.pt_edit(text, content_type)
         RESPONSE.setStatus(204)
         return RESPONSE
 



More information about the Zope-Checkins mailing list