summaryrefslogtreecommitdiffstats
path: root/funcweb
diff options
context:
space:
mode:
authormakkalot <makkalot@gmail.com>2008-06-15 00:13:47 +0300
committermakkalot <makkalot@gmail.com>2008-06-15 00:13:47 +0300
commit858723f6f4f3763040e02c5e9a2fa692ad97444f (patch)
treea6435b54c3bf9f130044cdcfc95df7f70e1d42d2 /funcweb
parentec4aac1710a2f040ab51128c3c2c3841b5b29b43 (diff)
downloadthird_party-func-858723f6f4f3763040e02c5e9a2fa692ad97444f.tar.gz
third_party-func-858723f6f4f3763040e02c5e9a2fa692ad97444f.tar.xz
third_party-func-858723f6f4f3763040e02c5e9a2fa692ad97444f.zip
add controller code to displau automated widgets
Diffstat (limited to 'funcweb')
-rw-r--r--funcweb/funcweb/controllers.py47
1 files 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 :<br/>%r"%kw
+
@expose()
def logout(self):