summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2014-08-29 17:50:45 -0400
committerPatrick Uiterwijk <puiterwijk@redhat.com>2014-09-24 20:29:35 +0200
commitef4fcd195bbf4d69bac142b7767aff344588842c (patch)
tree026404ff5c3d98387f01b7bda1f2cc175433571c
parent7483cfa79415a18f73c29cb7a19e3f91e7945334 (diff)
Allow plugins to determine config options order
Ordering may also be partial, for any option not specified they will be appended in lexycographic order. Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
-rwxr-xr-xipsilon/admin/common.py17
-rw-r--r--templates/admin/plugin_config.html2
2 files changed, 17 insertions, 2 deletions
diff --git a/ipsilon/admin/common.py b/ipsilon/admin/common.py
index 424103e..d2ef3cf 100755
--- a/ipsilon/admin/common.py
+++ b/ipsilon/admin/common.py
@@ -36,18 +36,33 @@ class AdminPluginPage(Page):
# Get the defaults
self.plugin_config = obj.get_config_desc()
if not self.plugin_config:
- self.plugin_config = []
+ self.plugin_config = dict()
# Now overlay the actual config
for option in self.plugin_config:
self.plugin_config[option][2] = obj.get_config_value(option)
+ self.options_order = []
+ if hasattr(obj, 'conf_opt_order'):
+ self.options_order = obj.conf_opt_order
+
+ # append any undefined options
+ add = []
+ for k in self.plugin_config.keys():
+ if k not in self.options_order:
+ add.append(k)
+ if len(add):
+ add.sort()
+ for k in add:
+ self.options_order.append(k)
+
@admin_protect
def GET(self, *args, **kwargs):
return self._template('admin/plugin_config.html', title=self.title,
name='admin_%s_%s_form' % (self.facility,
self._obj.name),
menu=self.menu, action=self.url,
+ options_order=self.options_order,
options=self.plugin_config)
@admin_protect
diff --git a/templates/admin/plugin_config.html b/templates/admin/plugin_config.html
index 7c143af..1f75182 100644
--- a/templates/admin/plugin_config.html
+++ b/templates/admin/plugin_config.html
@@ -9,7 +9,7 @@
<div id="options">
<form role="form" id="{{ name }}" action="{{ action }}" method="post" enctype="application/x-www-form-urlencoded">
- {% for o in options %}
+ {% for o in options_order %}
<div class="form-group">
<label for="{{ o }}">{{ o }}:</label>
<input type="text" class="form-control" name="{{ o }}" value="{{ options[o][2] }}">