python-hserver/hcore/webmanager.py

68 lines
1.5 KiB
Python

import Templates
import hserver.api
from objectbroker import NoPersistence
import browser
class WebManager(hserver.api.WebObject,NoPersistence):
def __init__(self,server):
hserver.api.WebObject.__init__(self)
self.__server = server
self.setDefault("overview")
def server(self):
return self.__server
def list_webobjects(self):
r = []
#exp = self.__server.exports()
exp = hserver.api.__dict__
for t in exp.values():
try:
if (issubclass(t,hserver.api.WebObject)):
r.append(t)
except:
pass
return r
def list_paths(self,folder = None, path = "", recurse = 100):
if recurse <= 0:
return []
if folder is None:
folder = self.__server.getRoot()
path = ""
return [ "/", folder, self.list_paths( folder, "", 100), "" ]
ls = []
for c in folder.children():
co = folder[c]
cpath = "%s/%s" % (path,c)
ls.append( [ cpath, co, self.list_paths( co, cpath, recurse - 1), c ] )
return ls
def _addObject(self, request, o):
f = request.getForm()
if ("oname" in f) and ("oclass" in f):
oclass = getattr( hserver.api , f["oclass"].value() )
i = oclass()
setattr( self.server().getRoot(), f["oname"].value(), i )
request.redirect( request.pathwalker().walked(-1) + "/tree" )
addObject = hserver.api.WebCallable(method=_addObject)
overview = Templates.overview_html
packages = Templates.packages_html
control = Templates.control_html
tree = Templates.tree_html
api = Templates.api_js