python-hserver/hserver/templates/DPage.py

65 lines
1.4 KiB
Python

from hserver.api.WebObject import WebObject
from hserver.api.WebCallable import WebCallable
from hserver.templates import Template
from objectbroker import Persistence
import hserver
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 = """<!DOCTYPE html>
<html>
<head>
<title>DPage Template</title>
</head>
<body>DPage Body</body>
</html>"""
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 )