from hserver.api.WebObject import WebObject from hserver.api.WebCallable import WebCallable from hserver.types.FormApplyable import FormApplyable from hserver.templates import Template from objectbroker import Persistence import hserver import os import os.path from simplelog import log class DPage(WebObject,Persistence,FormApplyable): NOPERSIST = ("_DPage__template") FA_Names = { "source" : "source" } _hm_edit = Template( base = os.path.dirname( __file__ ), template = "dpage.edit.html" ) def __init__(self, source = None): WebObject.__init__(self) self.__template = None if source is None: self.__source = """ <%=self.title%> <%=self.title%> """ else: self.__source = source def source(self, value = None): if not value is None: self.__source = value 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, o = self) preview = WebCallable( method = _preview )