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