summaryrefslogtreecommitdiffstats
path: root/ipsilon/admin
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2014-04-07 16:49:06 -0400
committerSimo Sorce <simo@redhat.com>2014-04-11 17:25:54 -0400
commit0464f1403990d3bfd85cd471f6676e70b1e81648 (patch)
treec8c87d56d7b26a7f02bb63a308ba4b884fe4f842 /ipsilon/admin
parente8c8dce4043fa4fb3bb636cab21be77978642002 (diff)
downloadipsilon-0464f1403990d3bfd85cd471f6676e70b1e81648.tar.gz
ipsilon-0464f1403990d3bfd85cd471f6676e70b1e81648.tar.xz
ipsilon-0464f1403990d3bfd85cd471f6676e70b1e81648.zip
Change provider plugins registration and enablement
When plugins are not enabled at startup the admin page is not available as it is created only on enablement. Split enablement and registration, so plugins can be registered even when actually disabled. Also rework the way enablement is tracked and make sure enablement status is saved back to the database when it changes so it is kept on restarts. Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'ipsilon/admin')
-rwxr-xr-xipsilon/admin/providers.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/ipsilon/admin/providers.py b/ipsilon/admin/providers.py
index 1a2df7c..ba5e1e7 100755
--- a/ipsilon/admin/providers.py
+++ b/ipsilon/admin/providers.py
@@ -43,12 +43,17 @@ class ProviderPlugins(Page):
def root_with_msg(self, message=None, message_type=None):
plugins = self._site[FACILITY]
+ enabled_plugins = []
+ for item in plugins['available']:
+ plugin = plugins['available'][item]
+ if plugin.is_enabled:
+ enabled_plugins.append(item)
return self._template('admin/providers.html', title=self.title,
baseurl=self.url,
message=message,
message_type=message_type,
available=plugins['available'],
- enabled=plugins['enabled'],
+ enabled=enabled_plugins,
menu=self._master.menu)
def root(self, *args, **kwargs):
@@ -61,7 +66,7 @@ class ProviderPlugins(Page):
msg = "Unknown plugin %s" % plugin
return self.root_with_msg(msg, "error")
obj = plugins['available'][plugin]
- if obj not in plugins['enabled']:
+ if not obj.is_enabled:
obj.enable(self._site)
msg = "Plugin %s enabled" % obj.name
return self.root_with_msg(msg, "success")
@@ -74,7 +79,7 @@ class ProviderPlugins(Page):
msg = "Unknown plugin %s" % plugin
return self.root_with_msg(msg, "error")
obj = plugins['available'][plugin]
- if obj in plugins['enabled']:
+ if obj.is_enabled:
obj.disable(self._site)
msg = "Plugin %s disabled" % obj.name
return self.root_with_msg(msg, "success")