def _loadPlugins(self): env.menumanager = menu.MenuManager() env.dataprovider = dataprovider.DataProviderManager() env.dataprovider.load() env.viewmanager = view.ViewManager() env.plugins = {} for i in pluginmanager.PluginManager("prewikka.plugins"): try: env.plugins[i.__name__] = i() except error.PrewikkaUserError as err: env.log.warning("%s: plugin loading failed: %s" % (i.__name__, err)) # Load views before auth/session to find all permissions env.viewmanager.loadViews() _AUTH_PLUGINS = pluginmanager.PluginManager("prewikka.auth", autoupdate=True) _SESSION_PLUGINS = pluginmanager.PluginManager("prewikka.session", autoupdate=True) cfg = env.config if cfg.session: self._load_auth_or_session("session", _SESSION_PLUGINS, cfg.session.get_instance_name(), cfg.session) if isinstance(env.session, auth.Auth): # If the session module is also an auth module, no need to load an auth module env.auth = env.session if cfg.auth: env.log.error( _("Session '%s' does not accept any authentication module" % cfg.session.get_instance_name())) else: # If no authentification module defined, we use the session's default auth module auth_name = cfg.auth.get_instance_name( ) if cfg.auth else env.session.get_default_auth() self._load_auth_or_session("auth", _AUTH_PLUGINS, auth_name, cfg.auth) elif cfg.auth: # No session module defined, we load the auth module first self._load_auth_or_session("auth", _AUTH_PLUGINS, cfg.auth.get_instance_name(), cfg.auth) self._load_auth_or_session("session", _SESSION_PLUGINS, env.auth.getDefaultSession()) else: # Nothing defined, we use the anonymous module self._load_auth_or_session("session", _SESSION_PLUGINS, "anonymous") env.auth = env.session env.viewmanager.addView(viewhelpers.AjaxHostURL()) if env.session.can_logout(): env.viewmanager.addView(Logout()) env.renderer = renderer.RendererPluginManager() list(hookmanager.trigger("HOOK_PLUGINS_LOAD"))
def _load_plugins(self): env.pluginmanager = {} env.all_plugins = {} env.menumanager = menu.MenuManager() env.dataprovider = dataprovider.DataProviderManager( autoupdate=self.autoupdate) env.dataprovider.load() env.linkmanager = link.LinkManager() env.plugins = {} pluginmanager.SimplePluginManager("prewikka.plugins", autoupdate=self.autoupdate).load() # Load views before auth/session to find all permissions env.viewmanager.load_views(autoupdate=self.autoupdate) _AUTH_PLUGINS = pluginmanager.PluginManager("prewikka.auth", autoupdate=True) _SESSION_PLUGINS = pluginmanager.PluginManager("prewikka.session", autoupdate=True) cfg = env.config if cfg.session: self._load_auth_or_session("session", _SESSION_PLUGINS, cfg.session.get_instance_name(), cfg.session) if isinstance(env.session, auth.Auth): # If the session module is also an auth module, no need to load an auth module env.auth = env.session if cfg.auth: env.log.error( _("Session '%s' does not accept any authentication module" % cfg.session.get_instance_name())) else: # If no authentification module defined, we use the session's default auth module auth_name = cfg.auth.get_instance_name( ) if cfg.auth else env.session.get_default_auth() self._load_auth_or_session("auth", _AUTH_PLUGINS, auth_name, cfg.auth) elif cfg.auth: # No session module defined, we load the auth module first self._load_auth_or_session("auth", _AUTH_PLUGINS, cfg.auth.get_instance_name(), cfg.auth) self._load_auth_or_session("session", _SESSION_PLUGINS, env.auth.get_default_session()) else: # Nothing defined, we use the anonymous module self._load_auth_or_session("session", _SESSION_PLUGINS, "anonymous") env.auth = env.session env.renderer = renderer.RendererPluginManager( autoupdate=self.autoupdate) env.renderer.load() list(hookmanager.trigger("HOOK_PLUGINS_LOAD"))
def __init__(self, autoupdate=False): self._backends = pluginmanager.PluginManager("prewikka.renderer.backend", autoupdate=autoupdate) pluginmanager.PluginManager.__init__(self, "prewikka.renderer.type", autoupdate=autoupdate) for typ, backend in env.config.renderer_defaults.items(): self._default_backends[typ] = backend self._renderer = {}
def __init__(self): self._backends = pluginmanager.PluginManager("prewikka.renderer.backend") pluginmanager.PluginManager.__init__(self, "prewikka.renderer.type") for typ, backend in env.config.renderer_defaults.items(): self._default_backends[typ] = backend.value self._renderer = {} for i in self: try: self._renderer.setdefault(i.renderer_backend, {})[i.renderer_type] = i() except Exception as e: env.log.error("%s: %s" % (i.__module__, e)) if not i.renderer_type in self._default_backends: self._default_backends[i.renderer_type] = i.renderer_backend
def loadViews(self): # Import here, because of cyclic dependency from prewikka.baseview import BaseView self.addView(BaseView()) for view_class in pluginmanager.PluginManager("prewikka.views"): try: vi = view_class() except error.PrewikkaUserError as e: logger.warning("%s: plugin loading failed: %s", view_class.__name__, e) continue except Exception as e: logger.exception("%s: plugin loading failed: %s", view_class.__name__, e) continue self.addView(vi)
def load(self): for plugin in pluginmanager.PluginManager( "prewikka.dataprovider.backend"): if plugin.type not in self.keys(): env.log.warning("%s: plugin failed to load: %s" % (plugin.__name__, _("No handler configured for '%s' datatype" % plugin.type))) continue try: p = plugin() except error.PrewikkaUserError as err: env.log.warning("%s: plugin failed to load: %s" % (plugin.__name__, err)) continue if p.type in self._backends: raise error.PrewikkaUserError( N_("Configuration error"), N_( "Only one manager should be configured for '%s' backend", p.type)) self._backends[p.type] = p for k in self.keys(): try: p = self[k]() except error.PrewikkaUserError as err: env.log.warning("%s: plugin failed to load: %s" % (self[k].__name__, err)) continue if not isinstance(p.normalizer, (type(None), DataProviderNormalizer)): raise DataProviderError( _("Invalid normalizer for '%s' datatype") % k) self._type_handlers[k] = p
def load_views(self, autoupdate=False): self._init() self.get_baseview() pluginmanager.PluginManager("prewikka.views", autoupdate).load()