[Zope3-checkins] SVN: Zope3/trunk/src/zope/ Default input encoding for PageTemplateFile set to 'utf-8'

Dmitry Vasiliev dima at hlabs.spb.ru
Thu Jul 14 03:41:49 EDT 2005


Log message for revision 33316:
  Default input encoding for PageTemplateFile set to 'utf-8'
  

Changed:
  U   Zope3/trunk/src/zope/app/pagelet/collector.py
  U   Zope3/trunk/src/zope/app/pagelet/tales.py
  U   Zope3/trunk/src/zope/app/pageletchooser/collector.py
  UU  Zope3/trunk/src/zope/pagetemplate/pagetemplatefile.py

-=-
Modified: Zope3/trunk/src/zope/app/pagelet/collector.py
===================================================================
--- Zope3/trunk/src/zope/app/pagelet/collector.py	2005-07-14 02:36:36 UTC (rev 33315)
+++ Zope3/trunk/src/zope/app/pagelet/collector.py	2005-07-14 07:41:49 UTC (rev 33316)
@@ -18,7 +18,6 @@
 __docformat__ = 'restructuredtext'
 
 from zope.interface import implements
-from zope.proxy import isProxy
 from zope.security import canAccess
 from zope.security.interfaces import Unauthorized
 
@@ -84,7 +83,7 @@
 
         >>> rawtextOffset = macros[0][5][1][0]
         >>> rawtextOffset
-        'testpagelet macro content</div>'
+        u'testpagelet macro content</div>'
 
       >>> placelesssetup.tearDown()
 
@@ -117,7 +116,7 @@
 
 class MacroCollector(object):
     """Replaceable sample implementation of IMacroCollector.
-    
+
     Collect a single pagelet from the site manager and returns 
     a macro by name.
     Pagelet adapters are registred on context, request, view and slot
@@ -171,7 +170,7 @@
 
         >>> rawtextOffset = macro[5][1][0]
         >>> rawtextOffset
-        'testpagelet macro content</div>'
+        u'testpagelet macro content</div>'
 
       >>> placelesssetup.tearDown()
 
@@ -184,14 +183,14 @@
         self.request = request
         self.view = view
         self.slot = slot
-        
+
     def __getitem__(self, key):
         macros = []
 
         # collect a single pagelet which is a pagelet
         objects = self.context, self.request, self.view, self.slot
         pagelet = zapi.getMultiAdapter(objects, IPagelet, key)
-        
+
         # rasie Unauthorized exception if we don't have the permission for 
         # calling the pagelet's macro code
         if canAccess(pagelet, '__getitem__'):

Modified: Zope3/trunk/src/zope/app/pagelet/tales.py
===================================================================
--- Zope3/trunk/src/zope/app/pagelet/tales.py	2005-07-14 02:36:36 UTC (rev 33315)
+++ Zope3/trunk/src/zope/app/pagelet/tales.py	2005-07-14 07:41:49 UTC (rev 33316)
@@ -49,9 +49,9 @@
 
 class TALESPageletsExpression(StringExpr):
     """Collect pagelets via a tal namespace called tal:pagelets.
-    
+
     Imports:
-    
+
         >>> from zope.interface import Interface
         >>> from zope.security.checker import defineChecker
         >>> from zope.publisher.browser import TestRequest
@@ -82,7 +82,7 @@
         >>> provideInterface('', IPageletSlot, None)
 
     Register pagelets collector as a adapter:
-        
+
         >>> from zope.app.pagelet.collector import MacrosCollector
         >>> collector_factory = MacrosCollector
         >>> gsm.provideAdapter(
@@ -90,7 +90,7 @@
         ...        , IMacrosCollector, '', collector_factory)
 
     Register pagelets expression:
-    
+
         >>> from zope.app.pagetemplate.metaconfigure import registerType
         >>> registerType('pagelets', TALESPageletsExpression)
 
@@ -116,12 +116,12 @@
 
         >>> no_slot_iface_index = ViewPageTemplateFile(
         ...     'tests/testfiles/index_pagelets_iface_error.pt')
-        
+
         >>> try:
         ...     html = no_slot_iface_index(view, request)
         ... except PageletSlotInterfaceLookupError, e:
         ...     print e
-        (u'Pagelet slot interface not found.', 'zope.interface.Interface')
+        (u'Pagelet slot interface not found.', u'zope.interface.Interface')
 
     Register zope.app.interface as a utility and try again:
 
@@ -131,10 +131,10 @@
         ...     html = no_slot_iface_index(view, request)
         ... except PageletSlotInterfaceNotProvidedException, e:
         ...     print e
-        (u'IPageletSlot interface not provided.', 'zope.interface.Interface')
+        (u'IPageletSlot interface not provided.', u'zope.interface.Interface')
 
         >>> setup.placefulTearDown()
-    
+
     """
 
     implements(ITALESPageletsExpression)
@@ -148,7 +148,7 @@
 
         # get interface from key
         slotiface = queryInterface(expr)
-        
+
         # check slot
         if slotiface is None:
             raise PageletSlotInterfaceLookupError(
@@ -158,10 +158,10 @@
         if not slotiface.isOrExtends(IPageletSlot):
             raise PageletSlotInterfaceNotProvidedException(
                     PageletError_slot_interface_not_provided, expr)
-        
+
         slot = Wrapper()
         directlyProvides(slot, slotiface)
-        
+
         collector = zapi.getMultiAdapter((context, request, view, slot)
                                         , IMacrosCollector)
 
@@ -173,9 +173,9 @@
 
 class TALESPageletExpression(StringExpr):
     """Collects a single pagelet via a tal namespace called tal:pagelet.
-    
+
     Imports:
-    
+
         >>> import zope.component
         >>> from zope.interface import Interface
         >>> from zope.security.checker import defineChecker
@@ -207,7 +207,7 @@
         >>> provideInterface('', IPageletSlot, None)
 
     Register pagelets collector as a adapter:
-        
+
         >>> from zope.app.pagelet.collector import MacroCollector
         >>> collector_factory = MacroCollector
         >>> gsm.provideAdapter(
@@ -215,7 +215,7 @@
         ...        , IMacroCollector, '', collector_factory)
 
     Register pagelets expression:
-    
+
         >>> from zope.app.pagetemplate.metaconfigure import registerType
         >>> registerType('pagelet', TALESPageletExpression)
 
@@ -241,12 +241,12 @@
 
         >>> no_slot_iface_index = ViewPageTemplateFile(
         ...     'tests/testfiles/index_pagelet_iface_error.pt')
-        
+
         >>> try:
         ...     html = no_slot_iface_index(view, request)
         ... except PageletSlotInterfaceLookupError, e:
         ...     print e
-        (u'Pagelet slot interface not found.', 'zope.interface.Interface')
+        (u'Pagelet slot interface not found.', u'zope.interface.Interface')
 
     Register zope.app.interface as a utility and try again:
 
@@ -255,10 +255,10 @@
         ...     html = no_slot_iface_index(view, request)
         ... except PageletSlotInterfaceNotProvidedException, e:
         ...     print e
-        (u'IPageletSlot interface not provided.', 'zope.interface.Interface')
+        (u'IPageletSlot interface not provided.', u'zope.interface.Interface')
 
         >>> setup.placefulTearDown()
-    
+
     """
 
     implements(ITALESPageletExpression)
@@ -284,7 +284,7 @@
         context = econtext.vars['context']
         request = econtext.vars['request']
         view = econtext.vars['view']
-        
+
         # get interface from key
         slotiface = queryInterface(iface)
 
@@ -297,10 +297,10 @@
         if not slotiface.isOrExtends(IPageletSlot):
             raise PageletSlotInterfaceNotProvidedException(
                     PageletError_slot_interface_not_provided, iface)
-        
+
         slot = Wrapper()
         directlyProvides(slot, slotiface)
-        
+
         collector = zapi.getMultiAdapter((context, request, view, slot)
                                         , IMacroCollector)
 
@@ -310,9 +310,9 @@
 
 class TALESPageDataExpression(StringExpr):
     """Collect page data adapters via a tal namespace called tal:pagedata.
-    
+
     Imports:
-    
+
         >>> import zope.component
         >>> from zope.interface import Interface
         >>> from zope.security.checker import defineChecker
@@ -342,7 +342,7 @@
         >>> provideInterface('', IPageData, None)
 
     Register pagelets collector as a adapter:
-        
+
         >>> from zope.app.pagelet.collector import MacroCollector
         >>> collector_factory = MacroCollector
         >>> gsm.provideAdapter(
@@ -350,7 +350,7 @@
         ...        , IMacroCollector, '', collector_factory)
 
     Register pagedata expression:
-    
+
         >>> from zope.app.pagetemplate.metaconfigure import registerType
         >>> registerType('pagedata', TALESPageDataExpression)
 
@@ -371,7 +371,7 @@
         >>> import string
         >>> string.count(html, 'A demo string.')
         1
-       
+
     """
 
     implements(ITALESPageDataExpression)
@@ -382,7 +382,7 @@
             parts = expr.split('/')
             self._iface = parts[0]
             self._name = parts[1]
-        
+
         else:
             # unnamed adapter
             self._iface = expr
@@ -395,7 +395,7 @@
         context = econtext.vars['context']
         request = econtext.vars['request']
         view = econtext.vars['view']
-        
+
         # get interface from key
         iface = queryInterface(iface)
 
@@ -408,9 +408,9 @@
         if not iface.isOrExtends(IPageData):
             raise PageletSlotInterfaceNotProvidedException(
                     PageletError_slot_interface_not_provided, iface)
-        
+
         # get a page data adapter registred on context, request, view
         pagedata = zapi.getMultiAdapter((context, request, view)
                                        , iface, name)
-        
+
         return pagedata

Modified: Zope3/trunk/src/zope/app/pageletchooser/collector.py
===================================================================
--- Zope3/trunk/src/zope/app/pageletchooser/collector.py	2005-07-14 02:36:36 UTC (rev 33315)
+++ Zope3/trunk/src/zope/app/pageletchooser/collector.py	2005-07-14 07:41:49 UTC (rev 33316)
@@ -18,7 +18,6 @@
 __docformat__ = 'restructuredtext'
 
 from zope.interface import implements
-from zope.proxy import isProxy
 from zope.security import canAccess
 from zope.security.interfaces import Unauthorized
 
@@ -32,7 +31,7 @@
 
 class MacroChooser(MacroCollector):
     """Returns the macro by name.
-        
+
         For to get the macro name, the adapter IPageletNameManager is 
         calling the mapped name under the given key via getattr. This
         means the adapted object has to support a field property with
@@ -90,7 +89,7 @@
 
         >>> rawtextOffset = macro[5][1][0]
         >>> rawtextOffset
-        'testpagelet macro content</div>'
+        u'testpagelet macro content</div>'
 
       >>> placelesssetup.tearDown()
 

Modified: Zope3/trunk/src/zope/pagetemplate/pagetemplatefile.py
===================================================================
--- Zope3/trunk/src/zope/pagetemplate/pagetemplatefile.py	2005-07-14 02:36:36 UTC (rev 33315)
+++ Zope3/trunk/src/zope/pagetemplate/pagetemplatefile.py	2005-07-14 07:41:49 UTC (rev 33316)
@@ -22,6 +22,9 @@
 
 from zope.pagetemplate.pagetemplate import PageTemplate
 
+
+DEFAULT_ENCODING = "utf-8"
+
 def package_home(gdict):
     filename = gdict["__file__"]
     return os.path.dirname(filename)
@@ -31,11 +34,12 @@
 
     _v_last_read = 0
 
-    def __init__(self, filename, _prefix=None):
+    def __init__(self, filename, _prefix=None, encoding=DEFAULT_ENCODING):
         path = self.get_path_from_prefix(_prefix)
         self.filename = os.path.join(path, filename)
         if not os.path.isfile(self.filename):
             raise ValueError("No such file", self.filename)
+        self.encoding = encoding
 
     def get_path_from_prefix(self, _prefix):
         if isinstance(_prefix, str):
@@ -63,12 +67,14 @@
             f.close()
             raise
         t = sniff_type(text)
-        if t != "text/xml":
+        if t == "text/xml":
+            text += f.read()
+        else:
             # For HTML, we really want the file read in text mode:
             f.close()
             f = open(self.filename)
-            text = ''
-        text += f.read()
+            text = f.read()
+            text = unicode(text, self.encoding)
         f.close()
         self.pt_edit(text, t)
         self._cook()


Property changes on: Zope3/trunk/src/zope/pagetemplate/pagetemplatefile.py
___________________________________________________________________
Name: svn:keywords
   + Id



More information about the Zope3-Checkins mailing list