SSSD info plugin is immutable if not preconfigured
[cascardo/ipsilon.git] / ipsilon / admin / common.py
index 7484806..a85a15d 100644 (file)
@@ -18,6 +18,7 @@
 import cherrypy
 from ipsilon.util.page import Page
 from ipsilon.util.page import admin_protect
+from ipsilon.util.endpoint import allow_iframe
 from ipsilon.util import config as pconfig
 
 
@@ -217,6 +218,9 @@ class AdminPlugins(AdminPage):
         self.order = None
         parent.add_subtree(name, self)
 
+        if self._site[facility] is None:
+            return
+
         for plugin in self._site[facility].available:
             cherrypy.log.error('Admin info plugin: %s' % plugin)
             obj = self._site[facility].available[plugin]
@@ -278,7 +282,10 @@ class AdminPlugins(AdminPage):
         except AdminError, e:
             return self.root_with_msg(str(e), ADMIN_STATUS_WARN)
         if not obj.is_enabled:
-            obj.enable()
+            try:
+                obj.enable()
+            except Exception as e:  # pylint: disable=broad-except
+                return self.root_with_msg(str(e), ADMIN_STATUS_WARN)
             obj.save_enabled_state()
             msg = "Plugin %s enabled" % obj.name
         return self.root_with_msg(msg, ADMIN_STATUS_OK,
@@ -293,7 +300,10 @@ class AdminPlugins(AdminPage):
         except AdminError, e:
             return self.root_with_msg(str(e), ADMIN_STATUS_WARN)
         if obj.is_enabled:
-            obj.disable()
+            try:
+                obj.disable()
+            except Exception as e:  # pylint: disable=broad-except
+                return self.root_with_msg(str(e), ADMIN_STATUS_WARN)
             obj.save_enabled_state()
             msg = "Plugin %s disabled" % obj.name
         return self.root_with_msg(msg, ADMIN_STATUS_OK,
@@ -334,6 +344,7 @@ class Admin(AdminPage):
         return urls
 
     @admin_protect
+    @allow_iframe
     def scheme(self):
         cherrypy.response.headers.update({'Content-Type': 'image/svg+xml'})
         urls = self.get_menu_urls()