condition and check

This commit is contained in:
Emmanuel Garette 2019-11-27 14:03:34 +01:00
parent 590283ef25
commit 4c84a8b89b
169 changed files with 316 additions and 434 deletions
creole
tests/flattener_dicos
00load_autofreeze/result
00load_autofreezeexpert/result
00load_autosave/result
00load_autosaveexpert/result
00load_comment/result
00load_notype/result
00load_save/result
00load_subfolder/result
01auto_base/result
01auto_withoutparam/result
01fill_autofreeze/result
01fill_autosave/result
01fill_base/result
01fill_baseaccent/result
01fill_mandatory/result
01fill_number/result
01fill_optional/result
01separator_base/result
01separator_neverhidden/result
10autosave_hidden/result
10autosave_hidden_frozenifin/result
10check_base/result
10check_option/result
10check_optional/result
10check_valid_differ/result
10check_valid_differ_add/result
10check_valid_differ_removecheck/result
10check_valid_ipnetmask/result
10load_disabled_if_in/result
10load_disabled_if_in_none/result
10load_disabled_if_inaccent/result
10load_disabledifin_fallback/result
10load_disabledifin_whithouttype/result
10load_frozenifin/result
10load_frozenifin_auto/result
10load_frozenifin_multiparam/result
10load_frozenifin_noexist/result
10load_mandatoryifin/result
10load_masterslaves/result
10load_masterslaves_default_multi/result
10load_masterslaves_defaultmulti_master/result
10load_masterslaves_normalize_family/result
10load_multivalue/result
10masterslave_autosaveexpert/result
10masterslave_mandatory/result
10masterslave_mandatoryslave/result
10masterslave_mastermandatory/result
10masterslave_multi/result
10masterslaves_append/result
10masterslaves_auto/result
10masterslaves_automaster/result
10masterslaves_automaster_expert/result
10masterslaves_familyaccent/result
10valid_enum_accent
10valid_enum_base/result
10valid_enum_base_redefine/result
10valid_enum_checkval_true/result
10valid_enum_eosfunc/result
10valid_enum_mandatory/result
10valid_enum_master/result
10valid_enum_multi/result
10valid_enum_number/result
10valid_enum_numberdefault/result
10valid_enum_python/result
10valid_enum_value
11disabled_if_in_filelist/result
11disabled_if_in_filelist_multi/result
11disabledifin_filelist_notexist/result
11disabledifnotin_filelist_notexist/result
11disabledifnotin_filelist_notexist_multi/result
11disabledifnotin_filelist_notexist_validenum/result
11multi_disabled_if_in_filelist/result
20family_append/result
20family_appendaccent/result
20family_empty/result
20family_hidden/result
20family_mode/result
20family_modemasterslaves/result
21family_change/result
21family_changeaccent/result
21family_empty/result
30mandatory_withoutvalue/result
30mandatory_withoutvaluecalc/result
30mandatory_withvalue/result
30mandatory_withvaluecalc/result
40condition_base/result
40condition_fallback/result
40condition_optional/result
40ifin_masterslaves/result
40ifin_masterslavesauto/result
40ifin_multi/result
40ifin_validenum/result
50exists_exists/result
50redefine_description/result

View file

