[Zope-Checkins] SVN: Zope/branches/ajung-zpt-end-game/lib/python/Products/PageTemplates/PageTemplate.py get rid of redundant code, add deprecation warnings

Philipp von Weitershausen philikon at philikon.de
Tue May 9 04:54:11 EDT 2006


Log message for revision 68052:
  get rid of redundant code, add deprecation warnings
  

Changed:
  U   Zope/branches/ajung-zpt-end-game/lib/python/Products/PageTemplates/PageTemplate.py

-=-
Modified: Zope/branches/ajung-zpt-end-game/lib/python/Products/PageTemplates/PageTemplate.py
===================================================================
--- Zope/branches/ajung-zpt-end-game/lib/python/Products/PageTemplates/PageTemplate.py	2006-05-09 08:49:39 UTC (rev 68051)
+++ Zope/branches/ajung-zpt-end-game/lib/python/Products/PageTemplates/PageTemplate.py	2006-05-09 08:54:10 UTC (rev 68052)
@@ -12,216 +12,12 @@
 ##############################################################################
 """Page Template module
 
-HTML- and XML-based template objects using TAL, TALES, and METAL.
+BBB 2005/05/01 -- to be removed after 12 months
+
+$Id$
 """
+import zope.deprecation
+zope.deprecation.moved("zope.pagetemplate.pagetemplate", "2.12")
 
-__version__='$Revision: 1.31 $'[11:-2]
-
-import sys, types
-
-from TAL.TALParser import TALParser
-from TAL.HTMLTALParser import HTMLTALParser
-from TAL.TALGenerator import TALGenerator
-# Do not use cStringIO here!  It's not unicode aware. :(
-from TAL.TALInterpreter import TALInterpreter, FasterStringIO
-from Expressions import getEngine
-from ExtensionClass import Base
-from ComputedAttribute import ComputedAttribute
-
-
-class PageTemplate(Base):
-    "Page Templates using TAL, TALES, and METAL"
-
-    content_type = 'text/html'
-    expand = 0
-    _v_errors = ()
-    _v_warnings = ()
-    _v_program = None
-    _v_macros = None
-    _v_cooked = 0
-    id = '(unknown)'
-    _text = ''
-    _error_start = '<!-- Page Template Diagnostics'
-
-    def StringIO(self):
-        # Third-party products wishing to provide a full Unicode-aware
-        # StringIO can do so by monkey-patching this method.
-        return FasterStringIO()
-
-    def macros(self):
-        return self.pt_macros()
-    macros = ComputedAttribute(macros, 1)
-
-    def pt_edit(self, text, content_type):
-        if content_type:
-            self.content_type = str(content_type)
-        if hasattr(text, 'read'):
-            text = text.read()
-        charset = getattr(self, 'management_page_charset', None)
-        if charset and type(text) == types.StringType:
-            try:
-                unicode(text,'us-ascii')
-            except UnicodeDecodeError:
-                text = unicode(text, charset)
-        self.write(text)
-
-    def pt_getContext(self):
-        c = {'template': self,
-             'options': {},
-             'nothing': None,
-             'request': None,
-             'modules': ModuleImporter,
-             }
-        parent = getattr(self, 'aq_parent', None)
-        if parent is not None:
-            c['here'] = parent
-            c['context'] = parent
-            c['container'] = self.aq_inner.aq_parent
-            while parent is not None:
-                self = parent
-                parent = getattr(self, 'aq_parent', None)
-            c['root'] = self
-        return c
-
-    def pt_render(self, source=0, extra_context={}):
-        """Render this Page Template"""
-        if not self._v_cooked:
-            self._cook()
-
-        __traceback_supplement__ = (PageTemplateTracebackSupplement, self)
-
-        if self._v_errors:
-            e = str(self._v_errors)
-            raise PTRuntimeError, (
-                'Page Template %s has errors: %s' % (self.id, e))
-        output = self.StringIO()
-        c = self.pt_getContext()
-        c.update(extra_context)
-
-        TALInterpreter(self._v_program, self._v_macros,
-                       getEngine().getContext(c),
-                       output,
-                       tal=not source, strictinsert=0)()
-        return output.getvalue()
-
-    def __call__(self, *args, **kwargs):
-        if not kwargs.has_key('args'):
-            kwargs['args'] = args
-        return self.pt_render(extra_context={'options': kwargs})
-
-    def pt_errors(self):
-        if not self._v_cooked:
-            self._cook()
-        err = self._v_errors
-        if err:
-            return err
-        if not self.expand: return
-        try:
-            self.pt_render(source=1)
-        except:
-            return ('Macro expansion failed', '%s: %s' % sys.exc_info()[:2])
-
-    def pt_warnings(self):
-        if not self._v_cooked:
-            self._cook()
-        return self._v_warnings
-
-    def pt_macros(self):
-        if not self._v_cooked:
-            self._cook()
-        if self._v_errors:
-            __traceback_supplement__ = (PageTemplateTracebackSupplement, self)
-            raise PTRuntimeError, (
-                'Page Template %s has errors: %s' % (
-                self.id,
-                self._v_errors
-                ))
-        return self._v_macros
-
-    def pt_source_file(self):
-        return None  # Unknown.
-
-    def write(self, text):
-        assert type(text) in types.StringTypes
-        if text[:len(self._error_start)] == self._error_start:
-            errend = text.find('-->')
-            if errend >= 0:
-                text = text[errend + 4:]
-        if self._text != text:
-            self._text = text
-        self._cook()
-
-    def read(self):
-        self._cook_check()
-        if not self._v_errors:
-            if not self.expand:
-                return self._text
-            try:
-                return self.pt_render(source=1)
-            except:
-                return ('%s\n Macro expansion failed\n %s\n-->\n%s' %
-                        (self._error_start, "%s: %s" % sys.exc_info()[:2],
-                         self._text) )
-
-        return ('%s\n %s\n-->\n%s' % (self._error_start,
-                                      '\n '.join(self._v_errors),
-                                      self._text))
-
-    def _cook_check(self):
-        if not self._v_cooked:
-            self._cook()
-
-    def _cook(self):
-        """Compile the TAL and METAL statments.
-
-        Cooking must not fail due to compilation errors in templates.
-        """
-        source_file = self.pt_source_file()
-        if self.html():
-            gen = TALGenerator(getEngine(), xml=0, source_file=source_file)
-            parser = HTMLTALParser(gen)
-        else:
-            gen = TALGenerator(getEngine(), source_file=source_file)
-            parser = TALParser(gen)
-
-        self._v_errors = ()
-        try:
-            parser.parseString(self._text)
-            self._v_program, self._v_macros = parser.getCode()
-        except:
-            self._v_errors = ["Compilation failed",
-                              "%s: %s" % sys.exc_info()[:2]]
-        self._v_warnings = parser.getWarnings()
-        self._v_cooked = 1
-
-    def html(self):
-        if not hasattr(getattr(self, 'aq_base', self), 'is_html'):
-            return self.content_type == 'text/html'
-        return self.is_html
-
-class _ModuleImporter:
-    def __getitem__(self, module):
-        mod = __import__(module)
-        path = module.split('.')
-        for name in path[1:]:
-            mod = getattr(mod, name)
-        return mod
-
-ModuleImporter = _ModuleImporter()
-
-class PTRuntimeError(RuntimeError):
-    '''The Page Template has template errors that prevent it from rendering.'''
-    pass
-
-
-class PageTemplateTracebackSupplement:
-    #__implements__ = ITracebackSupplement
-
-    def __init__(self, pt):
-        self.object = pt
-        w = pt.pt_warnings()
-        e = pt.pt_errors()
-        if e:
-            w = list(w) + list(e)
-        self.warnings = w
-
+from zope.tales.expressions import SimpleModuleImporter
+ModuleImporter = SimpleModuleImporter()



More information about the Zope-Checkins mailing list