summaryrefslogtreecommitdiffstats
path: root/cobbler/webui/CobblerWeb.py
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2009-03-05 17:59:10 -0500
committerMichael DeHaan <mdehaan@redhat.com>2009-03-05 17:59:10 -0500
commit1dee14556a2e8b5bb7046a56731490a95245b441 (patch)
treebd7f641dd2251396c1031f453ecf920f18e101b6 /cobbler/webui/CobblerWeb.py
parentdbcfc5a2f0d191001cd8000a543e41eddefd20f7 (diff)
downloadcobbler-1dee14556a2e8b5bb7046a56731490a95245b441.tar.gz
cobbler-1dee14556a2e8b5bb7046a56731490a95245b441.tar.xz
cobbler-1dee14556a2e8b5bb7046a56731490a95245b441.zip
Add search to the webapp. Currently all areas are implemented on the backend though we need to tweak out the search forms to allow searching on simulatenous fields and prepopulate the options with fields folks will want to search against.
Diffstat (limited to 'cobbler/webui/CobblerWeb.py')
-rw-r--r--cobbler/webui/CobblerWeb.py125
1 files changed, 123 insertions, 2 deletions
diff --git a/cobbler/webui/CobblerWeb.py b/cobbler/webui/CobblerWeb.py
index 16cbffd1..b68eacbb 100644
--- a/cobbler/webui/CobblerWeb.py
+++ b/cobbler/webui/CobblerWeb.py
@@ -128,7 +128,7 @@ class CobblerWeb(object):
})
def menu(self,**args):
- return self.__render( 'blank.tmpl', { } )
+ return self.__render( 'blank.tmpl', {} )
# ------------------------------------------------------------------------ #
# Settings
@@ -151,6 +151,85 @@ class CobblerWeb(object):
# Distributions
# ------------------------------------------------------------------------ #
+ def distro_menu(self,**spam):
+ return self.__render('blank.tmpl',{ 'more_blank' : 1})
+
+ def __search_execute(self,what,key1=None,value1=None,key2=None,value2=None,key3=None,value3=None):
+ if not self.__xmlrpc_setup():
+ return self.xmlrpc_auth_failure()
+
+ criteria={}
+ if key1 is not None and key1 != "":
+ criteria[key1] = value1.replace('"','')
+ if key2 is not None and key2 != "":
+ criteria[key2] = value2.replace('"','')
+ if key3 is not None and key3 != "":
+ criteria[key3] = value3.replace('"','')
+
+ params = {}
+ params['page'] = -1
+
+ results = []
+ if what == "distro":
+ results = params['distros'] = self.remote.find_distro(criteria,True)
+ elif what == "profile":
+ results = params['profiles'] = self.remote.find_profile(criteria,True)
+ elif what == "system":
+ results = params['systems'] = self.remote.find_system(criteria,True)
+ elif what == "image":
+ results = params['images'] = self.remote.find_image(criteria,True)
+ elif what == "repo":
+ results = params['repos'] = self.remote.find_repo(criteria,True)
+ else:
+ raise "internal error, unknown search type"
+
+
+ if len(results) > 0:
+ return self.__render( "%s_list.tmpl" % what, params)
+ else:
+ return self.__render('empty.tmpl', { 'search' : 1 })
+
+ def distro_search_execute(self,key1=None,value1=None,key2=None,value2=None,key3=None,value3=None,**rest):
+ return self.__search_execute("distro",key1,value1,key2,value2,key3,value3)
+ def profile_search_execute(self,key1=None,value1=None,key2=None,value2=None,key3=None,value3=None,**rest):
+ return self.__search_execute("profile",key1,value1,key2,value2,key3,value3)
+ def system_search_execute(self,key1=None,value1=None,key2=None,value2=None,key3=None,value3=None,**rest):
+ return self.__search_execute("system",key1,value1,key2,value2,key3,value3)
+ def image_search_execute(self,key1=None,value1=None,key2=None,value2=None,key3=None,value3=None,**rest):
+ return self.__search_execute("image",key1,value1,key2,value2,key3,value3)
+ def repo_search_execute(self,key1=None,value1=None,key2=None,value2=None,key3=None,value3=None,**rest):
+ return self.__search_execute("repo",key1,value1,key2,value2,key3,value3)
+
+ def __search(self, what):
+ caption = ""
+ dest = ""
+ if what == "distro":
+ caption = "Search distros"
+ dest = "distro_search_execute"
+ elif what == "profile":
+ caption = "Search profiles"
+ dest = "profile_search_execute"
+ elif what == "system":
+ caption = "Search systems"
+ dest = "system_search_execute"
+ elif what == "repo":
+ caption = "Search repos"
+ dest = "repo_search_execute"
+ elif what == "image":
+ caption = "Search image"
+ dest = "image_search_execute"
+ else:
+ raise "internal error, unknown object type in search"
+
+ return self.__render('search.tmpl', {
+ 'what' : what,
+ 'caption' : caption,
+ 'submit_dest' : dest
+ })
+
+ def distro_search(self,**spam):
+ return self.__search('distro')
+
def distro_list(self,page=None,limit=None,**spam):
if not self.__xmlrpc_setup():
return self.xmlrpc_auth_failure()
@@ -303,6 +382,9 @@ class CobblerWeb(object):
pages = total_size / results_per_page
return (page, results_per_page, pages)
+
+ def system_menu(self,**spam):
+ return self.__render('blank.tmpl',{ 'more_blank' : 1})
def system_list(self,page=None,limit=None,**spam):
@@ -619,10 +701,19 @@ class CobblerWeb(object):
return self.system_list()
+ def system_search(self,**spam):
+ return self.__search('system')
# ------------------------------------------------------------------------ #
# Profiles
# ------------------------------------------------------------------------ #
+
+ def profile_search(self,**spam):
+ return self.__search('profile')
+
+ def profile_menu(self,**spam):
+ return self.__render('blank.tmpl', { 'more_blank' : 1})
+
def profile_list(self,page=None,limit=None,**spam):
if not self.__xmlrpc_setup():
return self.xmlrpc_auth_failure()
@@ -780,6 +871,12 @@ class CobblerWeb(object):
# Repos
# ------------------------------------------------------------------------ #
+ def repo_search(self,**spam):
+ return self.__search('repo')
+
+ def repo_menu(self,**spam):
+ return self.__render('blank.tmpl', { 'more_blank' : 1})
+
def repo_list(self,page=None,limit=None,**spam):
if not self.__xmlrpc_setup():
return self.xmlrpc_auth_failure()
@@ -894,6 +991,12 @@ class CobblerWeb(object):
# Images
# ------------------------------------------------------------------------ #
+ def image_search(self,**spam):
+ return self.__search('image')
+
+ def image_menu(self,**spam):
+ return self.__render('blank.tmpl', { 'more_blank' : 1})
+
def image_list(self,page=None,limit=None,**spam):
if not self.__xmlrpc_setup():
return self.xmlrpc_auth_failure()
@@ -1017,6 +1120,9 @@ class CobblerWeb(object):
# Kickstart files
# ------------------------------------------------------------------------ #
+ def ksfile_menu(self,**spam):
+ return self.__render('blank.tmpl', { 'more_blank' : 1})
+
def ksfile_list(self,**spam):
if not self.__xmlrpc_setup():
return self.xmlrpc_auth_failure()
@@ -1128,15 +1234,22 @@ class CobblerWeb(object):
index.exposed = True
menu.exposed = True
+ distro_menu.exposed = True
distro_edit.exposed = True
distro_list.exposed = True
distro_save.exposed = True
-
+ distro_search.exposed = True
+ distro_search_execute.exposed = True
+
+ profile_menu.exposed = True
subprofile_edit.exposed = True
profile_edit.exposed = True
profile_list.exposed = True
+ profile_search.exposed = True
profile_save.exposed = True
+ profile_search_execute.exposed = True
+ system_menu.exposed = True
system_edit.exposed = True
system_edit_new.exposed = True
system_edit_copy.exposed = True
@@ -1148,14 +1261,22 @@ class CobblerWeb(object):
system_rename.exposed = True
system_delete.exposed = True
system_save.exposed = True
+ system_search.exposed = True
+ system_search_execute.exposed = True
+ repo_menu.exposed = True
repo_edit.exposed = True
repo_list.exposed = True
repo_save.exposed = True
+ repo_search.exposed = True
+ repo_search_execute.exposed = True
+ image_menu.exposed = True
image_edit.exposed = True
image_list.exposed = True
image_save.exposed = True
+ image_search.exposed = True
+ image_search_execute.exposed = True
settings_view.exposed = True
ksfile_edit.exposed = True