diff options
author | Simo Sorce <simo@redhat.com> | 2014-03-26 17:31:19 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-03-28 14:12:09 -0400 |
commit | 1e66ada5e35cd69841eb314062266745b0755174 (patch) | |
tree | 5c3124057842257eb1a6d752b8ba2a2cc6a2102c /ipsilon/admin | |
parent | dbcead832f700ad63dc382648f0e3b1b84cd4d23 (diff) | |
download | ipsilon-1e66ada5e35cd69841eb314062266745b0755174.tar.gz ipsilon-1e66ada5e35cd69841eb314062266745b0755174.tar.xz ipsilon-1e66ada5e35cd69841eb314062266745b0755174.zip |
Refactor login plugin enablement code
This allows us to finally implement the plugin enable/disable configuration
buttons and enable/disable plugins on the fly.
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'ipsilon/admin')
-rwxr-xr-x | ipsilon/admin/login.py | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/ipsilon/admin/login.py b/ipsilon/admin/login.py index b8325c8..d11c1f1 100755 --- a/ipsilon/admin/login.py +++ b/ipsilon/admin/login.py @@ -114,9 +114,43 @@ class LoginPlugins(Page): self.order = LoginPluginsOrder(self._site, self) - def root(self, *args, **kwargs): + def root_with_msg(self, message=None, message_type=None): login_plugins = self._site[FACILITY] + ordered = [] + for p in login_plugins['enabled']: + ordered.append(p.name) return self._template('admin/login.html', title=self.title, + message=message, + message_type=message_type, available=login_plugins['available'], - enabled=login_plugins['enabled'], + enabled=ordered, menu=self._master.menu) + + def root(self, *args, **kwargs): + return self.root_with_msg() + + def enable(self, plugin): + msg = None + plugins = self._site[FACILITY] + if plugin not in plugins['available']: + msg = "Unknown plugin %s" % plugin + return self.root_with_msg(msg, "error") + obj = plugins['available'][plugin] + if obj not in plugins['enabled']: + obj.enable(self._site) + msg = "Plugin %s enabled" % obj.name + return self.root_with_msg(msg, "success") + enable.exposed = True + + def disable(self, plugin): + msg = None + plugins = self._site[FACILITY] + if plugin not in plugins['available']: + msg = "Unknown plugin %s" % plugin + return self.root_with_msg(msg, "error") + obj = plugins['available'][plugin] + if obj in plugins['enabled']: + obj.disable(self._site) + msg = "Plugin %s disabled" % obj.name + return self.root_with_msg(msg, "success") + disable.exposed = True |