prieto 9 years ago
parent
commit
ee795f539d
1 changed files with 21 additions and 12 deletions
  1. 21
    12
      lodel/settings/settings_loader.py

+ 21
- 12
lodel/settings/settings_loader.py View File

@@ -56,19 +56,24 @@ class SettingsLoader(object):
56 56
     # @return the option
57 57
     def getoption(self,section,keyname,validator,default_value=None,mandatory=False):
58 58
         conf=copy.copy(self.__conf)
59
-        sec=conf[section]
60
-        if keyname in sec:
61
-            optionstr=sec[keyname]['value']
62
-            option=validator(sec[keyname])['value']
63
-            try:
64
-                del self.__conf_sv[section + ':' + keyname]
65
-            except KeyError: #allready fetched
66
-                pass
67
-            return option
68
-        elif mandatory:
69
-             raise SettingsError("Default value mandatory for option %s" % keyname)
59
+        if section in conf:
60
+            sec=conf[section]
61
+            if keyname in sec:
62
+                optionstr=sec[keyname]['value']
63
+                option=validator(sec[keyname])['value']
64
+                try:
65
+                    del self.__conf_sv[section + ':' + keyname]
66
+                except KeyError: #allready fetched
67
+                    pass
68
+                return option
69
+            elif default_value is None and mandatory:
70
+                 raise SettingsError("Default value mandatory for option %s" % keyname)
71
+            sec['keyname']=dict()
72
+            sec['keyname']['value'] = default_value
73
+            sec['keyname']['file'] = 'default_value'
74
+            return default_value
70 75
         else:
71
-             return default_value
76
+            return default_value
72 77
     ##@brief Sets option in a config section. Writes in the conf file
73 78
     # @param section str : name of the section
74 79
     # @param keyname str
@@ -77,6 +82,10 @@ class SettingsLoader(object):
77 82
     # @return the option
78 83
     def setoption(self,section,keyname,value,validator):
79 84
         f_conf=copy.copy(self.__conf[section][keyname]['file'])
85
+        conf=self.__conf
86
+        conf[section][keyname] = value
87
+        if f_conf == 'default_value':
88
+            f_conf = self.conf_path + '/generated.ini'
80 89
         config = configparser.ConfigParser()
81 90
         config.read(f_conf)
82 91
         config[section][keyname] = validator(value)

Loading…
Cancel
Save