diff options
author | Simo Sorce <simo@redhat.com> | 2014-08-29 17:50:45 -0400 |
---|---|---|
committer | Patrick Uiterwijk <puiterwijk@redhat.com> | 2014-09-24 20:29:35 +0200 |
commit | ef4fcd195bbf4d69bac142b7767aff344588842c (patch) | |
tree | 026404ff5c3d98387f01b7bda1f2cc175433571c | |
parent | 7483cfa79415a18f73c29cb7a19e3f91e7945334 (diff) | |
download | ipsilon-ef4fcd195bbf4d69bac142b7767aff344588842c.tar.gz ipsilon-ef4fcd195bbf4d69bac142b7767aff344588842c.tar.xz ipsilon-ef4fcd195bbf4d69bac142b7767aff344588842c.zip |
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-x | ipsilon/admin/common.py | 17 | ||||
-rw-r--r-- | templates/admin/plugin_config.html | 2 |
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] }}"> |