Example #1
0
    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)
Example #2
0
	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)
Example #3
0
	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})