3 # Copyright (C) 2014 Simo Sorce <simo@redhat.com>
5 # see file 'COPYING' for use and warranty information
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
22 from ipsilon.util.page import Page
23 from ipsilon.providers.common import FACILITY
24 from ipsilon.admin.common import AdminPluginPage
27 class ProviderPlugins(Page):
28 def __init__(self, site, parent):
29 super(ProviderPlugins, self).__init__(site)
31 self.title = 'Identity Providers'
32 self.url = '%s/providers' % parent.url
33 self.facility = FACILITY
34 parent.add_subtree('providers', self)
36 for plugin in self._site[FACILITY]['available']:
37 cherrypy.log.error('Admin provider plugin: %s' % plugin)
38 obj = self._site[FACILITY]['available'][plugin]
39 page = AdminPluginPage(obj, self._site, self)
40 if hasattr(obj, 'admin'):
42 self.add_subtree(plugin, page)
44 def root_with_msg(self, message=None, message_type=None):
45 plugins = self._site[FACILITY]
47 for item in plugins['available']:
48 plugin = plugins['available'][item]
50 enabled_plugins.append(item)
51 return self._template('admin/providers.html', title=self.title,
54 message_type=message_type,
55 available=plugins['available'],
56 enabled=enabled_plugins,
57 menu=self._master.menu)
59 def root(self, *args, **kwargs):
60 return self.root_with_msg()
62 def enable(self, plugin):
64 plugins = self._site[FACILITY]
65 if plugin not in plugins['available']:
66 msg = "Unknown plugin %s" % plugin
67 return self.root_with_msg(msg, "error")
68 obj = plugins['available'][plugin]
69 if not obj.is_enabled:
70 obj.enable(self._site)
71 msg = "Plugin %s enabled" % obj.name
72 return self.root_with_msg(msg, "success")
75 def disable(self, plugin):
77 plugins = self._site[FACILITY]
78 if plugin not in plugins['available']:
79 msg = "Unknown plugin %s" % plugin
80 return self.root_with_msg(msg, "error")
81 obj = plugins['available'][plugin]
83 obj.disable(self._site)
84 msg = "Plugin %s disabled" % obj.name
85 return self.root_with_msg(msg, "success")
86 disable.exposed = True