diff --git a/tiramisu/value.py b/tiramisu/value.py index bc0ceea..9190020 100644 --- a/tiramisu/value.py +++ b/tiramisu/value.py @@ -122,7 +122,7 @@ class Values(object): ' for option {0}: {1}').format(opt._name, value)) if self.is_default_owner(opt) and \ 'force_store_value' in setting[opt]: - self.setitem(opt, value) + self.setitem(opt, value, is_write=False) setting.validate_properties(opt, False, False, value=value, force_permissive=force_permissive, force_properties=force_properties) @@ -131,10 +131,9 @@ class Values(object): def __setitem__(self, opt, value): self.setitem(opt, value) - def setitem(self, opt, value, force_permissive=False): - self._setitem(opt, value, force_permissive) - - def _setitem(self, opt, value, force_permissive=False, force_properties=None): + def setitem(self, opt, value, force_permissive=False, is_write=True): + #is_write is, for example, used with "force_store_value" + #user didn't change value, so not write #valid opt if not opt.optimpl_validate(value, self.context, 'validator' in self.context.cfgimpl_get_settings()): @@ -143,12 +142,12 @@ class Values(object): if opt.optimpl_is_multi() and not isinstance(value, Multi): value = Multi(value, self.context, opt) self._setvalue(opt, value, force_permissive=force_permissive, - force_properties=force_properties) + is_write=is_write) - def _setvalue(self, opt, value, force_permissive=False, force_properties=None): + def _setvalue(self, opt, value, force_permissive=False, force_properties=None, is_write=True): self.context.cfgimpl_reset_cache() setting = self.context.cfgimpl_get_settings() - setting.validate_properties(opt, False, True, + setting.validate_properties(opt, False, is_write, value=value, force_permissive=force_permissive, force_properties=force_properties)