Add generic support for IdP plugin admin pages
authorSimo Sorce <simo@redhat.com>
Thu, 27 Mar 2014 16:56:28 +0000 (12:56 -0400)
committerSimo Sorce <simo@redhat.com>
Fri, 28 Mar 2014 21:10:32 +0000 (17:10 -0400)
Signed-off-by: Simo Sorce <simo@redhat.com>
ipsilon/admin/providers.py
ipsilon/providers/common.py
templates/admin/providers.html

index 26e96a7..1a2df7c 100755 (executable)
@@ -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]
         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]
 
     def root_with_msg(self, message=None, message_type=None):
         plugins = self._site[FACILITY]
index 8e62cbe..f9c1311 100755 (executable)
@@ -43,6 +43,7 @@ class ProviderBase(PluginObject):
         super(ProviderBase, self).__init__()
         self.name = name
         self.path = path
         super(ProviderBase, self).__init__()
         self.name = name
         self.path = path
+        self.admin = None
 
     def _debug(self, fact):
         if cherrypy.config.get('debug', False):
 
     def _debug(self, fact):
         if cherrypy.config.get('debug', False):
index 18445b6..fbeb54d 100644 (file)
@@ -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] 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 %}
         {% else %}
             <a class="btn btn-default" href="{{ baseurl }}/enable/{{ p }}">Enable</a>
         {% endif %}