separate value in slave
This commit is contained in:
@ -98,7 +98,8 @@ class Base(StorageBase):
|
||||
def __init__(self, name, doc, default=None, default_multi=None,
|
||||
requires=None, multi=False, callback=None,
|
||||
callback_params=None, validator=None, validator_params=None,
|
||||
properties=None, warnings_only=False, extra=None, allow_empty_list=undefined):
|
||||
properties=None, warnings_only=False, extra=None,
|
||||
allow_empty_list=undefined):
|
||||
if not valid_name(name): # pragma: optional cover
|
||||
raise ValueError(_("invalid name: {0} for option").format(name))
|
||||
if requires is not None:
|
||||
@ -108,7 +109,7 @@ class Base(StorageBase):
|
||||
calc_properties = frozenset()
|
||||
requires = undefined
|
||||
if not multi and default_multi is not None: # pragma: optional cover
|
||||
raise ValueError(_("a default_multi is set whereas multi is False"
|
||||
raise ValueError(_("default_multi is set whereas multi is False"
|
||||
" in option: {0}").format(name))
|
||||
if multi is True:
|
||||
_multi = 0
|
||||
@ -133,7 +134,8 @@ class Base(StorageBase):
|
||||
'requirement {0}'.format(
|
||||
list(set_forbidden_properties)))
|
||||
StorageBase.__init__(self, name, _multi, warnings_only, doc, extra,
|
||||
calc_properties, requires, properties, allow_empty_list)
|
||||
calc_properties, requires, properties,
|
||||
allow_empty_list)
|
||||
if multi is not False and default is None:
|
||||
default = []
|
||||
self.impl_validate(default)
|
||||
|
@ -48,6 +48,10 @@ class MasterSlaves(object):
|
||||
if child.impl_getname() == name:
|
||||
self.master = child
|
||||
else:
|
||||
if child.impl_getdefault() != []:
|
||||
raise ValueError(_("not allowed default value for option {0} "
|
||||
"in group {1}").format(child.impl_getname(),
|
||||
name))
|
||||
slaves.append(child)
|
||||
if self.master is None: # pragma: optional cover
|
||||
raise ValueError(_('master group with wrong'
|
||||
@ -107,7 +111,7 @@ class MasterSlaves(object):
|
||||
def pop(self, opt, values, index):
|
||||
for slave in self.getslaves(opt):
|
||||
if not values.is_default_owner(slave, validate_properties=False,
|
||||
validate_meta=False):
|
||||
validate_meta=False, index=index):
|
||||
values._get_cached_item(slave, validate=False,
|
||||
validate_properties=False
|
||||
).pop(index, force=True)
|
||||
@ -139,17 +143,19 @@ class MasterSlaves(object):
|
||||
for slave in self.getslaves(opt):
|
||||
try:
|
||||
slave_path = slave.impl_getpath(values._getcontext())
|
||||
if c_slave_path == slave_path:
|
||||
slave_value = c_slave_value
|
||||
else:
|
||||
slave_value = values._get_validated_value(slave,
|
||||
slave_path,
|
||||
False,
|
||||
False,
|
||||
None, False,
|
||||
None,
|
||||
self_properties=self_properties)
|
||||
slavelen = len(slave_value)
|
||||
slavelen = values._p_.get_max_length(slave_path)
|
||||
#if c_slave_path == slave_path:
|
||||
# slave_value = c_slave_value
|
||||
#else:
|
||||
# slave_value = values._get_validated_value(slave,
|
||||
# slave_path,
|
||||
# False,
|
||||
# False,
|
||||
# None, False,
|
||||
# None,
|
||||
# self_properties=self_properties,
|
||||
# masterlen=masterlen)
|
||||
#slavelen = len(slave_value)
|
||||
self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
|
||||
except ConfigError: # pragma: optional cover
|
||||
pass
|
||||
@ -186,39 +192,44 @@ class MasterSlaves(object):
|
||||
undefined, force_permissive,
|
||||
master=master)
|
||||
master_is_meta = values._is_meta(opt, masterp)
|
||||
value = values._get_validated_value(opt, path, validate,
|
||||
force_permissive,
|
||||
force_properties,
|
||||
validate_properties,
|
||||
None, # not undefined
|
||||
with_meta=master_is_meta,
|
||||
self_properties=self_properties)
|
||||
#value = values._get_validated_value(opt, path, validate,
|
||||
# force_permissive,
|
||||
# force_properties,
|
||||
# validate_properties,
|
||||
# None, # not undefined
|
||||
# with_meta=master_is_meta,
|
||||
# self_properties=self_properties)
|
||||
#if slave, had values until master's one
|
||||
path = opt.impl_getpath(context)
|
||||
valuelen = len(value)
|
||||
if validate:
|
||||
self.validate_slave_length(masterlen, valuelen,
|
||||
opt.impl_getname(), opt)
|
||||
if valuelen < masterlen:
|
||||
for num in range(0, masterlen - valuelen):
|
||||
index = valuelen + num
|
||||
value.append(values._get_validated_value(opt, path, True,
|
||||
False, None,
|
||||
validate_properties=False,
|
||||
with_meta=master_is_meta,
|
||||
index=index,
|
||||
self_properties=self_properties),
|
||||
setitem=False,
|
||||
force=True,
|
||||
validate=validate)
|
||||
if validate_properties:
|
||||
context.cfgimpl_get_settings().validate_properties(opt, False,
|
||||
False,
|
||||
value=value,
|
||||
path=path,
|
||||
force_permissive=force_permissive,
|
||||
force_properties=force_properties,
|
||||
setting_properties=setting_properties)
|
||||
#path = opt.impl_getpath(context)
|
||||
#valuelen = len(value)
|
||||
#if validate:
|
||||
# self.validate_slave_length(masterlen, valuelen,
|
||||
# opt.impl_getname(), opt)
|
||||
#if valuelen < masterlen:
|
||||
|
||||
#FIXME voir si pas de plus grande valeur !
|
||||
value = values._get_multi(opt, path)
|
||||
for index in range(0, masterlen):
|
||||
#index = valuelen + num
|
||||
value.append(values._get_validated_value(opt, path, validate,
|
||||
force_permissive, force_properties,
|
||||
validate_properties,
|
||||
with_meta=master_is_meta,
|
||||
index=index,
|
||||
self_properties=self_properties,
|
||||
masterlen=masterlen),
|
||||
setitem=False,
|
||||
force=True,
|
||||
validate=validate)
|
||||
#FIXME hu?
|
||||
if validate_properties:
|
||||
context.cfgimpl_get_settings().validate_properties(opt, False,
|
||||
False,
|
||||
value=value,
|
||||
path=path,
|
||||
force_permissive=force_permissive,
|
||||
force_properties=force_properties,
|
||||
setting_properties=setting_properties)
|
||||
return value
|
||||
|
||||
def setitem(self, values, opt, value, path):
|
||||
@ -228,14 +239,17 @@ class MasterSlaves(object):
|
||||
base_path = '.'.join(path.split('.')[:-1]) + '.'
|
||||
for slave in self.getslaves(opt):
|
||||
slave_path = base_path + slave.impl_getname()
|
||||
slave_value = values._get_validated_value(slave,
|
||||
slave_path,
|
||||
False,
|
||||
False,
|
||||
None, False,
|
||||
None) # not undefined
|
||||
slavelen = len(slave_value)
|
||||
slavelen = values._p_.get_max_length(slave_path)
|
||||
self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
|
||||
#slave_value = values._get_validated_value(slave,
|
||||
# slave_path,
|
||||
# False,
|
||||
# False,
|
||||
# None, False,
|
||||
# None,
|
||||
# masterlen=masterlen) # not undefined
|
||||
#slavelen = len(slave_value)
|
||||
#self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
|
||||
else:
|
||||
self.validate_slave_length(self.get_length(values, opt,
|
||||
slave_path=path), len(value),
|
||||
|
Reference in New Issue
Block a user