@ -477,6 +477,7 @@ class SpaceAnnotator(object):
self.filter_check()
self.filter_condition()
self.convert_valid_enums()
self.convert_check()
self.convert_autofill()
self.remove_empty_families()
self.change_variable_mode()
@ -484,8 +485,11 @@ class SpaceAnnotator(object):
self.filter_separators()
self.absolute_path_for_symlink_in_containers()
self.convert_helps()
#if hasattr(self.space, 'constraints'):
# print(vars(self.space.constraints))
if hasattr(self.space, 'constraints'):
del self.space.constraints.index
if vars(self.space.constraints):
raise Exception('constraints again?')
del self.space.constraints
def absolute_path_for_symlink_in_containers(self):
if not hasattr(self.space, 'containers'):
@ -717,20 +721,21 @@ class SpaceAnnotator(object):
del self.force_value[path]
def convert_valid_enums(self): # pylint: disable=C0111
if hasattr(self.space, 'variables'):
for variables in self.space.variables.values():
namespace = variables.name
if hasattr(variables, 'family'):
for family in variables.family.values():
if hasattr(family, 'variable'):
for variable in family.variable.values():
if isinstance(variable, self.objectspace.Leadership):
for follower in variable.variable:
path = '{}.{}.{}.{}'.format(namespace, family.name, variable.name, follower.name)
self._convert_valid_enum(follower, path)
else:
path = '{}.{}.{}'.format(namespace, family.name, variable.name)
self._convert_valid_enum(variable, path)
if not hasattr(self.space, 'variables'):
return
for variables in self.space.variables.values():
namespace = variables.name
if hasattr(variables, 'family'):
for family in variables.family.values():
if hasattr(family, 'variable'):
for variable in family.variable.values():
if isinstance(variable, self.objectspace.Leadership):
for follower in variable.variable:
path = '{}.{}.{}.{}'.format(namespace, family.name, variable.name, follower.name)
self._convert_valid_enum(follower, path)
else:
path = '{}.{}.{}'.format(namespace, family.name, variable.name)
self._convert_valid_enum(variable, path)
# valid_enums must be empty now (all information are store in objects)
if self.valid_enums:
raise CreoleDictConsistencyError(_('valid_enum sets for unknown variables {}').format(self.valid_enums.keys()))
@ -991,6 +996,9 @@ class SpaceAnnotator(object):
remove_params.append(param_idx)
except TypeError as err:
raise CreoleDictConsistencyError(_('cannot load checkval value for variable {}: {}').format(check.target, err))
if proposed_value_type:
# no more supported
raise CreoleDictConsistencyError(_('cannot load checkval value for variable {}, no more supported').format(check.target))
remove_params.sort(reverse=True)
for param_idx in remove_params:
del check.param[param_idx]
@ -1021,7 +1029,6 @@ class SpaceAnnotator(object):
remove_indexes.sort(reverse=True)
for idx in remove_indexes:
del space[idx]
#convert level to "warnings_only" and hidden to "transitive"
for check in space:
if check.level == 'warning':
@ -1037,6 +1044,48 @@ class SpaceAnnotator(object):
param.hidden = None
check.transitive = transitive
if not self.space.constraints.check:
del self.space.constraints.check
def convert_check(self):
if not hasattr(self.space, 'constraints') or not hasattr(self.space.constraints, 'check'):
return
for check in self.space.constraints.check:
variable = self.paths.get_variable_obj(check.target)
check_ = self.objectspace.check()
check_.type = 'calculation'
name = check.name
if name == 'valid_differ':
name = 'valid_not_equal'
elif name == 'valid_network_netmask':
params_len = 1
if len(check.param) != params_len:
raise CreoleLoaderError(_('{} must have {} param').format(name, params_len))
elif name == 'valid_ipnetmask':
params_len = 1
if len(check.param) != params_len:
raise CreoleLoaderError(_('{} must have {} param').format(name, params_len))
name = 'valid_ip_netmask'
elif name == 'valid_broadcast':
params_len = 2
if len(check.param) != params_len:
raise CreoleLoaderError(_('{} must have {} param').format(name, params_len))
elif name == 'valid_in_network':
params_len = 2
if len(check.param) != params_len:
raise CreoleLoaderError(_('{} must have {} param').format(name, params_len))
check_.name = name
check_.warnings_only = check.warnings_only
check_.transitive = check.transitive
if hasattr(check, 'param'):
check_.param = check.param
if not hasattr(variable, 'check'):
variable.check = []
variable.check.append(check_)
del self.space.constraints.check
def convert_fill(self, fill_space, space): # pylint: disable=C0111,R0912
fills = {}
# sort fill/auto by index

View file

