force_store_value store value but not in write mode
authorEmmanuel Garette <egarette@cadoles.com>
Tue, 23 Apr 2013 14:43:31 +0000 (16:43 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Tue, 23 Apr 2013 14:43:39 +0000 (16:43 +0200)
tiramisu/value.py

index bc0ceea..9190020 100644 (file)
@@ -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)