python-hserver/hserver/templates/DPage.py

71 lines
1.5 KiB
Python
Raw Permalink Normal View History

2018-03-13 08:06:50 +01:00
from hserver.api.WebObject import WebObject
from hserver.api.WebCallable import WebCallable
2018-03-14 11:38:21 +01:00
from hserver.types.FormApplyable import FormApplyable
2018-03-10 00:18:17 +01:00
from hserver.templates import Template
from objectbroker import Persistence
2018-03-13 08:06:50 +01:00
import hserver
2018-03-10 00:18:17 +01:00
import os
import os.path
from simplelog import log
2018-03-14 11:38:21 +01:00
class DPage(WebObject,Persistence,FormApplyable):
2018-03-10 00:18:17 +01:00
NOPERSIST = ("_DPage__template")
2018-03-14 11:38:21 +01:00
FA_Names = { "source" : "source" }
2018-03-12 20:38:33 +01:00
_hm_edit = Template( base = os.path.dirname( __file__ ), template = "dpage.edit.html" )
2018-03-10 00:18:17 +01:00
def __init__(self, source = None):
2018-03-14 11:38:21 +01:00
WebObject.__init__(self)
2018-03-10 00:18:17 +01:00
self.__template = None
if source is None:
self.__source = """<!DOCTYPE html>
<html>
<head>
2018-03-14 11:38:21 +01:00
<title><%=self.title%></title>
2018-03-10 00:18:17 +01:00
</head>
2018-03-14 11:38:21 +01:00
<body>
<%=self.title%>
</body>
2018-03-10 00:18:17 +01:00
</html>"""
else:
self.__source = source
2018-03-14 11:38:21 +01:00
def source(self, value = None):
if not value is None:
self.__source = value
2018-03-10 00:18:17 +01:00
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 )
2018-03-14 11:38:21 +01:00
tmpl(request, o = self)
2018-03-10 00:18:17 +01:00
preview = WebCallable( method = _preview )