@ -6,7 +6,7 @@ from os import listdir
#from ast import literal_eval
from lxml.etree import parse, DTD
from tiramisu.option import (UnicodeOption, OptionDescription, PortOption,
from tiramisu.option import (StrOption, OptionDescription, PortOption,
IntOption, ChoiceOption, BoolOption, SymLinkOption, IPOption,
NetworkOption, NetmaskOption, DomainnameOption, BroadcastOption,
URLOption, EmailOption, FilenameOption, UsernameOption, DateOption,
@ -46,7 +46,7 @@ def convert_tiramisu_value(value, obj):
raise Exception('unknown value {} while trying to cast {} to boolean'.format(value, obj))
return prop[value]
func = {IntOption: int, UnicodeOption: str, PortOption: str,
func = {IntOption: int, StrOption: str, PortOption: str,
DomainnameOption: str, EmailOption: str, URLOption: str,
IPOption: str, NetmaskOption: str, NetworkOption: str,
BroadcastOption: str, FilenameOption: str,
@ -61,7 +61,7 @@ def convert_tiramisu_value(value, obj):
CONVERT_OPTION = {'number': dict(opttype=IntOption),
'choice': dict(opttype=ChoiceOption),
'string': dict(opttype=UnicodeOption),
'string': dict(opttype=StrOption),
'password': dict(opttype=PasswordOption),
'mail': dict(opttype=EmailOption),
'boolean': dict(opttype=BoolOption),
@ -119,7 +119,7 @@ class PopulateTiramisuObjects(object):
if set(attr.itervalues()) == set(['True', 'False']):
self.booleans.append(attr.name)
def make_tiramisu_objects(self, xmlroot, creolefunc_file, load_extra=True):
def make_tiramisu_objects(self, xmlroot, creolefunc_file):
elt = Elt({'name': 'baseoption'})
family = Family(elt, self.booleans, self.storage)
self.storage.add('.', family)
@ -142,8 +142,6 @@ class PopulateTiramisuObjects(object):
# `actions` family has to be loaded at the very end
# because it may use `creole` or `extra` variables
for xml in xmlelts_:
if not load_extra and xml.attrib['name'] not in ['creole', 'containers']:
continue
if xml.attrib['name'] == 'creole':
xmlelts.insert(0, xml)
elif xml.attrib['name'] == 'actions':
@ -155,12 +153,9 @@ class PopulateTiramisuObjects(object):
else:
xmlelts = xmlelts_
for xmlelt in xmlelts:
if xmlelt.tag == 'family':
self._iter_family(xmlelt, family)
elif xmlelt.tag == 'constraints':
self._iter_constraints(xmlelt, load_extra)
else:
if xmlelt.tag != 'family':
raise CreoleLoaderError(_('unknown tag {}').format(xmlelt.tag))
self._iter_family(xmlelt, family)
def _populate_variable(self, elt, subpath, is_follower, is_leader):
variable = Variable(elt, self.booleans, self.storage, is_follower, is_leader, self.eosfunc)
@ -188,164 +183,6 @@ class PopulateTiramisuObjects(object):
subpath += '.' + elt.attrib['name']
return subpath
def _iter_constraints(self, xmlelt, load_extra):
for elt in xmlelt:
if elt.tag == 'fill':
self._parse_fill(elt, load_extra)
elif elt.tag == 'check':
self._parse_check(elt, load_extra)
else:
raise CreoleLoaderError(_('unknown constraint {}').format(elt.tag))
def _check_extra(self, variable, load_extra):
if load_extra:
return True
return variable.startswith('creole.') or variable.startswith('containers.')
def _parse_fill(self, elt, load_extra):
if not self._check_extra(elt.attrib['target'], load_extra):
return
callback = getattr(self.eosfunc, elt.attrib['name'])
callback_params = {}
for param in elt:
name = param.attrib.get('name', '')
if param.attrib['type'] == 'string':
value = str(param.text)
elif param.attrib['type'] == 'eole':
hidden = param.attrib['hidden']
if hidden == 'True':
hidden = False
elif hidden == 'False':
hidden = True
else:
raise CreoleLoaderError(_('unknown hidden boolean {}').format(hidden))
if not self._check_extra(param.text, load_extra):
return
value = [self.storage.get(param.text), hidden]
elif param.attrib['type'] == 'number':
value = int(param.text)
elif param.attrib['type'] == 'context':
value = (None,)
else:
raise CreoleLoaderError(_('unknown param type {} in fill to {}').format(param.attrib['type'], elt.attrib['target']))
callback_params.setdefault(name, []).append(value)
if callback_params == {}:
callback_params = None
self.storage.add_callback(elt.attrib['target'], callback, callback_params)
def _parse_check(self, elt, load_extra):
if not self._check_extra(elt.attrib['target'], load_extra):
return
all_param_eole = True
for param in elt:
if param.attrib.get('type') != 'eole':
all_param_eole = False
break
if elt.attrib['name'] == 'valid_enum':
# only for valid_enum with checkval to True
if len(elt) != 1:
raise CreoleLoaderError(_('valid_enum cannot have more than one param for {}').format(elt.attrib['target']))
if elt[0].attrib['type'] == 'eole':
proposed = elt[0].text
type_ = 'eole'
else:
#proposed_value = literal_eval(elt[0].text)
proposed_value = eval(elt[0].text)
proposed = tuple(proposed_value)
type_ = 'string'
self.storage.add_information(elt.attrib['target'], 'proposed_value', {'value': proposed, 'type': type_})
validator = getattr(self.eosfunc, elt.attrib['name'])
elif elt.attrib['name'] == 'valid_differ' and all_param_eole:
if (HIGH_COMPATIBILITY and len(elt) not in [0, 1]) or (not HIGH_COMPATIBILITY and len(elt) != 1):
raise CreoleLoaderError(_('valid_differ length should be 1'))
if HIGH_COMPATIBILITY and len(elt) == 1:
if not self._check_extra(elt[0].text, load_extra):
return
variables = [self.storage.get(elt[0].text)]
else:
variables = []
self.storage.add_consistency(elt.attrib['target'],
'not_equal',
variables,
elt.attrib['warnings_only'],
elt.attrib['transitive'])
elif elt.attrib['name'] == 'valid_networknetmask':
if len(elt) != 1:
raise CreoleLoaderError(_('valid_networknetmask length should be 1'))
if not all_param_eole:
raise CreoleLoaderError(_('valid_networknetmask must have only eole variable'))
variables = [self.storage.get(elt[0].text)]
self.storage.add_consistency(elt.attrib['target'],
'network_netmask',
variables,
elt.attrib['warnings_only'],
elt.attrib['transitive'])
elif elt.attrib['name'] == 'valid_ipnetmask':
if len(elt) != 1:
raise CreoleLoaderError(_('valid_ipnetmask length should be 1'))
if not all_param_eole:
raise CreoleLoaderError(_('valid_ipnetmask must have only eole variable'))
if not self._check_extra(elt[0].text, load_extra):
return
variables = [self.storage.get(elt[0].text)]
self.storage.add_consistency(elt.attrib['target'],
'ip_netmask',
variables,
elt.attrib['warnings_only'],
elt.attrib['transitive'])
elif elt.attrib['name'] == 'valid_broadcast':
if len(elt) != 2:
raise CreoleLoaderError(_('valid_broadcast length should be 2'))
if not all_param_eole:
raise CreoleLoaderError(_('valid_broadcast must have only eole variable'))
if not self._check_extra(elt[0].text, load_extra):
return
variables = [self.storage.get(elt[0].text)]
if not self._check_extra(elt[1].text, load_extra):
return
variables.append(self.storage.get(elt[1].text))
self.storage.add_consistency(elt.attrib['target'],
'broadcast',
variables,
elt.attrib['warnings_only'],
elt.attrib['transitive'])
elif elt.attrib['name'] == 'valid_in_network':
if len(elt) != 2:
raise CreoleLoaderError(_('valid_in_network length should be 2'))
if not all_param_eole:
raise CreoleLoaderError(_('valid_in_network must have only eole variable'))
if not self._check_extra(elt[0].text, load_extra):
return
variables = [self.storage.get(elt[0].text)]
if not self._check_extra(elt[1].text, load_extra):
return
variables.append(self.storage.get(elt[1].text))
self.storage.add_consistency(elt.attrib['target'],
'in_network',
variables,
elt.attrib['warnings_only'],
elt.attrib['transitive'])
else:
validator = getattr(self.eosfunc, elt.attrib['name'])
validator_params = {}
for param in elt:
text = param.text
if param.attrib['type'] == 'eole':
hidden = param.attrib.get('hidden', 'True')
if hidden == 'True':
hidden = False
elif hidden == 'False':
hidden = True
else:
raise CreoleLoaderError(_('unknown hidden boolean {}').format(hidden))
if not self._check_extra(text, load_extra):
return
text = [self.storage.get(text), hidden]
validator_params.setdefault(param.attrib.get('name', ''), []).append(text)
self.storage.add_validator(elt.attrib['target'], validator, validator_params)
def _iter_leader(self, leader, subpath):
subpath = self._build_path(subpath, leader)
family = Family(leader, self.booleans, self.storage)
@ -461,18 +298,10 @@ class ElementStorage:
raise CreoleLoaderError(_('path already loaded {}').format(path))
self.paths[path] = elt
def add_callback(self, path, callback, callback_params):
elt = self.get(path)
elt.add_callback(callback, callback_params)
def add_information(self, path, name, information):
elt = self.get(path)
elt.add_information(name, information)
def add_validator(self, path, validator, validator_params):
elt = self.get(path)
elt.add_validator(validator, validator_params)
def add_consistency(self, path, consistence, variables, warnings_only, transitive):
elt = self.get(path)
elt.add_consistency(consistence, variables, warnings_only, transitive)
@ -508,9 +337,7 @@ class Variable(Common):
self.option = None
self.informations = {}
self.attrib = {}
self.callbacks = []
self.requires = []
self.validator = None
self.consistencies = []
self.attrib['properties'] = []
self.eosfunc = eosfunc
@ -559,28 +386,37 @@ class Variable(Common):
else:
self.attrib['properties'].append(child.text)
elif child.tag == 'value':
if "type" in child.attrib:
type_ = CONVERT_OPTION[child.attrib['type']]['opttype']
else:
type_ = self.object_type
if self.attrib['multi'] and not is_follower:
if 'default' not in self.attrib:
self.attrib['default'] = []
value = convert_tiramisu_value(child.text, type_)
self.attrib['default'].append(value)
if 'default_multi' not in self.attrib and not is_leader:
self.attrib['default_multi'] = value
else:
if 'default' in self.attrib:
raise CreoleLoaderError(_('default value already set for {}'
'').format(self.attrib['path']))
value = convert_tiramisu_value(child.text, type_)
if value is None: # and (elt.attrib['type'] != 'choice' or value not in self.attrib['values']):
value = u''
if is_follower:
self.attrib['default_multi'] = value
if child.attrib.get('type') == 'calculation':
if child.text.strip():
self.attrib['default'] = (child.text.strip(),)
else:
self.attrib['default'] = value
params = []
for param in child:
params.append(self.parse_param(param))
self.attrib['default'] = (child.attrib['name'], params)
else:
if "type" in child.attrib:
type_ = CONVERT_OPTION[child.attrib['type']]['opttype']
else:
type_ = self.object_type
if self.attrib['multi'] and not is_follower:
if 'default' not in self.attrib:
self.attrib['default'] = []
value = convert_tiramisu_value(child.text, type_)
self.attrib['default'].append(value)
if 'default_multi' not in self.attrib and not is_leader:
self.attrib['default_multi'] = value
else:
if 'default' in self.attrib:
raise CreoleLoaderError(_('default value already set for {}'
'').format(self.attrib['path']))
value = convert_tiramisu_value(child.text, type_)
if value is None: # and (elt.attrib['type'] != 'choice' or value not in self.attrib['values']):
value = u''
if is_follower:
self.attrib['default_multi'] = value
else:
self.attrib['default'] = value
if 'initkwargs' in convert_option:
self.attrib.update(convert_option['initkwargs'])
if elt.attrib['type'] == 'symlink':
@ -588,20 +424,33 @@ class Variable(Common):
del self.attrib['multi']
self.attrib['opt'] = storage.get(self.attrib['opt'])
def parse_param(self, param):
name = param.attrib.get('name', '')
if param.attrib['type'] == 'string':
value = param.text
elif param.attrib['type'] == 'eole':
hidden = param.attrib['hidden']
if hidden == 'True':
hidden = False
elif hidden == 'False':
hidden = True
else:
raise CreoleLoaderError(_('unknown hidden boolean {}').format(hidden))
value = [param.text, hidden]
elif param.attrib['type'] == 'number':
value = int(param.text)
else:
raise CreoleLoaderError(_('unknown param type {}').format(param.attrib['type']))
return(name, value)
def add_information(self, key, value):
if key in self.informations:
raise CreoleLoaderError(_('key already exists in information {}').format(key))
self.informations[key] = value
def add_callback(self, callback, callback_params):
self.callbacks.append((callback, callback_params))
def add_requires(self, requires):
self.requires.extend(requires)
def add_validator(self, validator, validator_params):
self.validator = (validator, validator_params)
def add_consistency(self, consistence, variables, warnings_only, transitive):
self.consistencies.append((consistence, variables, warnings_only, transitive))
@ -627,12 +476,48 @@ class Variable(Common):
return new_params
return params
def build_default(self):
if 'default' in self.attrib:
default = self.attrib['default']
if isinstance(default, tuple):
#('calc_val', [('', ['creole.general.mode_conteneur_actif1', False])])
args = []
kwargs = {}
if len(default) == 2:
for param in default[1]:
if isinstance(param[1], list):
value = ParamOption(self.storage.get(param[1][0]).get(), notraisepropertyerror=param[1][1])
else:
value = ParamValue(param[1])
if not param[0]:
args.append(value)
else:
kwargs[param[0]] = value
self.attrib['default'] = Calculation(getattr(self.eosfunc, default[0]),
Params(tuple(args),
kwargs=kwargs))
#for index, obj in enumerate(self.attrib.get('values', [])):
# print(obj)
#if isinstance(prop, tuple):
# action, kwargs = prop
# kwargs['condition'] = ParamOption(self.storage.get(kwargs['condition']).get(), todict=True)
# prop = Calculation(calc_value,
# Params(action,
# kwargs=kwargs))
# self.attrib['properties'][index] = prop
#if self.attrib['properties']:
# self.attrib['properties'] = tuple(self.attrib['properties'])
#else:
# del self.attrib['properties']
def get(self):
if self.option is None:
if self.object_type is SymLinkOption:
self.attrib['opt'] = self.attrib['opt'].get()
else:
self.build_properties()
self.build_default()
#for callback, callback_params in self.callbacks:
# self.attrib['callback'] = callback
# self.attrib['callback_params'] = self.build_params(callback_params)

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="Général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>basic</property>

View file

@ -1,11 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_entier" target="creole.general.int" transitive="True" warnings_only="False">
<param name="mini" type="string">0</param>
<param name="maxi" type="string">100</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
@ -15,6 +9,10 @@
<value>b</value>
</variable>
<variable doc="No change" multi="False" name="int" type="number">
<check level="error" name="valid_entier" transitive="True" type="calculation" warnings_only="False">
<param name="mini" type="string">0</param>
<param name="maxi" type="string">100</param>
</check>
<property>normal</property>
</variable>
</family>

View file

@ -1,11 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_entier" target="creole.general.int" transitive="True" warnings_only="False">
<param name="mini" type="string">0</param>
<param name="maxi" type="eole">creole.general.int2</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
@ -20,6 +14,10 @@
<value>100</value>
</variable>
<variable doc="No change" multi="False" name="int" type="number">
<check level="error" name="valid_entier" transitive="True" type="calculation" warnings_only="False">
<param name="mini" type="string">0</param>
<param name="maxi" type="eole">creole.general.int2</param>
</check>
<property>normal</property>
</variable>
</family>

View file

@ -1,11 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_differ" target="creole.general.int" transitive="True" warnings_only="False">
<param type="eole">creole.general.int2</param>
</check>
<check name="valid_differ" target="creole.general.int" transitive="True" warnings_only="False"/>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
@ -15,6 +9,10 @@
<value>b</value>
</variable>
<variable doc="No change" multi="False" name="int" type="number">
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.int2</param>
</check>
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False"/>
<property>normal</property>
</variable>
<variable doc="No change" multi="False" name="int2" type="number">

View file

@ -1,14 +1,12 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_differ" target="creole.general.mode_conteneur_actif" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<choice type="string">oui</choice>
<choice type="string">non</choice>
<property>mandatory</property>

View file

@ -1,19 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_differ" target="creole.general.mode_conteneur_actif3" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<check name="valid_differ" target="creole.general.mode_conteneur_actif3" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif2</param>
</check>
<check name="valid_differ" target="creole.general.mode_conteneur_actif3" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<check name="valid_differ" target="creole.general.mode_conteneur_actif3" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif2</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
@ -39,6 +25,18 @@
<value type="string">non</value>
</variable>
<variable doc="No change" multi="False" name="mode_conteneur_actif3" type="string">
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif2</param>
</check>
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif2</param>
</check>
<property>mandatory</property>
<property>normal</property>
<value>oui</value>

View file

@ -1,13 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_differ" target="creole.general.mode_conteneur_actif3" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<check name="valid_differ" target="creole.general.mode_conteneur_actif3" transitive="True" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif2</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
@ -33,6 +25,12 @@
<value type="string">non</value>
</variable>
<variable doc="No change" multi="False" name="mode_conteneur_actif3" type="string">
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif1</param>
</check>
<check level="error" name="valid_not_equal" transitive="True" type="calculation" warnings_only="False">
<param type="eole">creole.general.mode_conteneur_actif2</param>
</check>
<property>mandatory</property>
<property>normal</property>
<value>oui</value>

View file

@ -1,10 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_ipnetmask" target="creole.general.adresse_netmask_eth0" transitive="True" warnings_only="True">
<param type="eole">creole.general.adresse_ip_eth0</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>
@ -20,6 +15,9 @@
<property>basic</property>
</variable>
<variable doc="Masque de sous réseau de la carte" multi="False" name="adresse_netmask_eth0" type="netmask">
<check level="error" name="valid_ip_netmask" transitive="True" type="calculation" warnings_only="True">
<param type="eole">creole.general.adresse_ip_eth0</param>
</check>
<property>mandatory</property>
<property>basic</property>
</variable>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="Général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="Général" name="general">
<property>normal</property>

View file

@ -20,7 +20,6 @@
<constraints>
<check name="valid_enum" target="enumvar">
<param>['a', 'b', 'c', 'é']</param>
<param name="checkval">False</param>
</check>
</constraints>

View file

@ -1 +1 @@
{"creole.general.mode_conteneur_actif": "non", "creole.enumfam.enumvar": "a"}
{"creole.general.mode_conteneur_actif": "non", "creole.enumfam.enumvar": "c"}

View file

@ -1,10 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_enum" target="creole.enumfam.enumvar" transitive="True" warnings_only="False">
<param type="string">['a', 'b', 'c', 'é']</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>
@ -18,10 +13,14 @@
</family>
<family doc="enumfam" name="enumfam">
<property>expert</property>
<variable doc="multi" help="bla bla bla" multi="False" name="enumvar" type="string">
<variable doc="multi" help="bla bla bla" multi="False" name="enumvar" type="choice">
<choice type="string">a</choice>
<choice type="string">b</choice>
<choice type="string">c</choice>
<choice type="string">é</choice>
<property>mandatory</property>
<property>expert</property>
<value>a</value>
<value type="string">c</value>
</variable>
</family>
<separators/>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>expert</property>

View file

@ -15,7 +15,6 @@
<constraints>
<check name="valid_enum" target="mode_conteneur_actif">
<param>['a','b','c']</param>
<param name="checkval">False</param>
</check>
</constraints>

View file

@ -1 +1 @@
{"creole.general.mode_conteneur_actif": "a"}
{"creole.general.mode_conteneur_actif": "b"}

View file

@ -1,17 +1,15 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints>
<check name="valid_enum" target="creole.general.mode_conteneur_actif" transitive="True" warnings_only="False">
<param type="string">['a','b','c']</param>
</check>
</constraints>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="string">
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">
<choice type="string">a</choice>
<choice type="string">b</choice>
<choice type="string">c</choice>
<property>mandatory</property>
<property>normal</property>
<value>a</value>
<value type="string">b</value>
</variable>
</family>
<separators/>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="Général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>hidden</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="Général" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>basic</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

View file

@ -1,6 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<constraints/>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>

Some files were not shown because too many files have changed in this diff Show more