From 5b3d57812e97332c549b8a29e28866b5f92f2d10 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sat, 3 Oct 2020 22:10:32 +0200 Subject: [PATCH] add OptionInformation support --- src/rougail/tiramisureflector.py | 2 ++ tests/eosfunc/test.py | 3 ++- .../01auto_base/makedict/base.json | 2 +- .../01fill_autofreeze/makedict/base.json | 2 +- .../01fill_autosave/makedict/base.json | 2 +- .../01fill_base/makedict/base.json | 2 +- .../01fill_baseaccent/makedict/base.json | 2 +- .../01fill_information/00-base.xml | 23 +++++++++++++++++++ .../01fill_information/__init__.py | 0 .../01fill_information/makedict/base.json | 1 + .../01fill_information/tiramisu/__init__.py | 0 .../01fill_information/tiramisu/base.py | 8 +++++++ .../01fill_mandatory/00-base.xml | 2 +- .../01fill_mandatory/makedict/base.json | 2 +- .../01fill_mandatory/tiramisu/base.py | 2 +- .../01fill_number/makedict/base.json | 2 +- .../01fill_optional/makedict/base.json | 2 +- .../10autosave_hidden/makedict/base.json | 2 +- .../makedict/base.json | 2 +- .../10load_frozenifin_auto/makedict/base.json | 2 +- .../10valid_enum_variable/makedict/base.json | 2 +- .../20family_dynamic_calc/makedict/base.json | 2 +- .../makedict/base.json | 2 +- .../makedict/base.json | 2 +- .../makedict/base.json | 2 +- .../60action_external/makedict/base.json | 2 +- tests/test_2_makedict.py | 1 + 27 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 tests/flattener_dicos/01fill_information/00-base.xml create mode 100644 tests/flattener_dicos/01fill_information/__init__.py create mode 100644 tests/flattener_dicos/01fill_information/makedict/base.json create mode 100644 tests/flattener_dicos/01fill_information/tiramisu/__init__.py create mode 100644 tests/flattener_dicos/01fill_information/tiramisu/base.py diff --git a/src/rougail/tiramisureflector.py b/src/rougail/tiramisureflector.py index 025a0dea..d43cb700 100644 --- a/src/rougail/tiramisureflector.py +++ b/src/rougail/tiramisureflector.py @@ -422,6 +422,8 @@ class Variable(Common): if hasattr(param, 'suffix'): value['suffix'] = param.suffix return self.build_param(value) + elif param.type == 'information': + return f'ParamInformation("{param.text}")' raise LoaderError(_('unknown param type {}').format(param.type)) def populate_value(self, diff --git a/tests/eosfunc/test.py b/tests/eosfunc/test.py index 887c9a8d..d258ac45 100644 --- a/tests/eosfunc/test.py +++ b/tests/eosfunc/test.py @@ -1,7 +1,8 @@ from tiramisu import valid_not_equal, valid_ip_netmask, calc_value def calc_val(*args, **kwargs): - pass + if len(args) > 0: + return args[0] def concat(*args, **kwargs): diff --git a/tests/flattener_dicos/01auto_base/makedict/base.json b/tests/flattener_dicos/01auto_base/makedict/base.json index 86ba9458..b58d6e7c 100644 --- a/tests/flattener_dicos/01auto_base/makedict/base.json +++ b/tests/flattener_dicos/01auto_base/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/01fill_autofreeze/makedict/base.json b/tests/flattener_dicos/01fill_autofreeze/makedict/base.json index 47b2052a..2dac1070 100644 --- a/tests/flattener_dicos/01fill_autofreeze/makedict/base.json +++ b/tests/flattener_dicos/01fill_autofreeze/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non", "rougail.general.module_instancie": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non", "rougail.general.module_instancie": "non"} diff --git a/tests/flattener_dicos/01fill_autosave/makedict/base.json b/tests/flattener_dicos/01fill_autosave/makedict/base.json index 86ba9458..b58d6e7c 100644 --- a/tests/flattener_dicos/01fill_autosave/makedict/base.json +++ b/tests/flattener_dicos/01fill_autosave/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/01fill_base/makedict/base.json b/tests/flattener_dicos/01fill_base/makedict/base.json index 86ba9458..b58d6e7c 100644 --- a/tests/flattener_dicos/01fill_base/makedict/base.json +++ b/tests/flattener_dicos/01fill_base/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/01fill_baseaccent/makedict/base.json b/tests/flattener_dicos/01fill_baseaccent/makedict/base.json index 86ba9458..b58d6e7c 100644 --- a/tests/flattener_dicos/01fill_baseaccent/makedict/base.json +++ b/tests/flattener_dicos/01fill_baseaccent/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/01fill_information/00-base.xml b/tests/flattener_dicos/01fill_information/00-base.xml new file mode 100644 index 00000000..c47a2766 --- /dev/null +++ b/tests/flattener_dicos/01fill_information/00-base.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + info + + + + + + + diff --git a/tests/flattener_dicos/01fill_information/__init__.py b/tests/flattener_dicos/01fill_information/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/flattener_dicos/01fill_information/makedict/base.json b/tests/flattener_dicos/01fill_information/makedict/base.json new file mode 100644 index 00000000..5f62f349 --- /dev/null +++ b/tests/flattener_dicos/01fill_information/makedict/base.json @@ -0,0 +1 @@ +{"rougail.general.mode_conteneur_actif": "value"} diff --git a/tests/flattener_dicos/01fill_information/tiramisu/__init__.py b/tests/flattener_dicos/01fill_information/tiramisu/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/flattener_dicos/01fill_information/tiramisu/base.py b/tests/flattener_dicos/01fill_information/tiramisu/base.py new file mode 100644 index 00000000..4630e4f2 --- /dev/null +++ b/tests/flattener_dicos/01fill_information/tiramisu/base.py @@ -0,0 +1,8 @@ +from tiramisu import * +from rougail.tiramisu import ConvertDynOptionDescription +import imp +func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py') +option_3 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamInformation("info")), kwargs={}))) +option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3]) +option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2]) +option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1]) diff --git a/tests/flattener_dicos/01fill_mandatory/00-base.xml b/tests/flattener_dicos/01fill_mandatory/00-base.xml index 36dac3d8..e6c39d4d 100644 --- a/tests/flattener_dicos/01fill_mandatory/00-base.xml +++ b/tests/flattener_dicos/01fill_mandatory/00-base.xml @@ -5,7 +5,7 @@ - + non diff --git a/tests/flattener_dicos/01fill_mandatory/makedict/base.json b/tests/flattener_dicos/01fill_mandatory/makedict/base.json index 86ba9458..b58d6e7c 100644 --- a/tests/flattener_dicos/01fill_mandatory/makedict/base.json +++ b/tests/flattener_dicos/01fill_mandatory/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py b/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py index ca545b2f..0d3772e3 100644 --- a/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py +++ b/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py @@ -3,7 +3,7 @@ from rougail.tiramisu import ConvertDynOptionDescription import imp func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py') option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non')) -option_3 = DomainnameOption(type='domainname', allow_ip=False, properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}))) +option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non')) option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4]) option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2]) option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1]) diff --git a/tests/flattener_dicos/01fill_number/makedict/base.json b/tests/flattener_dicos/01fill_number/makedict/base.json index 86ba9458..87a5f7d7 100644 --- a/tests/flattener_dicos/01fill_number/makedict/base.json +++ b/tests/flattener_dicos/01fill_number/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": 3, "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/01fill_optional/makedict/base.json b/tests/flattener_dicos/01fill_optional/makedict/base.json index 86ba9458..b58d6e7c 100644 --- a/tests/flattener_dicos/01fill_optional/makedict/base.json +++ b/tests/flattener_dicos/01fill_optional/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif1": "non"} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif1": "non"} diff --git a/tests/flattener_dicos/10autosave_hidden/makedict/base.json b/tests/flattener_dicos/10autosave_hidden/makedict/base.json index 6f9b1c86..2a8f28f8 100644 --- a/tests/flattener_dicos/10autosave_hidden/makedict/base.json +++ b/tests/flattener_dicos/10autosave_hidden/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": "non", "rougail.general.autosavevar": null} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.autosavevar": "oui"} diff --git a/tests/flattener_dicos/10autosave_hidden_frozenifin/makedict/base.json b/tests/flattener_dicos/10autosave_hidden_frozenifin/makedict/base.json index 6f9b1c86..2a8f28f8 100644 --- a/tests/flattener_dicos/10autosave_hidden_frozenifin/makedict/base.json +++ b/tests/flattener_dicos/10autosave_hidden_frozenifin/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": "non", "rougail.general.autosavevar": null} +{"rougail.general.mode_conteneur_actif": "non", "rougail.general.autosavevar": "oui"} diff --git a/tests/flattener_dicos/10load_frozenifin_auto/makedict/base.json b/tests/flattener_dicos/10load_frozenifin_auto/makedict/base.json index 67a2eb8a..25db64a2 100644 --- a/tests/flattener_dicos/10load_frozenifin_auto/makedict/base.json +++ b/tests/flattener_dicos/10load_frozenifin_auto/makedict/base.json @@ -1 +1 @@ -{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": null, "rougail.general.mode_conteneur_actif2": "non"} +{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non"} diff --git a/tests/flattener_dicos/10valid_enum_variable/makedict/base.json b/tests/flattener_dicos/10valid_enum_variable/makedict/base.json index 44c619c4..872cd683 100644 --- a/tests/flattener_dicos/10valid_enum_variable/makedict/base.json +++ b/tests/flattener_dicos/10valid_enum_variable/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": "non", "rougail.enumfam.enumvar": "test", "rougail.enumfam.varmulti": ["test"]} +{"rougail.general.mode_conteneur_actif": "non", "rougail.enumfam.varmulti": ["test"], "rougail.enumfam.enumvar": "test"} diff --git a/tests/flattener_dicos/20family_dynamic_calc/makedict/base.json b/tests/flattener_dicos/20family_dynamic_calc/makedict/base.json index 82b6fff8..c26e3740 100644 --- a/tests/flattener_dicos/20family_dynamic_calc/makedict/base.json +++ b/tests/flattener_dicos/20family_dynamic_calc/makedict/base.json @@ -1 +1 @@ -{"rougail.general.varname": ["val1", "val2"], "rougail.dynval1.vardynval1": "val", "rougail.dynval2.vardynval2": "val", "rougail.new.newvar": null} +{"rougail.general.varname": ["val1", "val2"], "rougail.dynval1.vardynval1": "val", "rougail.dynval2.vardynval2": "val", "rougail.new.newvar": "val"} diff --git a/tests/flattener_dicos/20family_dynamic_number/makedict/base.json b/tests/flattener_dicos/20family_dynamic_number/makedict/base.json index 87a929d7..ceae633c 100644 --- a/tests/flattener_dicos/20family_dynamic_number/makedict/base.json +++ b/tests/flattener_dicos/20family_dynamic_number/makedict/base.json @@ -1 +1 @@ -{"rougail.general.varname": [1, 2], "rougail.dyn1.vardyn1": "val", "rougail.dyn2.vardyn2": "val", "rougail.new.newvar": null} +{"rougail.general.varname": [1, 2], "rougail.dyn1.vardyn1": "val", "rougail.dyn2.vardyn2": "val", "rougail.new.newvar": "val"} diff --git a/tests/flattener_dicos/30mandatory_withoutvaluecalc/makedict/base.json b/tests/flattener_dicos/30mandatory_withoutvaluecalc/makedict/base.json index dc0cf526..5f62f349 100644 --- a/tests/flattener_dicos/30mandatory_withoutvaluecalc/makedict/base.json +++ b/tests/flattener_dicos/30mandatory_withoutvaluecalc/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null} +{"rougail.general.mode_conteneur_actif": "value"} diff --git a/tests/flattener_dicos/30mandatory_withvaluecalc/makedict/base.json b/tests/flattener_dicos/30mandatory_withvaluecalc/makedict/base.json index dc0cf526..5f62f349 100644 --- a/tests/flattener_dicos/30mandatory_withvaluecalc/makedict/base.json +++ b/tests/flattener_dicos/30mandatory_withvaluecalc/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": null} +{"rougail.general.mode_conteneur_actif": "value"} diff --git a/tests/flattener_dicos/60action_external/makedict/base.json b/tests/flattener_dicos/60action_external/makedict/base.json index c2f531b4..0b1ab7e2 100644 --- a/tests/flattener_dicos/60action_external/makedict/base.json +++ b/tests/flattener_dicos/60action_external/makedict/base.json @@ -1 +1 @@ -{"rougail.general.mode_conteneur_actif": "non", "extra.test.delay": 0, "extra.test.calc_url": null} +{"rougail.general.mode_conteneur_actif": "non", "extra.test.delay": 0, "extra.test.calc_url": "http://localhost/"} diff --git a/tests/test_2_makedict.py b/tests/test_2_makedict.py index 272a112f..ab36aa9b 100644 --- a/tests/test_2_makedict.py +++ b/tests/test_2_makedict.py @@ -48,6 +48,7 @@ async def launch_flattener(test_dir): config = await Config(mod.option_0) await config.property.read_only() await config.property.pop('mandatory') + await config.information.set('info', 'value') config_dict = await config.value.dict() if config_dict: if not isdir(makedict_dir):