- self.url = '%s/providers' % parent.url
- self.facility = FACILITY
- parent.add_subtree('providers', self)
-
- for plugin in self._site[FACILITY]['available']:
- cherrypy.log.error('Admin provider plugin: %s' % plugin)
- obj = self._site[FACILITY]['available'][plugin]
- page = AdminPluginPage(obj, self._site, self)
- if hasattr(obj, 'admin'):
- obj.admin.mount(page)
- self.add_subtree(plugin, page)
-
- def root_with_msg(self, message=None, message_type=None):
- plugins = self._site[FACILITY]
- enabled_plugins = []
- for item in plugins['available']:
- plugin = plugins['available'][item]
- if plugin.is_enabled:
- enabled_plugins.append(item)
- return self._template('admin/providers.html', title=self.title,
- baseurl=self.url,
- message=message,
- message_type=message_type,
- available=plugins['available'],
- enabled=enabled_plugins,
- menu=self._master.menu)
-
- @auth_protect
- def root(self, *args, **kwargs):
- return self.root_with_msg()
-
- @admin_protect
- 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 not obj.is_enabled:
- obj.enable(self._site)
- msg = "Plugin %s enabled" % obj.name
- return self.root_with_msg(msg, "success")
- enable.exposed = True
-
- @admin_protect
- 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.is_enabled:
- obj.disable(self._site)
- msg = "Plugin %s disabled" % obj.name
- return self.root_with_msg(msg, "success")
- disable.exposed = True