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 admin_protect
23 from ipsilon.providers.common import FACILITY
24 from ipsilon.admin.common import AdminPluginPage
25 from ipsilon.admin.common import AdminPage
28 class ProviderPlugins(AdminPage):
29 def __init__(self, site, parent):
30 super(ProviderPlugins, self).__init__(site)
32 self.title = 'Identity Providers'
33 self.url = '%s/providers' % parent.url
34 self.facility = FACILITY
35 parent.add_subtree('providers', self)
37 for plugin in self._site[FACILITY]['available']:
38 cherrypy.log.error('Admin provider plugin: %s' % plugin)
39 obj = self._site[FACILITY]['available'][plugin]
40 page = AdminPluginPage(obj, self._site, self)
41 if hasattr(obj, 'admin'):
43 self.add_subtree(plugin, page)
45 def root_with_msg(self, message=None, message_type=None):
46 plugins = self._site[FACILITY]
48 for item in plugins['available']:
49 plugin = plugins['available'][item]
51 enabled_plugins.append(item)
52 return self._template('admin/providers.html', title=self.title,
55 message_type=message_type,
56 available=plugins['available'],
57 enabled=enabled_plugins,
58 menu=self._master.menu)
60 def root(self, *args, **kwargs):
61 return self.root_with_msg()
64 def enable(self, plugin):
66 plugins = self._site[FACILITY]
67 if plugin not in plugins['available']:
68 msg = "Unknown plugin %s" % plugin
69 return self.root_with_msg(msg, "error")
70 obj = plugins['available'][plugin]
71 if not obj.is_enabled:
72 obj.enable(self._site)
73 msg = "Plugin %s enabled" % obj.name
74 return self.root_with_msg(msg, "success")
75 enable.public_function = True
78 def disable(self, plugin):
80 plugins = self._site[FACILITY]
81 if plugin not in plugins['available']:
82 msg = "Unknown plugin %s" % plugin
83 return self.root_with_msg(msg, "error")
84 obj = plugins['available'][plugin]
86 obj.disable(self._site)
87 msg = "Plugin %s disabled" % obj.name
88 return self.root_with_msg(msg, "success")
89 disable.public_function = True