pylint 1.4.3 version fixes
[cascardo/ipsilon.git] / ipsilon / util / config.py
index 947c697..a20c87c 100644 (file)
@@ -109,7 +109,7 @@ class Option(Log):
         return None
 
     def _str_import_value(self, value):
-        if type(value) is not str:
+        if not isinstance(value, str):
             raise ValueError('Value must be string')
         self._assigned_value = value
 
@@ -170,7 +170,7 @@ class List(Option):
         return None
 
     def import_value(self, value):
-        if type(value) is not str:
+        if not isinstance(value, str):
             raise ValueError('Value (type: %s) must be string' % type(value))
         self._assigned_value = [x.strip() for x in value.split(',')]
 
@@ -178,7 +178,9 @@ class List(Option):
 class ComplexList(List):
 
     def _check_value(self, value):
-        if type(value) is not list:
+        if value is None:
+            return
+        if not isinstance(value, list):
             raise ValueError('The value type must be a list, not "%s"' %
                              type(value))
 
@@ -192,7 +194,7 @@ class ComplexList(List):
         return None
 
     def import_value(self, value):
-        if type(value) is not str:
+        if not isinstance(value, str):
             raise ValueError('The value type must be a string, not "%s"' %
                              type(value))
         jsonval = json.loads(value)
@@ -202,11 +204,13 @@ class ComplexList(List):
 class MappingList(ComplexList):
 
     def _check_value(self, value):
-        if type(value) is not list:
+        if value is None:
+            return
+        if not isinstance(value, list):
             raise ValueError('The value type must be a list, not "%s"' %
                              type(value))
         for v in value:
-            if type(v) is not list:
+            if not isinstance(v, list):
                 raise ValueError('Each element must be a list, not "%s"' %
                                  type(v))
             if len(v) != 2:
@@ -214,7 +218,7 @@ class MappingList(ComplexList):
                                  ' not %d' % len(v))
 
     def import_value(self, value):
-        if type(value) is not str:
+        if not isinstance(value, str):
             raise ValueError('Value (type: %s) must be string' % type(value))
         jsonval = json.loads(value)
         self.set_value(jsonval)
@@ -249,7 +253,7 @@ class Choice(Option):
         return '%s=%s' % (self.name, self.get_value())
 
     def set_value(self, value):
-        if type(value) is not list:
+        if not isinstance(value, list):
             value = [value]
         self._assigned_value = list()
         for val in value:
@@ -263,7 +267,7 @@ class Choice(Option):
             self._assigned_value = None
 
     def unset_value(self, value):
-        if type(value) is str:
+        if isinstance(value, str):
             value = [value]
         unset = list()
         for val in value:
@@ -322,3 +326,41 @@ class Condition(Pick):
 
     def import_value(self, value):
         self._assigned_value = value == 'True'
+
+
+class ConfigHelper(Log):
+
+    def __init__(self):
+        self._config = None
+
+    def new_config(self, name, *config_args):
+        self._config = Config(name, *config_args)
+
+    def get_config_obj(self):
+        if self._config is None:
+            raise AttributeError('Config not initialized')
+        return self._config
+
+    def import_config(self, config):
+        if not self._config:
+            raise AttributeError('Config not initialized, cannot import')
+
+        for key, value in config.iteritems():
+            if key in self._config:
+                self._config[key].import_value(str(value))
+
+    def export_config(self):
+        config = dict()
+        for name, option in self._config.iteritems():
+            config[name] = option.export_value()
+        return config
+
+    def get_config_value(self, name):
+        if not self._config:
+            raise AttributeError('Config not initialized')
+        return self._config[name].get_value()
+
+    def set_config_value(self, name, value):
+        if not self._config:
+            raise AttributeError('Config not initialized')
+        return self._config[name].set_value(value)