for k in add:
self.options_order.append(k)
- @admin_protect
- def GET(self, *args, **kwargs):
+ def root_with_msg(self, message=None, message_type=None):
return self._template('admin/plugin_config.html', title=self.title,
+ menu=self.menu, action=self.url, back=self.back,
+ message=message, message_type=message_type,
name='admin_%s_%s_form' % (self.facility,
self._po.name),
- menu=self.menu, action=self.url, back=self.back,
options_order=self.options_order,
plugin=self._po)
+ @admin_protect
+ def GET(self, *args, **kwargs):
+ return self.root_with_msg()
+
@admin_protect
def POST(self, *args, **kwargs):
# And only if it succeeds we change the live object
self._po.refresh_plugin_config(self.facility)
- return self._template('admin/plugin_config.html', title=self.title,
- message=message,
- message_type=message_type,
- name='admin_%s_%s_form' % (self.facility,
- self._po.name),
- menu=self.menu, action=self.url,
- plugin=self._po)
+ return self.root_with_msg(message=message,
+ message_type=message_type)
class AdminPluginsOrder(AdminPage):
def GET(self, *args, **kwargs):
return self.parent.root_with_msg()
+ def _get_enabled_by_name(self):
+ by_name = dict()
+ for p in self._site[self.facility]['available'].values():
+ if p.is_enabled:
+ by_name[p.name] = p
+ return by_name
+
@admin_protect
def POST(self, *args, **kwargs):
message = "Nothing was modified."
message_type = "info"
- by_name = {p.name: p for p in self._site[self.facility]['enabled']}
+ by_name = self._get_enabled_by_name()
if 'order' in kwargs:
order = kwargs['order'].split(',')
def root_with_msg(self, message=None, message_type=None):
plugins = self._site[self.facility]
enabled = []
- for p in plugins['enabled']:
- enabled.append(p.name)
+ if self.order:
+ for plugin in plugins['enabled']:
+ if plugin.is_enabled:
+ enabled.append(plugin.name)
+ else:
+ for _, plugin in plugins['available'].iteritems():
+ if plugin.is_enabled:
+ enabled.append(plugin.name)
+
targs = {'title': self.title,
'menu': self._master.menu,
'message': message,
msg = "Unknown plugin %s" % plugin
return self.root_with_msg(msg, "error")
obj = plugins['available'][plugin]
- if obj not in plugins['enabled']:
+ if not obj.is_enabled:
obj.enable(self._site)
if self.order:
enabled = list(x.name for x in plugins['enabled'])
msg = "Unknown plugin %s" % plugin
return self.root_with_msg(msg, "error")
obj = plugins['available'][plugin]
- if obj in plugins['enabled']:
+ if obj.is_enabled:
obj.disable(self._site)
if self.order:
enabled = list(x.name for x in plugins['enabled'])
def __init__(self, site, mount):
super(Admin, self).__init__(site)
+ self.title = 'Home'
+ self.mount = mount
self.url = '%s/%s' % (self.basepath, mount)
- self.menu = []
+ self.menu = [self]
def root(self, *args, **kwargs):
return self._template('admin/index.html',
title='Configuration',
+ baseurl=self.url,
menu=self.menu)
def add_subtree(self, name, page):
def del_subtree(self, name):
self.menu.remove(self.__dict__[name])
del self.__dict__[name]
+
+ def get_menu_urls(self):
+ urls = dict()
+ for item in self.menu:
+ name = getattr(item, 'name', None)
+ if name:
+ urls['%s_url' % name] = cherrypy.url('/%s/%s' % (self.mount,
+ name))
+ return urls
+
+ @admin_protect
+ def scheme(self):
+ cherrypy.response.headers.update({'Content-Type': 'image/svg+xml'})
+ urls = self.get_menu_urls()
+ # pylint: disable=star-args
+ return self._template('admin/ipsilon-scheme.svg', **urls)
+ scheme.public_function = True