From 858723f6f4f3763040e02c5e9a2fa692ad97444f Mon Sep 17 00:00:00 2001 From: makkalot Date: Sun, 15 Jun 2008 00:13:47 +0300 Subject: add controller code to displau automated widgets --- funcweb/funcweb/controllers.py | 47 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/funcweb/funcweb/controllers.py b/funcweb/funcweb/controllers.py index b45d81b..8dba678 100644 --- a/funcweb/funcweb/controllers.py +++ b/funcweb/funcweb/controllers.py @@ -3,11 +3,12 @@ log = logging.getLogger(__name__) from turbogears import controllers, expose, flash, identity, redirect from func.overlord.client import Overlord, Minions +from turbogears import mochikit class Root(controllers.RootController): @expose(template="funcweb.templates.minions") - @identity.require(identity.not_anonymous()) + #@identity.require(identity.not_anonymous()) def minions(self, glob='*'): """ Return a list of our minions that match a given glob """ return dict(minions=Minions(glob).get_all_hosts()) @@ -15,8 +16,8 @@ class Root(controllers.RootController): index = minions # start with our minion view, for now @expose(template="funcweb.templates.minion") - @identity.require(identity.not_anonymous()) - def minion(self, name, module=None, method=None): + #@identity.require(identity.not_anonymous()) + def minion(self, name="*", module=None, method=None): """ Display module or method details for a specific minion. If only the minion name is given, it will display a list of modules @@ -26,6 +27,7 @@ class Root(controllers.RootController): """ fc = Overlord(name) if not module: # list all modules + #just list those who have get_method_args modules = fc.system.list_modules() return dict(modules=modules) else: # a module is specified @@ -39,13 +41,42 @@ class Root(controllers.RootController): @expose(template="funcweb.templates.run") - @identity.require(identity.not_anonymous()) + #@identity.require(identity.not_anonymous()) def run(self, minion="*", module=None, method=None, arguments=''): fc = Overlord(minion) results = getattr(getattr(fc, module), method)(*arguments.split()) cmd = "%s.%s.%s(%s)" % (minion, module, method, arguments) return dict(cmd=cmd, results=results) + + @expose(template="funcweb.templates.method_args") + #@identity.require(identity.not_anonymous()) + def method_display(self,minion="*",module="service",method="reload"): + + fc = Overlord(minion) + method_args = getattr(fc,module).get_method_args() + + if not method_args.values(): + print "Not registered method here" + return dict(minion_form = None) + + print method + the_one = method_args[minion][method]['args'] + if the_one: + + from funcweb.widget_automation import WidgetListFactory,RemoteFormAutomation,RemoteFormFactory + wlist_object = WidgetListFactory(the_one) + wlist_object=wlist_object.get_widgetlist_object() + minion_form =RemoteFormFactory(wlist_object).get_remote_form() + #minion_form = RemoteFormAutomation(wlist_object) + #print minion_form.fields + + #print minion_form + return dict(minion_form=minion_form) + else: + return dict(minion_form = None) + + @expose(template="funcweb.templates.login") def login(self, forward_url=None, previous_url=None, *args, **kw): from cherrypy import request, response @@ -71,6 +102,14 @@ class Root(controllers.RootController): return dict(message=msg, previous_url=previous_url, logging_in=True, original_parameters=request.params, forward_url=forward_url) + + @expose(allow_json=True) + def post_form(self,**kw): + """ + Data processing part + """ + return "I got that data from the remote minion form :
%r"%kw + @expose() def logout(self): -- cgit