- return self._template('admin/login_order.html',
- message=message,
- message_type=message_type,
- title='login plugins order',
- name='admin_login_order_form',
- action=self.url,
- options=self._site[LOGIN_FACILITY]['enabled'])
+ return self.parent.root_with_msg(message=message,
+ message_type=message_type)
+
+
+class AdminPlugins(AdminPage):
+ def __init__(self, name, site, parent, facility, ordered=True):
+ super(AdminPlugins, self).__init__(site)
+ self._master = parent
+ self.name = name
+ self.title = '%s plugins' % name
+ self.url = '%s/%s' % (parent.url, name)
+ self.facility = facility
+ self.template = 'admin/plugins.html'
+ self.order = None
+ parent.add_subtree(name, self)
+
+ for plugin in self._site[facility].available:
+ cherrypy.log.error('Admin info plugin: %s' % plugin)
+ obj = self._site[facility].available[plugin]
+ page = AdminPluginConfig(obj, self._site, self)
+ if hasattr(obj, 'admin'):
+ obj.admin.mount(page)
+ self.add_subtree(plugin, page)
+
+ if ordered:
+ self.order = AdminPluginsOrder(self._site, self, facility)
+
+ def save_enabled_plugins(self, names):
+ self._site[self.facility].save_enabled(names)
+
+ def root_with_msg(self, message=None, message_type=None):
+ plugins = self._site[self.facility]
+
+ targs = {'title': self.title,
+ 'menu': self._master.menu,
+ 'message': message,
+ 'message_type': message_type,
+ 'available': plugins.available,
+ 'enabled': plugins.enabled,
+ 'baseurl': self.url,
+ 'newurl': self.url}
+ if self.order:
+ targs['order_name'] = '%s_order_form' % self.name
+ targs['order_action'] = self.order.url
+
+ # pylint: disable=star-args
+ return self._template(self.template, **targs)