# HG changeset patch # User Pascal Volk # Date 1281075244 0 # Node ID 0d2430dc6ef88b8ce6569af39bf2c2e0ffc04cf7 # Parent 9232ed7e4d85ce40e5fc65cdc9c5b2409ac82e35 VMM/cli/config: CliConfig.set raise a ConfigError, if the new value could not be set. diff -r 9232ed7e4d85 -r 0d2430dc6ef8 VirtualMailManager/cli/config.py --- a/VirtualMailManager/cli/config.py Fri Aug 06 03:45:34 2010 +0000 +++ b/VirtualMailManager/cli/config.py Fri Aug 06 06:14:04 2010 +0000 @@ -15,7 +15,7 @@ from VirtualMailManager.config import Config, ConfigValueError, LazyConfig from VirtualMailManager.errors import ConfigError from VirtualMailManager.cli import w_err, w_std -from VirtualMailManager.constants import VMM_TOO_MANY_FAILURES +from VirtualMailManager.constants import CONF_ERROR, VMM_TOO_MANY_FAILURES _ = lambda msg: msg @@ -65,12 +65,15 @@ If the new `value` has been set, the configuration file will be immediately updated. - Throws a ``ValueError`` if `value` couldn't be converted to - ``LazyConfigOption.cls``""" + Throws a ``ConfigError`` if `value` couldn't be converted to + ``LazyConfigOption.cls`` or ``LazyConfigOption.validate`` fails.""" section, option_ = self._get_section_option(option) - val = self._cfg[section][option_].cls(value) - if self._cfg[section][option_].validate: - val = self._cfg[section][option_].validate(val) + try: + val = self._cfg[section][option_].cls(value) + if self._cfg[section][option_].validate: + val = self._cfg[section][option_].validate(val) + except (ValueError, ConfigValueError), err: + raise ConfigError(str(err), CONF_ERROR) # Do not write default values also skip identical values if not self._cfg[section][option_].default is None: old_val = self.dget(option)