summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xipsilon/admin/providers.py5
-rwxr-xr-xipsilon/providers/common.py1
-rw-r--r--templates/admin/providers.html3
3 files changed, 8 insertions, 1 deletions
diff --git a/ipsilon/admin/providers.py b/ipsilon/admin/providers.py
index 26e96a7..1a2df7c 100755
--- a/ipsilon/admin/providers.py
+++ b/ipsilon/admin/providers.py
@@ -36,7 +36,10 @@ class ProviderPlugins(Page):
for plugin in self._site[FACILITY]['available']:
cherrypy.log.error('Admin provider plugin: %s' % plugin)
obj = self._site[FACILITY]['available'][plugin]
- self.__dict__[plugin] = AdminPluginPage(obj, self)
+ 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]
diff --git a/ipsilon/providers/common.py b/ipsilon/providers/common.py
index 8e62cbe..f9c1311 100755
--- a/ipsilon/providers/common.py
+++ b/ipsilon/providers/common.py
@@ -43,6 +43,7 @@ class ProviderBase(PluginObject):
super(ProviderBase, self).__init__()
self.name = name
self.path = path
+ self.admin = None
def _debug(self, fact):
if cherrypy.config.get('debug', False):
diff --git a/templates/admin/providers.html b/templates/admin/providers.html
index 18445b6..fbeb54d 100644
--- a/templates/admin/providers.html
+++ b/templates/admin/providers.html
@@ -10,6 +10,9 @@
{% if available[p] in enabled %}
<a class="btn btn-default" href="{{ baseurl }}/disable/{{ p }}">Disable</a>
<a class="btn btn-default" href="{{ baseurl }}/{{ p }}">Configure</a>
+ {% if available[p].admin %}
+ <a class="btn btn-default" href="{{ baseurl }}/{{ p }}/admin">Administer</a>
+ {% endif %}
{% else %}
<a class="btn btn-default" href="{{ baseurl }}/enable/{{ p }}">Enable</a>
{% endif %}