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)
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)
def updateDisableList(self): """ Обновление состояния плагинов. Одни отключить, другие включить """ options = PluginsConfig(self.__application.config) # Пройтись по включенным плагинам и отключить те, # что попали в черный список self.__disableEnabledPlugins(options.disabledPlugins.value) # Пройтись по отключенным плагинам и включить те, # что не попали в "черный список" self.__enableDisabledPlugins(options.disabledPlugins.value)
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
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
def setUp(self): self.config = PluginsConfig(Application.config) self.config.disabledPlugins.value = []
def save(self): config = PluginsConfig(self.__owner._application.config) config.disabledPlugins.value = self.__getDisabledPlugins() # enable/disable plugins state self.__owner._application.plugins.updateDisableList()
def save(self): config = PluginsConfig(Application.config) config.disabledPlugins.value = self.__getDisabledPlugins() Application.plugins.updateDisableList()
def setUpClass(cls): cls._app = BaseOutWikerMixin() cls._app.initApplication() cls.application = cls._app.application cls.config = PluginsConfig(cls.application.config)