[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