Commit 79ddc21a authored by Devaev Maxim's avatar Devaev Maxim

Added options validator

parent fbc61f92
......@@ -7,41 +7,49 @@ import config
ConfigDictObject = {
"service" : {
"name" : const.DEFAULT_CONFIG_SERVICE_NAME,
"path" : const.DEFAULT_CONFIG_SERVICE_PATH,
"bus_type" : (const.DEFAULT_CONFIG_SERVICE_BUS_TYPE, const.CONFIG_VALID_SERVICE_BUS_TYPES_LIST)
"name" : (const.DEFAULT_CONFIG_SERVICE_NAME, str, None),
"path" : (const.DEFAULT_CONFIG_SERVICE_PATH, str, None),
"bus_type" : (const.DEFAULT_CONFIG_SERVICE_BUS_TYPE, str, const.CONFIG_VALID_SERVICE_BUS_TYPES_LIST)
}
}
class ValidatorError(Exception) :
pass
class ValueError(Exception) :
pass
def setValue(section, option, value) :
def setValue(section, option, value, validator = None, valid_values_list = None) :
global ConfigDictObject
if not ConfigDictObject.has_key(section) :
ConfigDictObject[section] = {}
if ConfigDictObject[section].has_key(option) and ConfigDictObject[section][option].__class__.__name__ == "tuple" :
if not value in ConfigDictObject[section][option][1] :
raise ValueError("Argument of \"%s :: %s\" \"%s\" not in list %s" % (
section, option, value, str(ConfigDictObject[section][option][1] )))
ConfigDictObject[section][option] = (value, ConfigDictObject[section][option][1])
else :
ConfigDictObject[section][option] = value
if ConfigDictObject[section].has_key(option) :
validator = ConfigDictObject[section][option][1]
valid_values_list = ConfigDictObject[section][option][2]
if valid_values_list != None and not value in valid_values_list :
raise ValueError("Option \"%s::%s = %s\" not in list %s" % (section, option, value, valid_values_list))
if validator != None :
try :
value = validator(value)
except Exception, err1 :
raise ValidatorError("Incorrect option \"%s::%s = %s\" by validator \"%s\": %s" % (
section, option, value, validator.__name__, str(err1) ))
ConfigDictObject[section][option] = (value, validator, valid_values_list)
def value(section, option) :
if ConfigDictObject[section][option].__class__.__name__ == "tuple" :
return ConfigDictObject[section][option][0]
return ConfigDictObject[section][option]
return ConfigDictObject[section][option][0]
def validValues(section, option) :
if ConfigDictObject[section][option].__class__.__name__ == "tuple" :
return ConfigDictObject[section][option][1]
return None
def validator(section, option) :
return ConfigDictObject[section][option][1]
def validValues(section, option) :
return ConfigDictObject[section][option][2]
def loadConfigFiles() :
for config_files_list_item in os.listdir(const.CONFIGS_DIR) :
......@@ -55,3 +63,5 @@ def loadConfigFiles() :
for option in config_parser.options(section):
setValue(section, option, config_parser.get(section, option))
print ConfigDictObject
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment