Allow to exclude some backends

closes #617
This commit is contained in:
Florent 2013-01-10 19:05:24 +01:00
commit 528cc826ce
2 changed files with 10 additions and 4 deletions

View file

@ -171,7 +171,7 @@ class Weboob(object):
backend_instance = module.create_instance(self, module_name, params or {}, storage)
return backend_instance
def load_backends(self, caps=None, names=None, modules=None, storage=None, errors=None):
def load_backends(self, caps=None, names=None, modules=None, exclude=None, storage=None, errors=None):
"""
Load backends listed in config file.
@ -181,6 +181,8 @@ class Weboob(object):
:type names: tuple[:class:`str`]
:param modules: load backends which module is in list
:type modules: tuple[:class:`str`]
:param exclude: do not load modules in list
:type exclude: tuple[:class:`str`]
:param storage: use this storage if specified
:type storage: :class:`weboob.tools.storage.IStorage`
:param errors: if specified, store every errors in this list
@ -195,7 +197,8 @@ class Weboob(object):
for instance_name, module_name, params in self.backends_config.iter_backends():
if '_enabled' in params and not params['_enabled'].lower() in ('1', 'y', 'true', 'on', 'yes') or \
names is not None and instance_name not in names or \
modules is not None and module_name not in modules:
modules is not None and module_name not in modules or \
exclude is not None and module_name in exclude:
continue
minfo = self.repositories.get_module_info(module_name)

View file

@ -145,6 +145,7 @@ class BaseApplication(object):
if len(app_options.option_list) > 0:
self._parser.add_option_group(app_options)
self._parser.add_option('-b', '--backends', help='what backend(s) to enable (comma separated)')
self._parser.add_option('-e', '--exclude-backends', help='what backend(s) to exclude (comma separated)')
logging_options = OptionGroup(self._parser, 'Logging Options')
logging_options.add_option('-d', '--debug', action='store_true', help='display debug messages')
logging_options.add_option('-q', '--quiet', action='store_true', help='display only error messages')
@ -214,10 +215,12 @@ class BaseApplication(object):
"""
raise NotImplementedError()
def load_backends(self, caps=None, names=None, *args, **kwargs):
def load_backends(self, caps=None, names=None, exclude=None, *args, **kwargs):
if names is None and self.options.backends:
names = self.options.backends.split(',')
loaded = self.weboob.load_backends(caps, names, *args, **kwargs)
if exclude is None and self.options.exclude_backends:
exclude = self.options.exclude_backends.split(',')
loaded = self.weboob.load_backends(caps, names, exclude=exclude, *args, **kwargs)
if not loaded:
logging.info(u'No backend loaded')
return loaded