def compile(self, apply_filters=True, request=None, **kwargs): """ compiles page template. @param `apply_filters`: turns on/off html filtering You can pass extra arguments to compiler via `kwargs`. """ if not self.body: return '' request = request or getRequest() pt = ZopePageTemplate(id='__%s_tal_body__' % self.context.id) pt.pt_edit(self.body, 'text/html') context = aq_inner(self.context) pt = aq_base(pt).__of__(context) # request is taken by acquisition compiled = pt(**kwargs) if isinstance(compiled, unicode): compiled = compiled.encode('utf-8') # trasform resolveuid link to absolute path if apply_filters: _filter = getMultiAdapter((self.context, request), IFilter, name="resolveuid_and_caption") try: compiled = _filter(compiled) except AttributeError: # Something wrong happend # perhaps image scale doesn't exists pass return compiled.decode('utf-8')
def test_use_as_macro(self): use_macro = ZopePageTemplate(id='use_macro').__of__(self.portal) use_macro.pt_edit(use_macro_zpt, 'text/html') self.assertEqual( use_macro(), '\n<div class="left_portlet">\n' '\t<div class="left_portlet_title">new title</div>\n' '\t<div class="left_portlet_content">PORTLET CONTENT</div>\n' '</div>\n')
def test_use_as_macro(self): use_macro = ZopePageTemplate(id='use_macro').__of__(self.portal) use_macro.pt_edit(use_macro_zpt, 'text/html') self.assertEqual(use_macro(), '\n<div class="left_portlet">\n' '\t<div class="left_portlet_title">new title</div>\n' '\t<div class="left_portlet_content">PORTLET CONTENT</div>\n' '</div>\n')
def test_template_translation(self): tmpl = ZopePageTemplate(id='test_tmpl') tmpl.pt_edit('<p i18n:translate="">Home for' ' <span i18n:name="hours">3</span> hours</p>', 'text/html') self.assertEqual(tmpl.__of__(self.portal)(), u'<p>Home for <span>3</span> hours</p>\n')
def body_compile(self): if not self.body: return '' pt = ZopePageTemplate(id='__adv_page_tal_body__') pt.pt_edit(self.body, 'text/html') context = aq_inner(self) pt = aq_base(pt).__of__(context) # request is taken by acquisition return pt()
class Assignment(base.Assignment): implements(ITALPortlet) title = u"" # overrides the readonly property method from the base class def __init__(self, title=u"", tal=u""): self.pt = ZopePageTemplate(id='__tal_portlet__') self.title = title self.tal = tal def _get_tal(self): return self.pt.read() def _set_tal(self, value): self.pt.pt_edit(value, 'text/html') tal = property(_get_tal, _set_tal)
class Assignment(base.Assignment): title = u"" # overrides the readonly property method from the base class def __init__(self, title=u"", tal=u""): self.pt = ZopePageTemplate(id='__tal_portlet__') self.title = title self.tal = tal def _get_tal(self): return self.pt.read() def _set_tal(self, value): self.pt.pt_edit(value, 'text/html') tal = property(_get_tal, _set_tal)
def __call__(self): """ Renders the report. """ if not self.data(): return self.no_results() try: tal_context = self._getExpressionContext( extra={'view': self, }, tal=True, ) pt = ZopePageTemplate(id='__collective_googleanalytics__') pt.pt_edit(self.report.body, 'text/html') return pt.__of__(self.context).pt_render(extra_context=tal_context) except Exception: logger.exception('Error while rendering %r' % self.report.id) error_log = getToolByName(self.context, 'error_log') error_log.raising(sys.exc_info()) return self.error()