Пример #1
0
    def __loadPlugin(self, module):
        """
        Найти классы плагинов и создать их экземпляры
        """
        assert module is not None

        options = PluginsConfig(self.__application.config)

        for name in dir(module):
            self.__createObject(module, name, options.disabledPlugins.value)
Пример #2
0
    def updateDisableList(self):
        """
        Enable/Disable plugins according to application.config: "disabledPlugins"
        """
        options = PluginsConfig(self.__application.config)
        disable_list = options.disabledPlugins.value

        for plugin_name in self.loadedPlugins:
            if plugin_name in disable_list:
                self.disable(plugin_name)
            else:
                self.enable(plugin_name)
Пример #3
0
    def updateDisableList(self):
        """
        Обновление состояния плагинов. Одни отключить, другие включить
        """
        options = PluginsConfig(self.__application.config)

        # Пройтись по включенным плагинам и отключить те,
        # что попали в черный список
        self.__disableEnabledPlugins(options.disabledPlugins.value)

        # Пройтись по отключенным плагинам и включить те,
        # что не попали в "черный список"
        self.__enableDisabledPlugins(options.disabledPlugins.value)
Пример #4
0
    def __loadPlugin(self, module):
        """
        Найти классы плагинов и создать экземпляр первого из них
        """
        assert module is not None

        options = PluginsConfig(self.__application.config)

        for name in dir(module):
            plugin = self.__createPlugin(module, name,
                                         options.disabledPlugins.value)
            if plugin is not None:
                return plugin
Пример #5
0
    def __loadPlugin(self, module, errors):
        """
        Find Plugin class in module and try to make instance for it

        :param module:
            python module or package where can be a plugin
        :param errors:
            list where the errors will be saved
        :return:
            The instance of loaded plugin or None
        """
        rez = None
        try:
            module = importlib.import_module(module)

            options = PluginsConfig(self.__application.config)

            # del magic attributes to save time
            attributes = [
                attr for attr in dir(module) if not attr.startswith("__")
            ]

            for name in attributes:
                plugin = self.__createPlugin(module, name)

                if plugin and plugin.name not in self.loadedPlugins:
                    if plugin.name not in options.disabledPlugins.value:
                        self.__plugins[plugin.name] = plugin
                    else:
                        self.__disabledPlugins[plugin.name] = plugin
                    rez = plugin

        except BaseException as e:
            errors.append(
                "*** Plug-in {package} loading error ***\n{package}/\n{error}\n{traceback}"
                .format(package=module,
                        error=str(e),
                        traceback=traceback.format_exc()))

        return rez
Пример #6
0
 def setUp(self):
     self.config = PluginsConfig(Application.config)
     self.config.disabledPlugins.value = []
Пример #7
0
    def save(self):
        config = PluginsConfig(self.__owner._application.config)
        config.disabledPlugins.value = self.__getDisabledPlugins()

        # enable/disable plugins state
        self.__owner._application.plugins.updateDisableList()
Пример #8
0
 def save(self):
     config = PluginsConfig(Application.config)
     config.disabledPlugins.value = self.__getDisabledPlugins()
     Application.plugins.updateDisableList()
Пример #9
0
 def setUpClass(cls):
     cls._app = BaseOutWikerMixin()
     cls._app.initApplication()
     cls.application = cls._app.application
     cls.config = PluginsConfig(cls.application.config)