def _renderFromTemplate(self, data): if self.isVoidTag: return u'' if self._renderOverride is not None: return unicode(self._renderOverride) if not self.renderTemplate: return u'' try: r = MakoRenderer( template=self.renderTemplate, rootPath=StaticFlowEnvironment.rootTemplatePath, data=data, logger=self._log) r.render( tag=self, data=self.attrs, page=self.processor.page, site=self.processor.site) except Exception, err: name = self.__class__.__name__ self.log.writeError([ u'MAKO RENDERING FAILURE [%s]:' % name, u'TEMPLATE: ' + unicode(self.renderTemplate), u'TAG: ' + unicode(self), u'BLOCK: ' + unicode(self.block), u'DATA: ' + unicode(self.attrs) ], err) return u''
def write(self): """ Generates the rss.xml file and saves it to the target location. """ mr = MakoRenderer(self._TEMPLATE, StaticFlowEnvironment.rootTemplatePath, {'rss':self}) result = mr.render() if not mr.success: self.page.site.writeErrorLog(mr.errorMessage) return False result = FileUtils.putContents(result, self.targetPath) if result: self.page.site.writeLogSuccess(u'CREATED', u'RSS File: "%s"' % self.targetPath) else: self.page.site.writeErrorLog(u'Unable to write RSS file "%s"' % self.targetPath) return result
def write(self): """ Generates the sitemap and writes the result to the targetPath """ mr = MakoRenderer(self._TEMPLATE, StaticFlowEnvironment.rootTemplatePath, {'sitemap':self}) result = mr.render() if not mr.success: self.site.writeLogError(unicode(mr.errorMessage)) return False if not FileUtils.putContents(result, self.targetPath): self.site.writeLogError(u'Unable to save sitemap file at: "%s"' % self.targetPath) return False self.site.writeLogSuccess(u'SITEMAP', u'Created sitemap at: "%s"' % self.targetPath) return True
def __call__(self): response = ZigguratBaseView.__call__(self) try: if isinstance(response, dict): t = self.template if t: mr = MakoRenderer( template=t, rootPath=self.ziggurat.configurator.makoRootTemplatePath, logger=self.logger, minify=self._minify, data=response) self._request.response.content_type = 'text/html' self._request.response.text = mr.render() else: self.logger.write('Invalid or missing template: %s' % t) else: return response except Exception as err: self.logger.writeError('Failed Mako rendering attempt', err) # TODO: Should redirect to an error display page if responses are not strings. return self._request.response