add global 'empty' property, this property raise mandatory PropertiesOptionError if multi or master have empty value

This commit is contained in:
2015-07-26 18:55:21 +02:00
parent 1da83edfba
commit 8e7a32de08
7 changed files with 145 additions and 22 deletions

View File

@ -75,6 +75,9 @@ everything_frozen
whole option in config are frozen (even if option have not frozen
property)
empty
raise mandatory PropertiesOptionError if multi or master have empty value
validator
launch validator set by user in option (this property has no effect
for internal validator)
@ -97,10 +100,10 @@ read_write
you can set all variables not frozen
"""
ro_append = set(['frozen', 'disabled', 'validator', 'everything_frozen',
'mandatory'])
'mandatory', 'empty'])
ro_remove = set(['permissive', 'hidden'])
rw_append = set(['frozen', 'disabled', 'validator', 'hidden'])
rw_remove = set(['permissive', 'everything_frozen', 'mandatory'])
rw_remove = set(['permissive', 'everything_frozen', 'mandatory', 'empty'])
forbidden_set_properties = set(['force_store_value'])
@ -468,8 +471,13 @@ class Settings(object):
else:
if 'mandatory' in properties and \
not self._getcontext().cfgimpl_get_values()._isempty(
opt_or_descr, value, opt_or_descr.impl_allow_empty_list()):
opt_or_descr, value):
properties.remove('mandatory')
elif not is_write and 'empty' in forced_properties and \
not opt_or_descr.impl_is_master_slaves('slave') and \
self._getcontext().cfgimpl_get_values()._isempty(
opt_or_descr, value, force_allow_empty_list=True):
properties.add('mandatory')
if is_write and 'everything_frozen' in forced_properties:
properties.add('frozen')
elif 'frozen' in properties and not is_write: