summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xipsilon/admin/login.py31
1 files changed, 25 insertions, 6 deletions
diff --git a/ipsilon/admin/login.py b/ipsilon/admin/login.py
index 62522fc..bb79f90 100755
--- a/ipsilon/admin/login.py
+++ b/ipsilon/admin/login.py
@@ -25,6 +25,15 @@ from ipsilon.admin.common import AdminPluginPage
from ipsilon.login.common import FACILITY
+def save_enabled_plugins(names):
+ po = PluginObject()
+ po.name = "global"
+ globalconf = dict()
+ globalconf['order'] = ','.join(names)
+ po.set_config(globalconf)
+ po.save_plugin_config(FACILITY)
+
+
class LoginPluginsOrder(Page):
def __init__(self, site, parent):
@@ -32,6 +41,18 @@ class LoginPluginsOrder(Page):
self.url = '%s/order' % parent.url
self.menu = [parent]
+ def _reorder_plugins(self, order):
+ plugins = self._site[FACILITY]['available']
+ root = self._site[FACILITY]['root']
+ prev_obj = None
+ for name in order:
+ if prev_obj is None:
+ root.first_login = plugins[name]
+ else:
+ prev_obj.next_login = plugins[name]
+ prev_obj = plugins[name]
+ prev_obj.next_login = None
+
@admin_protect
def GET(self, *args, **kwargs):
opts = [p.name for p in self._site[FACILITY]['enabled']]
@@ -66,12 +87,8 @@ class LoginPluginsOrder(Page):
new_names.append(val)
new_plugins.append(plugins_by_name[val])
- po = PluginObject()
- po.name = "global"
- globalconf = dict()
- globalconf['order'] = ','.join(new_names)
- po.set_config(globalconf)
- po.save_plugin_config(FACILITY)
+ save_enabled_plugins(new_names)
+ self._reorder_plugins(new_names)
# When all is saved update also live config. The
# live config is a list of the actual plugin
@@ -139,6 +156,7 @@ class LoginPlugins(Page):
obj = plugins['available'][plugin]
if obj not in plugins['enabled']:
obj.enable(self._site)
+ save_enabled_plugins(list(x.name for x in plugins['enabled']))
msg = "Plugin %s enabled" % obj.name
return self.root_with_msg(msg, "success")
enable.exposed = True
@@ -152,6 +170,7 @@ class LoginPlugins(Page):
obj = plugins['available'][plugin]
if obj in plugins['enabled']:
obj.disable(self._site)
+ save_enabled_plugins(list(x.name for x in plugins['enabled']))
msg = "Plugin %s disabled" % obj.name
return self.root_with_msg(msg, "success")
disable.exposed = True