import hserver.api from hserver.templates import Template from hserver.api import WebObject,WebCallable from objectbroker import Persistence import os import os.path from simplelog import log class DPage(WebObject,Persistence): NOPERSIST = ("_DPage__template") _hm_edit = Template( base = os.path.dirname( __file__ ), template = "dpage.edit.html" ) def __init__(self, source = None): self.__template = None if source is None: self.__source = """ DPage Template DPage Body """ else: self.__source = source def source(self, request): if "content" in request.getForm(): source = request.getForm()["content"].value() self.__source = source self.__template = None return self.__source def __call__(self,request,o = None): return self.template()(request, o = o ) def provide(self, name): tmpl = getattr(self, name) if (isinstance(tmpl, DPage)): return tmpl.template() return None def template(self): if (self.__template is None): self.__template = Template( source = self.__source, provider = self ) return self.__template def _preview(self,request, o = None): if "content" in request.getForm(): source = request.getForm()["content"].value() tmpl = Template( source = source, provider = self ) tmpl(request) preview = WebCallable( method = _preview ) hserver.api.DPage = DPage