From ebe29a061f72a15cac98a22b58fcafd5dce68ad7 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Thu, 11 Nov 2010 01:11:00 +0100 Subject: [PATCH] new method 'delete' in storage and config --- weboob/tools/application/base.py | 4 ++++ weboob/tools/backend.py | 4 ++++ weboob/tools/config/iconfig.py | 3 +++ weboob/tools/config/iniconfig.py | 8 ++++++++ weboob/tools/config/yamlconfig.py | 12 ++++++++++++ weboob/tools/storage.py | 6 ++++++ 6 files changed, 37 insertions(+) diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index 4391e5cc..b627fb6e 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -44,6 +44,10 @@ class ApplicationStorage(object): if self.storage: return self.storage.set('applications', self.name, *args) + def delete(self, *args): + if self.storage: + return self.storage.delete('applications', self.name, *args) + def get(self, *args, **kwargs): if self.storage: return self.storage.get('applications', self.name, *args, **kwargs) diff --git a/weboob/tools/backend.py b/weboob/tools/backend.py index 8582e5f3..c8cc769d 100644 --- a/weboob/tools/backend.py +++ b/weboob/tools/backend.py @@ -40,6 +40,10 @@ class BackendStorage(object): if self.storage: return self.storage.set('backends', self.name, *args) + def delete(self, *args): + if self.storage: + return self.storage.delete('backends', self.name, *args) + def get(self, *args, **kwargs): if self.storage: return self.storage.get('backends', self.name, *args, **kwargs) diff --git a/weboob/tools/config/iconfig.py b/weboob/tools/config/iconfig.py index a51e5720..d2cd833b 100644 --- a/weboob/tools/config/iconfig.py +++ b/weboob/tools/config/iconfig.py @@ -30,5 +30,8 @@ class IConfig: def set(self, *args): raise NotImplementedError() + def delete(self, *args): + raise NotImplementedError() + def get(self, *args, **kwargs): raise NotImplementedError() diff --git a/weboob/tools/config/iniconfig.py b/weboob/tools/config/iniconfig.py index 6244f3af..616ccc5a 100644 --- a/weboob/tools/config/iniconfig.py +++ b/weboob/tools/config/iniconfig.py @@ -98,3 +98,11 @@ class INIConfig(IConfig): v[k] = {} v = v[k] v[args[-2]] = args[-1] + + def delete(self, *args): + v = self.values + for k in args[:-1]: + if k not in v: + return + v = v[k] + v.pop(args[-1], None) diff --git a/weboob/tools/config/yamlconfig.py b/weboob/tools/config/yamlconfig.py index e456bf76..0a680330 100644 --- a/weboob/tools/config/yamlconfig.py +++ b/weboob/tools/config/yamlconfig.py @@ -93,3 +93,15 @@ class YamlConfig(IConfig): raise ConfigError() v[args[-2]] = args[-1] + + def delete(self, *args): + v = self.values + for a in args[:-1]: + try: + v = v[a] + except KeyError: + return + except TypeError: + raise ConfigError() + + v.pop(args[-1], None) diff --git a/weboob/tools/storage.py b/weboob/tools/storage.py index 55147d15..0abe3c69 100644 --- a/weboob/tools/storage.py +++ b/weboob/tools/storage.py @@ -31,6 +31,9 @@ class IStorage: def set(self, what, name, *args): raise NotImplementedError() + def delete(self, what, name, *args): + raise NotImplementedError() + def get(self, what, name, *args, **kwargs): raise NotImplementedError() @@ -56,5 +59,8 @@ class StandardStorage(IStorage): def set(self, what, name, *args): self.config.set(what, name, *args) + def delete(self, what, name, *args): + self.config.delete(what, name, *args) + def get(self, what, name, *args, **kwargs): return self.config.get(what, name, *args, **kwargs)