71 lines
1.5 KiB
Python
71 lines
1.5 KiB
Python
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 = """<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title><%=self.title%></title>
|
|
</head>
|
|
<body>
|
|
<%=self.title%>
|
|
</body>
|
|
</html>"""
|
|
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 )
|
|
|