From fdcc4ec4b9043ab4c5add2ef79b29a9479f415ad Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 27 Jul 2013 13:47:04 +0200 Subject: [PATCH] change '_backend' setting to '_module' (closes #789) --- weboob/core/backendscfg.py | 62 +++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/weboob/core/backendscfg.py b/weboob/core/backendscfg.py index e581b2fd..a48bc39a 100644 --- a/weboob/core/backendscfg.py +++ b/weboob/core/backendscfg.py @@ -63,19 +63,25 @@ class BackendsConfig(object): def iter_backends(self): config = RawConfigParser() config.read(self.confpath) - for instance_name in config.sections(): - params = dict(config.items(instance_name)) + changed = False + for backend_name in config.sections(): + params = dict(config.items(backend_name)) try: - backend_name = params.pop('_backend') + module_name = params.pop('_module') except KeyError: try: - backend_name = params.pop('_type') - warning(u'Please replace _type with _backend in your config file "%s", for backend "%s"' % ( - self.confpath, backend_name)) + module_name = params.pop('_backend') + config.set(backend_name, '_module', module_name) + config.remove_option(backend_name, '_backend') + changed = True except KeyError: - warning('Missing field "_backend" for configured backend "%s"', instance_name) + warning('Missing field "_module" for configured backend "%s"', backend_name) continue - yield instance_name, backend_name, params + yield backend_name, module_name, params + + if changed: + with open(self.confpath, 'wb') as f: + config.write(f) def backend_exists(self, name): """ @@ -85,50 +91,50 @@ class BackendsConfig(object): config.read(self.confpath) return name in config.sections() - def add_backend(self, instance_name, backend_name, params, edit=False): - if not instance_name: + def add_backend(self, backend_name, module_name, params, edit=False): + if not backend_name: raise ValueError(u'Please give a name to the configured backend.') config = RawConfigParser() config.read(self.confpath) if not edit: try: - config.add_section(instance_name) + config.add_section(backend_name) except DuplicateSectionError: - raise BackendAlreadyExists(instance_name) - config.set(instance_name, '_backend', backend_name) + raise BackendAlreadyExists(backend_name) + config.set(backend_name, '_module', module_name) for key, value in params.iteritems(): if isinstance(value, unicode): value = value.encode('utf-8') - config.set(instance_name, key, value) + config.set(backend_name, key, value) with open(self.confpath, 'wb') as f: config.write(f) - def edit_backend(self, instance_name, backend_name, params): - return self.add_backend(instance_name, backend_name, params, True) + def edit_backend(self, backend_name, module_name, params): + return self.add_backend(backend_name, module_name, params, True) - def get_backend(self, instance_name): + def get_backend(self, backend_name): config = RawConfigParser() config.read(self.confpath) - if not config.has_section(instance_name): - raise KeyError(u'Configured backend "%s" not found' % instance_name) + if not config.has_section(backend_name): + raise KeyError(u'Configured backend "%s" not found' % backend_name) - items = dict(config.items(instance_name)) + items = dict(config.items(backend_name)) try: - backend_name = items.pop('_backend') + module_name = items.pop('_module') except KeyError: try: - backend_name = items.pop('_type') - warning(u'Please replace _type with _backend in your config file "%s"' % self.confpath) + module_name = items.pop('_backend') + self.edit_backend(backend_name, module_name, items) except KeyError: - warning('Missing field "_backend" for configured backend "%s"', instance_name) - raise KeyError(u'Configured backend "%s" not found' % instance_name) - return backend_name, items + warning('Missing field "_module" for configured backend "%s"', backend_name) + raise KeyError(u'Configured backend "%s" not found' % backend_name) + return module_name, items - def remove_backend(self, instance_name): + def remove_backend(self, backend_name): config = RawConfigParser() config.read(self.confpath) - if not config.remove_section(instance_name): + if not config.remove_section(backend_name): return False with open(self.confpath, 'w') as f: config.write(f)