python-hserver/hcore/browser.py

55 lines
1.3 KiB
Python

from hserver.api import WebObject,WebCallable
from objectbroker import NoPersistence
import Templates
import hserver
class TreeBrowser(WebObject,NoPersistence):
def __init__(self):
WebObject.__init__(self)
self.setDefault("browse")
_browse = Templates.browse_html;
def __call__(self,request,o=None):
return self._browse(request,o)
def findClass(self,classpath):
return hserver.api.findClass(classpath)
def _addObject(self, request, o):
f = request.getForm()
if ("oname" in f) and ("oclass" in f):
oclass = self.findClass(f["oclass"].value().split("."))
#getattr( hserver.api , f["oclass"].value() )
i = oclass()
print(">>>%s" % (o._aq_parent._aq_name,))
self._aq_parent[ f["oname"].value() ] = i
request.redirect( request.pathwalker().walked(-2) + "/_browse" )
add = WebCallable(method=_addObject)
def _delObject(self, request, o):
print(">>>%s" % (o._aq_parent._aq_name,))
del o._aq_parent._aq_parent[o._aq_parent._aq_name]
request.redirect( request.pathwalker().walked(-3) + "/_browse" )
remove = WebCallable(method=_delObject)
def wo_types(self):
r = []
exp = hserver.api.__dict__
for t in exp.values():
try:
if (issubclass(t,hserver.api.WebObject)):
r.append(t. __name__)
except:
pass
r.sort()
return r