cannot append properties for option with forbidden_set_properties
This commit is contained in:
parent
2842abdd46
commit
f4307b9122
|
@ -429,3 +429,45 @@ def test_properties_cached():
|
||||||
option
|
option
|
||||||
c._setattr('sub.b1', True, force_permissive=True)
|
c._setattr('sub.b1', True, force_permissive=True)
|
||||||
assert str(setting[b1]) in ["['test']", "[u'test']"]
|
assert str(setting[b1]) in ["['test']", "[u'test']"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def test_append_properties_force_store_value():
|
||||||
|
gcdummy = BoolOption('dummy', 'dummy', default=False, properties=('force_store_value',))
|
||||||
|
gcgroup = OptionDescription('gc', '', [gcdummy])
|
||||||
|
descr = OptionDescription('tiramisu', '', [gcgroup])
|
||||||
|
cfg = Config(descr)
|
||||||
|
setting = cfg.cfgimpl_get_settings()
|
||||||
|
option = cfg.cfgimpl_get_description().gc.dummy
|
||||||
|
assert tuple(option._properties) == tuple(['force_store_value'])
|
||||||
|
assert not 'test' in setting[option]
|
||||||
|
setting[option].append('test')
|
||||||
|
assert tuple(option._properties) == tuple(['force_store_value'])
|
||||||
|
assert 'test' in setting[option]
|
||||||
|
|
||||||
|
|
||||||
|
def test_reset_properties_force_store_value():
|
||||||
|
gcdummy = BoolOption('dummy', 'dummy', default=False, properties=('force_store_value',))
|
||||||
|
gcgroup = OptionDescription('gc', '', [gcdummy])
|
||||||
|
descr = OptionDescription('tiramisu', '', [gcgroup])
|
||||||
|
cfg = Config(descr)
|
||||||
|
setting = cfg.cfgimpl_get_settings()
|
||||||
|
option = cfg.cfgimpl_get_description().gc.dummy
|
||||||
|
assert setting._p_.get_modified_properties() == {}
|
||||||
|
setting.append('frozen')
|
||||||
|
assert setting._p_.get_modified_properties() == {None: set(('frozen', 'expire', 'cache', 'validator', 'warnings'))}
|
||||||
|
setting.reset()
|
||||||
|
assert setting._p_.get_modified_properties() == {}
|
||||||
|
setting[option].append('test')
|
||||||
|
assert setting._p_.get_modified_properties() == {'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
|
setting.reset()
|
||||||
|
assert setting._p_.get_modified_properties() == {'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
|
setting.append('frozen')
|
||||||
|
assert setting._p_.get_modified_properties() == {None: set(('frozen', 'expire', 'validator', 'cache', 'warnings')), 'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
|
setting.reset(option)
|
||||||
|
assert setting._p_.get_modified_properties() == {None: set(('frozen', 'expire', 'validator', 'cache', 'warnings'))}
|
||||||
|
setting[option].append('test')
|
||||||
|
assert setting._p_.get_modified_properties() == {None: set(('frozen', 'expire', 'validator', 'cache', 'warnings')), 'gc.dummy': set(('test', 'force_store_value'))}
|
||||||
|
setting.reset(all_properties=True)
|
||||||
|
assert setting._p_.get_modified_properties() == {}
|
||||||
|
raises(ValueError, 'setting.reset(all_properties=True, opt=option)')
|
||||||
|
|
|
@ -263,9 +263,11 @@ class Property(object):
|
||||||
raise ValueError(_('cannot append {0} property for option {1}: '
|
raise ValueError(_('cannot append {0} property for option {1}: '
|
||||||
'this property is calculated').format(
|
'this property is calculated').format(
|
||||||
propname, self._opt.impl_getname()))
|
propname, self._opt.impl_getname()))
|
||||||
|
if propname in forbidden_set_properties:
|
||||||
|
raise ConfigError(_('cannot add those properties: {0}').format(propname))
|
||||||
self._properties.add(propname)
|
self._properties.add(propname)
|
||||||
if save:
|
if save:
|
||||||
self._setting._setproperties(self._properties, self._path)
|
self._setting._setproperties(self._properties, self._path, force=True)
|
||||||
|
|
||||||
def remove(self, propname):
|
def remove(self, propname):
|
||||||
"""Removes a property named propname
|
"""Removes a property named propname
|
||||||
|
@ -417,12 +419,15 @@ class Settings(object):
|
||||||
for propname in propnames:
|
for propname in propnames:
|
||||||
self.append(propname)
|
self.append(propname)
|
||||||
|
|
||||||
def _setproperties(self, properties, path):
|
def _setproperties(self, properties, path, force=False):
|
||||||
"""save properties for specified path
|
"""save properties for specified path
|
||||||
(never save properties if same has option properties)
|
(never save properties if same has option properties)
|
||||||
"""
|
"""
|
||||||
|
if not force:
|
||||||
forbidden_properties = forbidden_set_properties & properties
|
forbidden_properties = forbidden_set_properties & properties
|
||||||
if forbidden_properties:
|
if forbidden_properties:
|
||||||
|
print "super ..."
|
||||||
|
raise Exception('pouet')
|
||||||
raise ConfigError(_('cannot add those properties: {0}').format(
|
raise ConfigError(_('cannot add those properties: {0}').format(
|
||||||
' '.join(forbidden_properties)))
|
' '.join(forbidden_properties)))
|
||||||
self._p_.setproperties(path, properties)
|
self._p_.setproperties(path, properties)
|
||||||
|
|
Loading…
Reference in New Issue