def prepare_custom(self, req, itemdef): """ Manage use of custom resources in the admin interface. @param req: the current request @type req: L{modu.web.app.Request} @param itemdef: an itemdef with custom resource info @type itemdef: L{modu.editable.define.itemdef} """ result = itemdef.config.get("resource") if isinstance(result, (list, tuple)): rsrc_class, args, kwargs = result else: rsrc_class = result args = [] kwargs = {} if not (rsrc_class): app.raise404("There is no resource at the path: %s" % req["REQUEST_URI"]) if not (resource.ITemplate.implementedBy(rsrc_class)): app.raise500("The resource at %s is invalid, it must be an ITemplate implementor." % req["REQUEST_URI"]) rsrc = rsrc_class(*args, **kwargs) req["modu.resource"] = rsrc for key in self.get_slots(): rsrc.set_slot(key, self.get_slot(key)) content = rsrc.get_response(req) raise web.HTTPStatus("200 OK", req.get_headers(), content)
def get_content(self, req): """ @see: L{IContent.get_content()} """ super(CherryTemplateContent, self).get_content(req) try: from cherrytemplate import renderTemplate except: from modu.web import app app.raise500("The cherrytemplate package is missing.") self.data['_template_path'] = os.path.join(self.get_template_root(req), self.get_template(req)) self.data['_renderTemplate'] = renderTemplate return eval('_renderTemplate(file=_template_path)', self.data)
def get_content(self, req): """ @see: L{IContent.get_content()} """ super(ZPTemplateContent, self).get_content(req) try: from ZopePageTemplates import PageTemplate except: from modu.web import app app.raise500("The ZopePageTemplates package is missing.") class ZPTmoduTemplate(PageTemplate): def __call__(self, context={}, *args): if not context.has_key('args'): context['args'] = args return self.pt_render(extra_context=context) template_file = open(os.path.join(self.get_template_root(req), self.get_template(req))) self.template = ZPTmoduTemplate() self.template.write(template_file.read()) return self.template(context={'here':self.data})