+ self.tree = None
+ self.admin = None
+
+ def _debug(self, fact):
+ if cherrypy.config.get('debug', False):
+ cherrypy.log(fact)
+
+ def get_tree(self, site):
+ raise NotImplementedError
+
+ def register(self, site):
+ if self.tree:
+ # already registered
+ return
+
+ # configure self
+ plugins = site[FACILITY]
+ if self.name in plugins['config']:
+ self.set_config(plugins['config'][self.name])
+
+ # init pages and admin interfaces
+ self.tree = self.get_tree(site)
+
+ self._debug('IdP Provider registered: %s' % self.name)
+
+ if self.get_config_value('enabled') == '1':
+ # and add self to the root
+ root = site[FACILITY]['root']
+ root.add_subtree(self.name, self.tree)
+ self._debug('IdP Provider enabled: %s' % self.name)
+
+ @property
+ def is_enabled(self):
+ if self.get_config_value('enabled') == '1':
+ return True
+ return False
+
+ def enable(self, site):
+ if self.is_enabled:
+ return
+
+ # and add self to the root
+ root = site[FACILITY]['root']
+ root.add_subtree(self.name, self.tree)
+
+ self.set_config_value('enabled', '1')
+ self.save_plugin_config(FACILITY)
+ self._debug('IdP Provider enabled: %s' % self.name)
+
+ def disable(self, site):
+ if not self.is_enabled:
+ return
+
+ # remove self to the root
+ root = site[FACILITY]['root']
+ root.del_subtree(self.name)
+
+ self.set_config_value('enabled', '0')
+ self.save_plugin_config(FACILITY)
+ self._debug('IdP Provider disabled: %s' % self.name)