diff options
author | Simo Sorce <simo@redhat.com> | 2015-03-31 16:35:15 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2015-03-31 16:35:15 -0400 |
commit | a434d2da8d8df588f269a3e2a6c80c355586ed9b (patch) | |
tree | a4a507d43704e6991f88dd463ce57a2f92ef3a50 /ipsilon/admin | |
parent | f7150fdefeb58ab4e33f742969ebbc6019f45b08 (diff) | |
download | ipsilon-a434d2da8d8df588f269a3e2a6c80c355586ed9b.tar.gz ipsilon-a434d2da8d8df588f269a3e2a6c80c355586ed9b.tar.xz ipsilon-a434d2da8d8df588f269a3e2a6c80c355586ed9b.zip |
Merge the login and info plugins configurationsreview
Having separate login and info plugins configuration pages doesn't
really make a lot of sense. As a first step moving towards login stacks
put login and info plugin configuration into a common "Login Stack"
menu item.
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'ipsilon/admin')
-rw-r--r-- | ipsilon/admin/common.py | 3 | ||||
-rw-r--r-- | ipsilon/admin/info.py | 4 | ||||
-rw-r--r-- | ipsilon/admin/login.py | 4 | ||||
-rw-r--r-- | ipsilon/admin/loginstack.py | 71 |
4 files changed, 78 insertions, 4 deletions
diff --git a/ipsilon/admin/common.py b/ipsilon/admin/common.py index b371fe9..f14a6cc 100644 --- a/ipsilon/admin/common.py +++ b/ipsilon/admin/common.py @@ -355,6 +355,9 @@ class AdminPlugins(AdminPage): self.order = None parent.add_subtree(name, self) + if self._site[facility] is None: + return + for plugin in self._site[facility].available: cherrypy.log.error('Admin info plugin: %s' % plugin) obj = self._site[facility].available[plugin] diff --git a/ipsilon/admin/info.py b/ipsilon/admin/info.py index 38c8d54..4bc85c4 100644 --- a/ipsilon/admin/info.py +++ b/ipsilon/admin/info.py @@ -1,10 +1,10 @@ # Copyright (C) 2014 Ipsilon Contributors see COPYING for license -from ipsilon.admin.common import AdminPlugins +from ipsilon.admin.loginstack import LoginStackPlugins from ipsilon.info.common import FACILITY -class InfoPlugins(AdminPlugins): +class InfoPlugins(LoginStackPlugins): def __init__(self, site, parent): super(InfoPlugins, self).__init__('info', site, parent, FACILITY) self.title = 'Info Plugins' diff --git a/ipsilon/admin/login.py b/ipsilon/admin/login.py index 0223758..deb1e3d 100644 --- a/ipsilon/admin/login.py +++ b/ipsilon/admin/login.py @@ -1,10 +1,10 @@ # Copyright (C) 2014 Ipsilon Contributors see COPYING for license -from ipsilon.admin.common import AdminPlugins +from ipsilon.admin.loginstack import LoginStackPlugins from ipsilon.login.common import FACILITY -class LoginPlugins(AdminPlugins): +class LoginPlugins(LoginStackPlugins): def __init__(self, site, parent): super(LoginPlugins, self).__init__('login', site, parent, FACILITY) self.title = 'Login Plugins' diff --git a/ipsilon/admin/loginstack.py b/ipsilon/admin/loginstack.py new file mode 100644 index 0000000..1faa089 --- /dev/null +++ b/ipsilon/admin/loginstack.py @@ -0,0 +1,71 @@ +# Copyright (C) 2014 Ipsilon Contributors see COPYING for license + +from ipsilon.admin.common import AdminPlugins + + +FACILITY = 'login stack' + + +class LoginStackPlugins(AdminPlugins): + + def __init__(self, name, site, parent, facility, **kwargs): + super(LoginStackPlugins, self).__init__(name, site, parent, + facility, **kwargs) + self.parent = parent + + def root_with_msg(self, message=None, message_type=None, changed=None): + return self.parent.root_with_msg(message, message_type, changed) + + +class LoginStack(AdminPlugins): + def __init__(self, site, parent): + self.children = [] + site[FACILITY] = None + super(LoginStack, self).__init__('loginstack', site, parent, FACILITY) + self.title = 'Login Stack' + self.template = 'admin/loginstack.html' + + def add_subtree(self, name, page): + self.__dict__[name] = page + self.children.append(page) + + def del_subtree(self, name): + self.children.remove(self.__dict__[name]) + del self.__dict__[name] + + def get_children_urls(self): + urls = dict() + for item in self.children: + name = getattr(item, 'name', None) + if name: + urls['%s_url' % name] = cherrypy.url('/%s/%s' % (self.mount, + name)) + return urls + + def root_with_msg(self, message=None, message_type=None, changed=None): + # Force the url to be that of the Login Stack + kwargs = {'title': self.title, + 'menu': self._master.menu, + 'message': message, + 'message_type': message_type, + 'newurl': self.url, + 'sections': list()} + for child in self.children: + plugins = child._site[child.facility] + + if changed is None: + changed = dict() + + targs = {'title': child.title, + 'available': plugins.available, + 'enabled': plugins.enabled, + 'changed': changed, + 'baseurl': child.url} + if child.order: + targs['order_name'] = '%s_order_form' % child.name + targs['order_action'] = child.order.url + + kwargs['sections'].append(targs) + + # pylint: disable=star-args + return self._template(self.template, **kwargs) |