From 80f6f4ba0391cb456ace8dad7640b2a806d89d27 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sat, 11 Feb 2017 18:11:05 +0100 Subject: [PATCH] error in external function should returns explicit error message --- test/test_option_calculation.py | 26 +++ test/test_option_validator.py | 11 +- tiramisu/autolib.py | 18 ++- tiramisu/option/baseoption.py | 3 +- translations/fr/tiramisu.po | 269 +++++++++++++++++--------------- translations/tiramisu.pot | 262 ++++++++++++++++--------------- 6 files changed, 329 insertions(+), 260 deletions(-) diff --git a/test/test_option_calculation.py b/test/test_option_calculation.py index b655bc4..c53a203 100644 --- a/test/test_option_calculation.py +++ b/test/test_option_calculation.py @@ -53,6 +53,14 @@ def is_config(config, **kwargs): return 'no' +def return_raise(*arg): + raise Exception('test') + + +def return_valueerror(*arg): + raise ValueError('test') + + def make_description_duplicates(): gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref') ## dummy 1 @@ -973,3 +981,21 @@ def test_re_set_callback(): st2 = StrOption('st2', "", multi=True) st2.impl_set_callback(return_value, {'': ((st1, False),)}) raises(ConfigError, "st2.impl_set_callback(return_value, {'': ((st1, False),)})") + + +def test_callback_raise(): + opt1 = BoolOption('opt1', 'Option 1', callback=return_raise) + opt2 = BoolOption('opt2', 'Option 2', callback=return_valueerror) + od1 = OptionDescription('od1', '', [opt1]) + od2 = OptionDescription('od2', '', [opt2]) + maconfig = OptionDescription('rootconfig', '', [od1, od2]) + cfg = Config(maconfig) + cfg.read_write() + try: + cfg.od1.opt1 + except Exception, err: + assert '"Option 1"' in str(err) + try: + cfg.od2.opt2 + except ValueError, err: + assert '"Option 2"' in str(err) diff --git a/test/test_option_validator.py b/test/test_option_validator.py index 0d35f1e..da59d2a 100644 --- a/test/test_option_validator.py +++ b/test/test_option_validator.py @@ -17,12 +17,12 @@ msg_err = _('attention, "{0}" could be an invalid {1} for "{2}", {3}') def return_true(value, param=None): if value == 'val' and param in [None, 'yes']: return True - return ValueError('test error') + raise ValueError('test error') def return_false(value, param=None): if value == 'val' and param in [None, 'yes']: - return ValueError('test error') + raise ValueError('test error') def return_val(value, param=None): @@ -31,7 +31,7 @@ def return_val(value, param=None): def return_if_val(value): if value != 'val': - return ValueError('test error') + raise ValueError('test error') def is_context(value, context): @@ -95,6 +95,11 @@ def test_validator(): cfg = Config(root) assert cfg.opt1 == 'val' raises(ValueError, "cfg.opt2 = 'val'") + try: + cfg.opt2 = 'val' + except ValueError, err: + msg = _('"{0}" is an invalid {1} for "{2}", {3}').format('val', _('string'), 'opt2', 'test error') + assert str(err) == msg def test_validator_params(): diff --git a/tiramisu/autolib.py b/tiramisu/autolib.py index 1f86e54..9d54138 100644 --- a/tiramisu/autolib.py +++ b/tiramisu/autolib.py @@ -25,7 +25,7 @@ from .setting import undefined def carry_out_calculation(option, context, callback, callback_params, - index=undefined, validate=True): + index=undefined, validate=True, is_validator=False): """a function that carries out a calculation for an option's value :param option: the option @@ -38,6 +38,7 @@ def carry_out_calculation(option, context, callback, callback_params, :type callback_params: dict :param index: if an option is multi, only calculates the nth value :type index: int + :param is_validator: to know if carry_out_calculation is used to validate a value The callback_params is a dict. Key is used to build args (if key is '') and kwargs (otherwise). Values are tuple of: @@ -216,7 +217,7 @@ def carry_out_calculation(option, context, callback, callback_params, args.append(val) else: kwargs[key] = val - return calculate(callback, args, kwargs) + return calculate(option, callback, is_validator, args, kwargs) else: # no value is multi # return a single value @@ -229,7 +230,7 @@ def carry_out_calculation(option, context, callback, callback_params, args.append(couple[0]) else: kwargs[key] = couple[0] - ret = calculate(callback, args, kwargs) + ret = calculate(option, callback, is_validator, args, kwargs) if not option.impl_is_optiondescription() and callback_params != {} and isinstance(ret, list) and \ option.impl_is_master_slaves('slave'): if not has_option and index not in [None, undefined]: @@ -243,7 +244,7 @@ def carry_out_calculation(option, context, callback, callback_params, return ret -def calculate(callback, args, kwargs): +def calculate(option, callback, is_validator, args, kwargs): """wrapper that launches the 'callback' :param callback: callback function @@ -254,4 +255,11 @@ def calculate(callback, args, kwargs): try: return callback(*args, **kwargs) except ValueError as err: - return err + if is_validator: + return err + error = err + except Exception as err: + error = err + raise error.__class__(_('function "{0}" returns "{1}" for option "{2}"').format(callback.func_name, + option.impl_get_display_name(), + str(err))) diff --git a/tiramisu/option/baseoption.py b/tiramisu/option/baseoption.py index 81f6b01..df95edc 100644 --- a/tiramisu/option/baseoption.py +++ b/tiramisu/option/baseoption.py @@ -571,7 +571,8 @@ class Option(OnlyOption): value = carry_out_calculation(current_opt, context=context, callback=validator, callback_params=validator_params_, - index=_index) + index=_index, + is_validator=True) if isinstance(value, Exception): return value diff --git a/translations/fr/tiramisu.po b/translations/fr/tiramisu.po index d1ccbd7..5406765 100644 --- a/translations/fr/tiramisu.po +++ b/translations/fr/tiramisu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiramisu\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-19 21:26+0100\n" +"POT-Creation-Date: 2017-02-11 18:05+0100\n" "PO-Revision-Date: \n" "Last-Translator: Emmanuel Garette \n" "Language-Team: Tiramisu's team \n" @@ -14,18 +14,22 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Poedit-SourceCharset: UTF-8\n" -#: tiramisu/autolib.py:172 +#: tiramisu/autolib.py:178 msgid "" "unable to carry out a calculation, option {0} has properties: {1} for: {2}" msgstr "" "impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : " "{2}" -#: tiramisu/autolib.py:237 +#: tiramisu/autolib.py:242 msgid "callback cannot return a list for a slave option ({0})" msgstr "" "un calcul ne peut pas retourner une liste pour une option esclave ({0})" +#: tiramisu/autolib.py:263 +msgid "function \"{0}\" returns \"{1}\" for option \"{2}\"" +msgstr "la fonction \"{0}\" retourne \"{1}\" pour l'option \"{2}\"" + #: tiramisu/config.py:64 msgid "descr must be an optiondescription, not {0}" msgstr "descr doit être une optiondescription pas un {0}" @@ -35,7 +39,7 @@ msgid "unknown group_type: {0}" msgstr "group_type inconnu: {0}" #: tiramisu/config.py:187 tiramisu/setting.py:335 tiramisu/value.py:54 -#: tiramisu/value.py:749 +#: tiramisu/value.py:756 msgid "the context does not exist anymore" msgstr "le context n'existe plus" @@ -98,20 +102,20 @@ msgstr "un nom doit être donné à la config avant de créer un groupconfig" msgid "config name must be uniq in groupconfig for {0}" msgstr "le nom de la config doit être unique dans un groupconfig pour {0}" -#: tiramisu/config.py:876 +#: tiramisu/config.py:878 msgid "metaconfig's children should be config, not {0}" msgstr "enfants d'une metaconfig doit être une config, pas {0}" -#: tiramisu/config.py:880 +#: tiramisu/config.py:882 msgid "child has already a metaconfig's" msgstr "enfant a déjà une metaconfig" -#: tiramisu/config.py:884 +#: tiramisu/config.py:886 msgid "all config in metaconfig must have the same optiondescription" msgstr "" "toutes les configs d'une metaconfig doivent avoir la même optiondescription" -#: tiramisu/config.py:899 +#: tiramisu/config.py:901 msgid "" "force_default, force_default_if_same or force_dont_change_value cannot be " "set with only_config" @@ -119,7 +123,7 @@ msgstr "" "force_default, force_default_if_same ou force_dont_change_value ne peuvent " "pas être spécifié avec only_config" -#: tiramisu/config.py:905 +#: tiramisu/config.py:907 msgid "force_default and force_dont_change_value cannot be set together" msgstr "" "force_default et force_dont_change_value ne peuvent pas être mis ensemble" @@ -132,19 +136,23 @@ msgstr "et" msgid "or" msgstr "ou" -#: tiramisu/error.py:34 +#: tiramisu/error.py:48 msgid " {} " msgstr " {} " -#: tiramisu/error.py:58 +#: tiramisu/error.py:81 tiramisu/setting.py:514 msgid "property" msgstr "de la propriété" -#: tiramisu/error.py:60 +#: tiramisu/error.py:83 tiramisu/setting.py:516 msgid "properties" msgstr "des propriétés" -#: tiramisu/error.py:62 tiramisu/setting.py:520 +#: tiramisu/error.py:86 +msgid "cannot access to {0} \"{1}\" because \"{2}\" has {3} {4}" +msgstr "ne peut accéder à {0} \"{1}\" parce que \"{2}\" a {3} {4}" + +#: tiramisu/error.py:92 tiramisu/setting.py:517 msgid "cannot access to {0} \"{1}\" because has {2} {3}" msgstr "ne peut accéder à l'{0} \"{1}\" a cause {2} {3}" @@ -236,118 +244,118 @@ msgstr "invalide caractère" msgid "invalid unicode or string" msgstr "invalide unicode ou string" -#: tiramisu/option/baseoption.py:510 tiramisu/option/baseoption.py:609 +#: tiramisu/option/baseoption.py:515 tiramisu/option/baseoption.py:613 msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\", {3}" msgstr "" "attention, \"{0}\" peut être une option de type {1} invalide pour \"{2}\", " "{3}" -#: tiramisu/option/baseoption.py:548 tiramisu/option/baseoption.py:661 +#: tiramisu/option/baseoption.py:551 tiramisu/option/baseoption.py:665 msgid "invalid value \"{}\", this value is already in \"{}\"" msgstr "valeur invalide \"{}\", cette valeur est déjà dans \"{}\"" -#: tiramisu/option/baseoption.py:590 tiramisu/option/baseoption.py:628 +#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632 msgid "\"{0}\" is an invalid {1} for \"{2}\", {3}" msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}, {3}" -#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632 +#: tiramisu/option/baseoption.py:598 tiramisu/option/baseoption.py:636 msgid "\"{0}\" is an invalid {1} for \"{2}\"" msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}" -#: tiramisu/option/baseoption.py:606 +#: tiramisu/option/baseoption.py:610 msgid "do_validation for {0}: error in value" msgstr "do_validation for {0} : erreur dans un la valeur" -#: tiramisu/option/baseoption.py:648 tiramisu/option/baseoption.py:666 +#: tiramisu/option/baseoption.py:652 tiramisu/option/baseoption.py:670 msgid "invalid value \"{0}\" for \"{1}\" which must be a list" msgstr "valeur invalide \"{0}\" pour \"{1}\" qui doit être une liste" -#: tiramisu/option/baseoption.py:653 +#: tiramisu/option/baseoption.py:657 msgid "invalid value \"{}\" for \"{}\" which must not be a list" msgstr "valeur invalide \"{0}\" pour \"{1}\" qui ne doit pas être une liste" -#: tiramisu/option/baseoption.py:675 +#: tiramisu/option/baseoption.py:679 msgid "invalid value \"{0}\" for \"{1}\" which must be a list of list" msgstr "valeur invalide \"{0}\" pour \"{1}\" qui doit être une liste de liste" -#: tiramisu/option/baseoption.py:728 tiramisu/option/baseoption.py:732 +#: tiramisu/option/baseoption.py:732 tiramisu/option/baseoption.py:736 msgid "cannot add consistency with submulti option" msgstr "ne peut ajouter de test de consistence a une option submulti" -#: tiramisu/option/baseoption.py:734 +#: tiramisu/option/baseoption.py:738 msgid "consistency must be set with an option" msgstr "consistency doit être configuré avec une option" -#: tiramisu/option/baseoption.py:737 tiramisu/option/baseoption.py:744 +#: tiramisu/option/baseoption.py:741 tiramisu/option/baseoption.py:748 msgid "" "almost one option in consistency is in a dynoptiondescription but not all" msgstr "" "au moins une option dans le test de consistance est dans une " "dynoptiondescription mais pas toutes" -#: tiramisu/option/baseoption.py:740 +#: tiramisu/option/baseoption.py:744 msgid "option in consistency must be in same dynoptiondescription" msgstr "" "option dans une consistency doit être dans le même dynoptiondescription" -#: tiramisu/option/baseoption.py:747 +#: tiramisu/option/baseoption.py:751 msgid "cannot add consistency with itself" msgstr "ne peut ajouter une consistency avec lui même" -#: tiramisu/option/baseoption.py:749 +#: tiramisu/option/baseoption.py:753 msgid "every options in consistency must be multi or none" msgstr "" "toutes les options d'une consistency doivent être multi ou ne pas l'être" -#: tiramisu/option/baseoption.py:766 +#: tiramisu/option/baseoption.py:770 msgid "'{0}' ({1}) cannot add consistency, option is read-only" msgstr "" "'{0}' ({1}) ne peut ajouter de consistency, l'option est en lecture seul" -#: tiramisu/option/baseoption.py:773 +#: tiramisu/option/baseoption.py:777 msgid "consistency {0} not available for this option" msgstr "consistency {0} non valable pour cette option" -#: tiramisu/option/baseoption.py:777 +#: tiramisu/option/baseoption.py:781 msgid "unknow parameter {0} in consistency" msgstr "paramètre inconnu {0} dans un test de consistance" -#: tiramisu/option/baseoption.py:841 +#: tiramisu/option/baseoption.py:845 msgid "_cons_not_equal: {} are not different" msgstr "_cons_not_equal: {} sont différents" -#: tiramisu/option/baseoption.py:844 +#: tiramisu/option/baseoption.py:848 msgid "should be different from the value of {}" msgstr "devrait être différent de la valeur de {}" -#: tiramisu/option/baseoption.py:846 +#: tiramisu/option/baseoption.py:850 msgid "must be different from the value of {}" msgstr "doit être différent de la valeur de {}" -#: tiramisu/option/baseoption.py:849 +#: tiramisu/option/baseoption.py:853 msgid "value for {} should be different" msgstr "valeur pour {} devrait être différent" -#: tiramisu/option/baseoption.py:851 +#: tiramisu/option/baseoption.py:855 msgid "value for {} must be different" msgstr "valeur pour {} doit être différent" -#: tiramisu/option/baseoption.py:910 +#: tiramisu/option/baseoption.py:914 msgid "default value not allowed if option: {0} is calculated" msgstr "la valeur par défaut n'est pas possible si l'option {0} est calculée" -#: tiramisu/option/baseoption.py:930 +#: tiramisu/option/baseoption.py:934 msgid "malformed requirements type for option: {0}, must be a dict" msgstr "" "type requirements malformé pour l'option : {0}, doit être un dictionnaire" -#: tiramisu/option/baseoption.py:936 +#: tiramisu/option/baseoption.py:940 msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}" msgstr "" "requirements mal formés pour l'option : {0} clefs inconnues {1}, doit " "seulement avoir {2}" -#: tiramisu/option/baseoption.py:944 +#: tiramisu/option/baseoption.py:948 msgid "" "malformed requirements for option: {0} require must have option, expected " "and action keys" @@ -355,33 +363,33 @@ msgstr "" "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs " "option, expected et action" -#: tiramisu/option/baseoption.py:951 +#: tiramisu/option/baseoption.py:955 msgid "" "malformed requirements for option: {0} action cannot be force_store_value" msgstr "" "requirements mal formés pour l'option : {0} action ne peut pas être " "force_store_value" -#: tiramisu/option/baseoption.py:956 +#: tiramisu/option/baseoption.py:960 msgid "malformed requirements for option: {0} inverse must be boolean" msgstr "" "requirements mal formés pour l'option : {0} inverse doit être un booléen" -#: tiramisu/option/baseoption.py:960 +#: tiramisu/option/baseoption.py:964 msgid "malformed requirements for option: {0} transitive must be boolean" msgstr "" "requirements mal formés pour l'option : {0} transitive doit être booléen" -#: tiramisu/option/baseoption.py:964 +#: tiramisu/option/baseoption.py:968 msgid "malformed requirements for option: {0} same_action must be boolean" msgstr "" "requirements mal formés pour l'option : {0} same_action doit être un booléen" -#: tiramisu/option/baseoption.py:968 +#: tiramisu/option/baseoption.py:972 msgid "malformed requirements must be an option in option {0}" msgstr "requirements mal formés doit être une option dans l'option {0}" -#: tiramisu/option/baseoption.py:971 +#: tiramisu/option/baseoption.py:975 msgid "" "malformed requirements multi option must not set as requires of non multi " "option {0}" @@ -389,245 +397,251 @@ msgstr "" "requirements mal formés une option multiple ne doit pas être spécifié comme " "pré-requis à l'option non multiple {0}" -#: tiramisu/option/baseoption.py:977 +#: tiramisu/option/baseoption.py:981 msgid "malformed requirements expected value must be valid for option {0}: {1}" msgstr "" "valeur de \"expected\" malformé, doit être valide pour l'option {0} : {1}" -#: tiramisu/option/baseoption.py:1007 +#: tiramisu/option/baseoption.py:1011 msgid "malformed symlinkoption must be an option for symlink {0}" msgstr "symlinkoption mal formé, doit être une option pour symlink {0}" -#: tiramisu/option/masterslave.py:44 +#: tiramisu/option/masterslave.py:45 msgid "master group with wrong master name for {0}" msgstr "le groupe maître avec un nom de maître érroné pour {0}" -#: tiramisu/option/masterslave.py:49 -msgid "not allowed default value for option {0} in group {1}" -msgstr "valeur de défaut non autorisée pour l'option {0} du groupe {1}" +#: tiramisu/option/masterslave.py:50 +msgid "not allowed default value for option {0} in master/slave object {1}" +msgstr "" +"valeur par défaut non autorisée pour l'option {0} dans l'objet master/slave " +"{1}" -#: tiramisu/option/masterslave.py:60 +#: tiramisu/option/masterslave.py:61 msgid "callback of master's option shall not refered a slave's ones" msgstr "" "callback d'une variable maitre ne devrait pas référencer des variables " "esclaves" -#: tiramisu/option/masterslave.py:271 +#: tiramisu/option/masterslave.py:274 msgid "invalid len for the slave: {0} which has {1} as master" msgstr "longueur invalide pour une esclave : {0} qui a {1} comme maître" -#: tiramisu/option/option.py:40 +#: tiramisu/option/option.py:41 msgid "choice" msgstr "choix" -#: tiramisu/option/option.py:54 +#: tiramisu/option/option.py:55 msgid "values is not a function, so values_params must be None" msgstr "values n'est pas une fonction, donc values_params doit être None" -#: tiramisu/option/option.py:56 +#: tiramisu/option/option.py:57 msgid "values must be a tuple or a function for {0}" msgstr "values doit être un tuple ou une fonction pour {0}" -#: tiramisu/option/option.py:93 +#: tiramisu/option/option.py:89 msgid "calculated values for {0} is not a list" msgstr "valeurs calculées for {0} n'est pas une liste" -#: tiramisu/option/option.py:104 +#: tiramisu/option/option.py:100 msgid "only {0} is allowed" msgstr "seulement {0} est autorisé" -#: tiramisu/option/option.py:107 +#: tiramisu/option/option.py:103 msgid "only {0} are allowed" msgstr "seulement {0} sont autorisés" -#: tiramisu/option/option.py:114 +#: tiramisu/option/option.py:110 msgid "boolean" msgstr "booléen" -#: tiramisu/option/option.py:124 +#: tiramisu/option/option.py:120 msgid "integer" msgstr "nombre" -#: tiramisu/option/option.py:134 +#: tiramisu/option/option.py:130 msgid "float" msgstr "nombre flottant" -#: tiramisu/option/option.py:144 +#: tiramisu/option/option.py:140 msgid "string" msgstr "texte" -#: tiramisu/option/option.py:161 +#: tiramisu/option/option.py:157 msgid "unicode string" msgstr "texte unicode" -#: tiramisu/option/option.py:171 +#: tiramisu/option/option.py:167 msgid "password" msgstr "mot de passe" -#: tiramisu/option/option.py:182 +#: tiramisu/option/option.py:178 msgid "IP" msgstr "IP" -#: tiramisu/option/option.py:224 +#: tiramisu/option/option.py:220 msgid "shouldn't in reserved class" msgstr "ne devrait pas être dans une classe réservée" -#: tiramisu/option/option.py:226 tiramisu/option/option.py:361 +#: tiramisu/option/option.py:222 tiramisu/option/option.py:357 msgid "mustn't be in reserved class" msgstr "ne doit pas être dans une classe réservée" -#: tiramisu/option/option.py:230 +#: tiramisu/option/option.py:226 msgid "should be in private class" msgstr "devrait être dans une classe privée" -#: tiramisu/option/option.py:232 +#: tiramisu/option/option.py:228 msgid "must be in private class" msgstr "doit être dans une classe privée" -#: tiramisu/option/option.py:237 tiramisu/option/option.py:434 +#: tiramisu/option/option.py:233 tiramisu/option/option.py:435 msgid "invalid len for vals" msgstr "longueur invalide pour vals" -#: tiramisu/option/option.py:243 +#: tiramisu/option/option.py:239 msgid "should be in network {0}/{1} ({2}/{3})" msgstr "devrait être dans le réseau {0}/{1} ({2}/{3})" -#: tiramisu/option/option.py:245 +#: tiramisu/option/option.py:241 msgid "must be in network {0}/{1} ({2}/{3})" msgstr "doit être dans le réseau {0}/{1} ({2}/{3})" -#: tiramisu/option/option.py:264 +#: tiramisu/option/option.py:260 msgid "port" msgstr "port" -#: tiramisu/option/option.py:288 +#: tiramisu/option/option.py:284 msgid "inconsistency in allowed range" msgstr "inconsistence dans la plage autorisée" -#: tiramisu/option/option.py:293 +#: tiramisu/option/option.py:289 msgid "max value is empty" msgstr "la valeur maximum est vide" -#: tiramisu/option/option.py:319 +#: tiramisu/option/option.py:315 msgid "range must have two values only" msgstr "un rang doit avoir deux valeurs seulement" -#: tiramisu/option/option.py:321 +#: tiramisu/option/option.py:317 msgid "first port in range must be smaller than the second one" msgstr "le premier port d'un rang doit être plus petit que le second" -#: tiramisu/option/option.py:331 +#: tiramisu/option/option.py:327 msgid "must be an integer between {0} and {1}" msgstr "doit être une nombre entre {0} et {1}" -#: tiramisu/option/option.py:339 +#: tiramisu/option/option.py:335 msgid "network address" msgstr "adresse réseau" -#: tiramisu/option/option.py:359 +#: tiramisu/option/option.py:355 msgid "shouldn't be in reserved class" msgstr "ne devrait pas être dans une classe réservée" -#: tiramisu/option/option.py:368 +#: tiramisu/option/option.py:364 msgid "netmask address" msgstr "adresse netmask" -#: tiramisu/option/option.py:399 +#: tiramisu/option/option.py:395 msgid "invalid len for opts" msgstr "longueur invalide pour opts" -#: tiramisu/option/option.py:408 +#: tiramisu/option/option.py:404 msgid "this is a network with netmask {0} ({1})" msgstr "c'est une adresse réseau avec le masque {0} ({1})" -#: tiramisu/option/option.py:410 +#: tiramisu/option/option.py:406 msgid "this is a broadcast with netmask {0} ({1})" msgstr "c'est une adresse broadcast avec le masque {0} ({1})" -#: tiramisu/option/option.py:414 +#: tiramisu/option/option.py:410 msgid "with netmask {0} ({1})" msgstr "avec le masque {0} ({1})" -#: tiramisu/option/option.py:421 +#: tiramisu/option/option.py:417 msgid "broadcast address" msgstr "adresse broadcast" -#: tiramisu/option/option.py:439 +#: tiramisu/option/option.py:440 msgid "with network {0}/{1} ({2}/{3})" msgstr "avec le réseau {0}/{1} ({2}/{3})" -#: tiramisu/option/option.py:451 +#: tiramisu/option/option.py:452 msgid "domain name" msgstr "nom de domaine" -#: tiramisu/option/option.py:459 +#: tiramisu/option/option.py:460 msgid "unknown type_ {0} for hostname" msgstr "type_ inconnu {0} pour le nom d'hôte" -#: tiramisu/option/option.py:462 +#: tiramisu/option/option.py:463 msgid "allow_ip must be a boolean" msgstr "allow_ip doit être un booléen" -#: tiramisu/option/option.py:464 +#: tiramisu/option/option.py:465 msgid "allow_without_dot must be a boolean" msgstr "allow_without_dot doit être un booléen" -#: tiramisu/option/option.py:489 +#: tiramisu/option/option.py:490 msgid "invalid length (min 1)" msgstr "longueur invalide (min 1)" -#: tiramisu/option/option.py:491 +#: tiramisu/option/option.py:492 msgid "invalid length (max {0})" msgstr "longueur invalide (max {0})" -#: tiramisu/option/option.py:506 +#: tiramisu/option/option.py:507 msgid "must not be an IP" msgstr "ne doit pas être une IP" -#: tiramisu/option/option.py:513 +#: tiramisu/option/option.py:514 msgid "must have dot" msgstr "doit avec un point" -#: tiramisu/option/option.py:515 +#: tiramisu/option/option.py:516 msgid "invalid length (max 255)" msgstr "longueur invalide (max 255)" -#: tiramisu/option/option.py:526 +#: tiramisu/option/option.py:527 msgid "some characters are uppercase" msgstr "des caractères sont en majuscule" -#: tiramisu/option/option.py:529 +#: tiramisu/option/option.py:530 msgid "some characters may cause problems" msgstr "des caractères peuvent poser problèmes" -#: tiramisu/option/option.py:550 +#: tiramisu/option/option.py:551 msgid "URL" msgstr "URL" -#: tiramisu/option/option.py:558 +#: tiramisu/option/option.py:559 msgid "must start with http:// or https://" msgstr "doit démarré avec http:// ou https://" -#: tiramisu/option/option.py:576 +#: tiramisu/option/option.py:577 msgid "port must be an between 0 and 65536" msgstr "port doit être entre 0 et 65536" -#: tiramisu/option/option.py:587 +#: tiramisu/option/option.py:588 msgid "must ends with a valid resource name" msgstr "doit finir par un nom de ressource valide" -#: tiramisu/option/option.py:608 +#: tiramisu/option/option.py:609 msgid "email address" msgstr "adresse mail" -#: tiramisu/option/option.py:615 +#: tiramisu/option/option.py:616 msgid "username" msgstr "nom d'utilisateur" -#: tiramisu/option/option.py:621 +#: tiramisu/option/option.py:622 msgid "file name" msgstr "nom de fichier" +#: tiramisu/option/option.py:627 +msgid "date" +msgstr "date" + #: tiramisu/option/optiondescription.py:73 msgid "duplicate option name: {0}" msgstr "nom de l'option dupliqué : {0}" @@ -766,15 +780,15 @@ msgid "cannot change the value for option {0} this option is frozen" msgstr "" "ne peut modifier la valeur de l'option {0} cette option n'est pas modifiable" -#: tiramisu/setting.py:541 +#: tiramisu/setting.py:539 msgid "permissive must be a tuple" msgstr "permissive doit être un tuple" -#: tiramisu/setting.py:548 tiramisu/value.py:539 +#: tiramisu/setting.py:546 tiramisu/value.py:546 msgid "invalid generic owner {0}" msgstr "invalide owner générique {0}" -#: tiramisu/setting.py:649 +#: tiramisu/setting.py:647 msgid "" "malformed requirements imbrication detected for option: '{0}' with " "requirement on: '{1}'" @@ -786,11 +800,11 @@ msgstr "" msgid "option '{0}' has requirement's property error: {1} {2}" msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}" -#: tiramisu/setting.py:695 +#: tiramisu/setting.py:694 msgid "the value of \"{0}\" is \"{1}\"" msgstr "la valeur de \"{0}\" est \"{1}\"" -#: tiramisu/setting.py:697 +#: tiramisu/setting.py:696 msgid "the value of \"{0}\" is not \"{1}\"" msgstr "la valeur de \"{0}\" n'est pas \"{1}\"" @@ -811,7 +825,7 @@ msgid "invalid default_multi value {0} for option {1}: {2}" msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}" #: tiramisu/storage/dictionary/option.py:150 -#: tiramisu/storage/dictionary/value.py:234 +#: tiramisu/storage/dictionary/value.py:217 #: tiramisu/storage/sqlalchemy/option.py:666 msgid "information's item not found: {0}" msgstr "item '{0}' dans les informations non trouvée" @@ -860,63 +874,66 @@ msgid "session already used" msgstr "session déjà utilisée" #: tiramisu/storage/dictionary/storage.py:50 -#: tiramisu/storage/dictionary/value.py:252 +#: tiramisu/storage/dictionary/value.py:235 msgid "a dictionary cannot be persistent" msgstr "un espace de stockage dictionary ne peut être persistant" -#: tiramisu/storage/dictionary/value.py:243 +#: tiramisu/storage/dictionary/value.py:226 msgid "information's item not found {0}" msgstr "l'information de l'objet ne sont pas trouvé {0}" -#: tiramisu/value.py:388 +#: tiramisu/value.py:395 msgid "you should only set value with config" msgstr "vous devez seul affecter une valeur avec un config" -#: tiramisu/value.py:500 +#: tiramisu/value.py:507 msgid "owner only avalaible for an option" msgstr "owner seulement possible pour une option" -#: tiramisu/value.py:544 +#: tiramisu/value.py:551 msgid "no value for {0} cannot change owner to {1}" msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}" -#: tiramisu/value.py:678 +#: tiramisu/value.py:685 msgid "can force cache only if cache is actived in config" msgstr "" "peut force la mise en cache seulement si le cache est activé dans la config" -#: tiramisu/value.py:715 +#: tiramisu/value.py:722 msgid "{0} is already a Multi " msgstr "{0} est déjà une Multi" -#: tiramisu/value.py:795 +#: tiramisu/value.py:802 msgid "cannot append a value on a multi option {0} which is a slave" msgstr "ne peut ajouter une valeur sur l'option multi {0} qui est une esclave" -#: tiramisu/value.py:828 +#: tiramisu/value.py:835 msgid "cannot sort multi option {0} if master or slave" msgstr "ne peut trier une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:832 +#: tiramisu/value.py:839 msgid "cmp is not permitted in python v3 or greater" msgstr "cmp n'est pas permis en python v3 ou supérieure" -#: tiramisu/value.py:841 +#: tiramisu/value.py:848 msgid "cannot reverse multi option {0} if master or slave" msgstr "ne peut inverser une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:848 +#: tiramisu/value.py:855 msgid "cannot insert multi option {0} if master or slave" msgstr "ne peut insérer une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:865 +#: tiramisu/value.py:872 msgid "cannot extend multi option {0} if master or slave" msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave" -#: tiramisu/value.py:905 +#: tiramisu/value.py:912 msgid "cannot pop a value on a multi option {0} which is a slave" msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave" +#~ msgid "not allowed default value for option {0} in group {1}" +#~ msgstr "valeur de défaut non autorisée pour l'option {0} du groupe {1}" + #~ msgid "{0}_params must have an option not a {0} for first argument" #~ msgstr "{0}_params doit avoir une option pas un {0} pour premier argument" diff --git a/translations/tiramisu.pot b/translations/tiramisu.pot index 540f4b4..6dba0b8 100644 --- a/translations/tiramisu.pot +++ b/translations/tiramisu.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2017-01-19 21:24+CET\n" +"POT-Creation-Date: 2017-02-11 18:04+CET\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,14 +15,18 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: tiramisu/autolib.py:172 +#: tiramisu/autolib.py:178 msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}" msgstr "" -#: tiramisu/autolib.py:237 +#: tiramisu/autolib.py:242 msgid "callback cannot return a list for a slave option ({0})" msgstr "" +#: tiramisu/autolib.py:263 +msgid "function \"{0}\" returns \"{1}\" for option \"{2}\"" +msgstr "" + #: tiramisu/config.py:64 msgid "descr must be an optiondescription, not {0}" msgstr "" @@ -32,7 +36,7 @@ msgid "unknown group_type: {0}" msgstr "" #: tiramisu/config.py:187 tiramisu/setting.py:335 tiramisu/value.py:54 -#: tiramisu/value.py:749 +#: tiramisu/value.py:756 msgid "the context does not exist anymore" msgstr "" @@ -92,23 +96,23 @@ msgstr "" msgid "config name must be uniq in groupconfig for {0}" msgstr "" -#: tiramisu/config.py:876 +#: tiramisu/config.py:878 msgid "metaconfig's children should be config, not {0}" msgstr "" -#: tiramisu/config.py:880 +#: tiramisu/config.py:882 msgid "child has already a metaconfig's" msgstr "" -#: tiramisu/config.py:884 +#: tiramisu/config.py:886 msgid "all config in metaconfig must have the same optiondescription" msgstr "" -#: tiramisu/config.py:899 +#: tiramisu/config.py:901 msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config" msgstr "" -#: tiramisu/config.py:905 +#: tiramisu/config.py:907 msgid "force_default and force_dont_change_value cannot be set together" msgstr "" @@ -120,19 +124,23 @@ msgstr "" msgid "or" msgstr "" -#: tiramisu/error.py:34 +#: tiramisu/error.py:48 msgid " {} " msgstr "" -#: tiramisu/error.py:58 +#: tiramisu/error.py:81 tiramisu/setting.py:514 msgid "property" msgstr "" -#: tiramisu/error.py:60 +#: tiramisu/error.py:83 tiramisu/setting.py:516 msgid "properties" msgstr "" -#: tiramisu/error.py:62 tiramisu/setting.py:520 +#: tiramisu/error.py:86 +msgid "cannot access to {0} \"{1}\" because \"{2}\" has {3} {4}" +msgstr "" + +#: tiramisu/error.py:92 tiramisu/setting.py:517 msgid "cannot access to {0} \"{1}\" because has {2} {3}" msgstr "" @@ -216,370 +224,374 @@ msgstr "" msgid "invalid unicode or string" msgstr "" -#: tiramisu/option/baseoption.py:510 tiramisu/option/baseoption.py:609 +#: tiramisu/option/baseoption.py:515 tiramisu/option/baseoption.py:613 msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\", {3}" msgstr "" -#: tiramisu/option/baseoption.py:548 tiramisu/option/baseoption.py:661 +#: tiramisu/option/baseoption.py:551 tiramisu/option/baseoption.py:665 msgid "invalid value \"{}\", this value is already in \"{}\"" msgstr "" -#: tiramisu/option/baseoption.py:590 tiramisu/option/baseoption.py:628 +#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632 msgid "\"{0}\" is an invalid {1} for \"{2}\", {3}" msgstr "" -#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632 +#: tiramisu/option/baseoption.py:598 tiramisu/option/baseoption.py:636 msgid "\"{0}\" is an invalid {1} for \"{2}\"" msgstr "" -#: tiramisu/option/baseoption.py:606 +#: tiramisu/option/baseoption.py:610 msgid "do_validation for {0}: error in value" msgstr "" -#: tiramisu/option/baseoption.py:648 tiramisu/option/baseoption.py:666 +#: tiramisu/option/baseoption.py:652 tiramisu/option/baseoption.py:670 msgid "invalid value \"{0}\" for \"{1}\" which must be a list" msgstr "" -#: tiramisu/option/baseoption.py:653 +#: tiramisu/option/baseoption.py:657 msgid "invalid value \"{}\" for \"{}\" which must not be a list" msgstr "" -#: tiramisu/option/baseoption.py:675 +#: tiramisu/option/baseoption.py:679 msgid "invalid value \"{0}\" for \"{1}\" which must be a list of list" msgstr "" -#: tiramisu/option/baseoption.py:728 tiramisu/option/baseoption.py:732 +#: tiramisu/option/baseoption.py:732 tiramisu/option/baseoption.py:736 msgid "cannot add consistency with submulti option" msgstr "" -#: tiramisu/option/baseoption.py:734 +#: tiramisu/option/baseoption.py:738 msgid "consistency must be set with an option" msgstr "" -#: tiramisu/option/baseoption.py:737 tiramisu/option/baseoption.py:744 +#: tiramisu/option/baseoption.py:741 tiramisu/option/baseoption.py:748 msgid "almost one option in consistency is in a dynoptiondescription but not all" msgstr "" -#: tiramisu/option/baseoption.py:740 +#: tiramisu/option/baseoption.py:744 msgid "option in consistency must be in same dynoptiondescription" msgstr "" -#: tiramisu/option/baseoption.py:747 +#: tiramisu/option/baseoption.py:751 msgid "cannot add consistency with itself" msgstr "" -#: tiramisu/option/baseoption.py:749 +#: tiramisu/option/baseoption.py:753 msgid "every options in consistency must be multi or none" msgstr "" -#: tiramisu/option/baseoption.py:766 +#: tiramisu/option/baseoption.py:770 msgid "'{0}' ({1}) cannot add consistency, option is read-only" msgstr "" -#: tiramisu/option/baseoption.py:773 +#: tiramisu/option/baseoption.py:777 msgid "consistency {0} not available for this option" msgstr "" -#: tiramisu/option/baseoption.py:777 +#: tiramisu/option/baseoption.py:781 msgid "unknow parameter {0} in consistency" msgstr "" -#: tiramisu/option/baseoption.py:841 +#: tiramisu/option/baseoption.py:845 msgid "_cons_not_equal: {} are not different" msgstr "" -#: tiramisu/option/baseoption.py:844 +#: tiramisu/option/baseoption.py:848 msgid "should be different from the value of {}" msgstr "" -#: tiramisu/option/baseoption.py:846 +#: tiramisu/option/baseoption.py:850 msgid "must be different from the value of {}" msgstr "" -#: tiramisu/option/baseoption.py:849 +#: tiramisu/option/baseoption.py:853 msgid "value for {} should be different" msgstr "" -#: tiramisu/option/baseoption.py:851 +#: tiramisu/option/baseoption.py:855 msgid "value for {} must be different" msgstr "" -#: tiramisu/option/baseoption.py:910 +#: tiramisu/option/baseoption.py:914 msgid "default value not allowed if option: {0} is calculated" msgstr "" -#: tiramisu/option/baseoption.py:930 +#: tiramisu/option/baseoption.py:934 msgid "malformed requirements type for option: {0}, must be a dict" msgstr "" -#: tiramisu/option/baseoption.py:936 +#: tiramisu/option/baseoption.py:940 msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}" msgstr "" -#: tiramisu/option/baseoption.py:944 +#: tiramisu/option/baseoption.py:948 msgid "malformed requirements for option: {0} require must have option, expected and action keys" msgstr "" -#: tiramisu/option/baseoption.py:951 +#: tiramisu/option/baseoption.py:955 msgid "malformed requirements for option: {0} action cannot be force_store_value" msgstr "" -#: tiramisu/option/baseoption.py:956 +#: tiramisu/option/baseoption.py:960 msgid "malformed requirements for option: {0} inverse must be boolean" msgstr "" -#: tiramisu/option/baseoption.py:960 +#: tiramisu/option/baseoption.py:964 msgid "malformed requirements for option: {0} transitive must be boolean" msgstr "" -#: tiramisu/option/baseoption.py:964 +#: tiramisu/option/baseoption.py:968 msgid "malformed requirements for option: {0} same_action must be boolean" msgstr "" -#: tiramisu/option/baseoption.py:968 +#: tiramisu/option/baseoption.py:972 msgid "malformed requirements must be an option in option {0}" msgstr "" -#: tiramisu/option/baseoption.py:971 +#: tiramisu/option/baseoption.py:975 msgid "malformed requirements multi option must not set as requires of non multi option {0}" msgstr "" -#: tiramisu/option/baseoption.py:977 +#: tiramisu/option/baseoption.py:981 msgid "malformed requirements expected value must be valid for option {0}: {1}" msgstr "" -#: tiramisu/option/baseoption.py:1007 +#: tiramisu/option/baseoption.py:1011 msgid "malformed symlinkoption must be an option for symlink {0}" msgstr "" -#: tiramisu/option/masterslave.py:44 +#: tiramisu/option/masterslave.py:45 msgid "master group with wrong master name for {0}" msgstr "" -#: tiramisu/option/masterslave.py:49 -msgid "not allowed default value for option {0} in group {1}" +#: tiramisu/option/masterslave.py:50 +msgid "not allowed default value for option {0} in master/slave object {1}" msgstr "" -#: tiramisu/option/masterslave.py:60 +#: tiramisu/option/masterslave.py:61 msgid "callback of master's option shall not refered a slave's ones" msgstr "" -#: tiramisu/option/masterslave.py:271 +#: tiramisu/option/masterslave.py:274 msgid "invalid len for the slave: {0} which has {1} as master" msgstr "" -#: tiramisu/option/option.py:40 +#: tiramisu/option/option.py:41 msgid "choice" msgstr "" -#: tiramisu/option/option.py:54 +#: tiramisu/option/option.py:55 msgid "values is not a function, so values_params must be None" msgstr "" -#: tiramisu/option/option.py:56 +#: tiramisu/option/option.py:57 msgid "values must be a tuple or a function for {0}" msgstr "" -#: tiramisu/option/option.py:93 +#: tiramisu/option/option.py:89 msgid "calculated values for {0} is not a list" msgstr "" -#: tiramisu/option/option.py:104 +#: tiramisu/option/option.py:100 msgid "only {0} is allowed" msgstr "" -#: tiramisu/option/option.py:107 +#: tiramisu/option/option.py:103 msgid "only {0} are allowed" msgstr "" -#: tiramisu/option/option.py:114 +#: tiramisu/option/option.py:110 msgid "boolean" msgstr "" -#: tiramisu/option/option.py:124 +#: tiramisu/option/option.py:120 msgid "integer" msgstr "" -#: tiramisu/option/option.py:134 +#: tiramisu/option/option.py:130 msgid "float" msgstr "" -#: tiramisu/option/option.py:144 +#: tiramisu/option/option.py:140 msgid "string" msgstr "" -#: tiramisu/option/option.py:161 +#: tiramisu/option/option.py:157 msgid "unicode string" msgstr "" -#: tiramisu/option/option.py:171 +#: tiramisu/option/option.py:167 msgid "password" msgstr "" -#: tiramisu/option/option.py:182 +#: tiramisu/option/option.py:178 msgid "IP" msgstr "" -#: tiramisu/option/option.py:224 +#: tiramisu/option/option.py:220 msgid "shouldn't in reserved class" msgstr "" -#: tiramisu/option/option.py:226 tiramisu/option/option.py:361 +#: tiramisu/option/option.py:222 tiramisu/option/option.py:357 msgid "mustn't be in reserved class" msgstr "" -#: tiramisu/option/option.py:230 +#: tiramisu/option/option.py:226 msgid "should be in private class" msgstr "" -#: tiramisu/option/option.py:232 +#: tiramisu/option/option.py:228 msgid "must be in private class" msgstr "" -#: tiramisu/option/option.py:237 tiramisu/option/option.py:434 +#: tiramisu/option/option.py:233 tiramisu/option/option.py:435 msgid "invalid len for vals" msgstr "" -#: tiramisu/option/option.py:243 +#: tiramisu/option/option.py:239 msgid "should be in network {0}/{1} ({2}/{3})" msgstr "" -#: tiramisu/option/option.py:245 +#: tiramisu/option/option.py:241 msgid "must be in network {0}/{1} ({2}/{3})" msgstr "" -#: tiramisu/option/option.py:264 +#: tiramisu/option/option.py:260 msgid "port" msgstr "" -#: tiramisu/option/option.py:288 +#: tiramisu/option/option.py:284 msgid "inconsistency in allowed range" msgstr "" -#: tiramisu/option/option.py:293 +#: tiramisu/option/option.py:289 msgid "max value is empty" msgstr "" -#: tiramisu/option/option.py:319 +#: tiramisu/option/option.py:315 msgid "range must have two values only" msgstr "" -#: tiramisu/option/option.py:321 +#: tiramisu/option/option.py:317 msgid "first port in range must be smaller than the second one" msgstr "" -#: tiramisu/option/option.py:331 +#: tiramisu/option/option.py:327 msgid "must be an integer between {0} and {1}" msgstr "" -#: tiramisu/option/option.py:339 +#: tiramisu/option/option.py:335 msgid "network address" msgstr "" -#: tiramisu/option/option.py:359 +#: tiramisu/option/option.py:355 msgid "shouldn't be in reserved class" msgstr "" -#: tiramisu/option/option.py:368 +#: tiramisu/option/option.py:364 msgid "netmask address" msgstr "" -#: tiramisu/option/option.py:399 +#: tiramisu/option/option.py:395 msgid "invalid len for opts" msgstr "" -#: tiramisu/option/option.py:408 +#: tiramisu/option/option.py:404 msgid "this is a network with netmask {0} ({1})" msgstr "" -#: tiramisu/option/option.py:410 +#: tiramisu/option/option.py:406 msgid "this is a broadcast with netmask {0} ({1})" msgstr "" -#: tiramisu/option/option.py:414 +#: tiramisu/option/option.py:410 msgid "with netmask {0} ({1})" msgstr "" -#: tiramisu/option/option.py:421 +#: tiramisu/option/option.py:417 msgid "broadcast address" msgstr "" -#: tiramisu/option/option.py:439 +#: tiramisu/option/option.py:440 msgid "with network {0}/{1} ({2}/{3})" msgstr "" -#: tiramisu/option/option.py:451 +#: tiramisu/option/option.py:452 msgid "domain name" msgstr "" -#: tiramisu/option/option.py:459 +#: tiramisu/option/option.py:460 msgid "unknown type_ {0} for hostname" msgstr "" -#: tiramisu/option/option.py:462 +#: tiramisu/option/option.py:463 msgid "allow_ip must be a boolean" msgstr "" -#: tiramisu/option/option.py:464 +#: tiramisu/option/option.py:465 msgid "allow_without_dot must be a boolean" msgstr "" -#: tiramisu/option/option.py:489 +#: tiramisu/option/option.py:490 msgid "invalid length (min 1)" msgstr "" -#: tiramisu/option/option.py:491 +#: tiramisu/option/option.py:492 msgid "invalid length (max {0})" msgstr "" -#: tiramisu/option/option.py:506 +#: tiramisu/option/option.py:507 msgid "must not be an IP" msgstr "" -#: tiramisu/option/option.py:513 +#: tiramisu/option/option.py:514 msgid "must have dot" msgstr "" -#: tiramisu/option/option.py:515 +#: tiramisu/option/option.py:516 msgid "invalid length (max 255)" msgstr "" -#: tiramisu/option/option.py:526 +#: tiramisu/option/option.py:527 msgid "some characters are uppercase" msgstr "" -#: tiramisu/option/option.py:529 +#: tiramisu/option/option.py:530 msgid "some characters may cause problems" msgstr "" -#: tiramisu/option/option.py:550 +#: tiramisu/option/option.py:551 msgid "URL" msgstr "" -#: tiramisu/option/option.py:558 +#: tiramisu/option/option.py:559 msgid "must start with http:// or https://" msgstr "" -#: tiramisu/option/option.py:576 +#: tiramisu/option/option.py:577 msgid "port must be an between 0 and 65536" msgstr "" -#: tiramisu/option/option.py:587 +#: tiramisu/option/option.py:588 msgid "must ends with a valid resource name" msgstr "" -#: tiramisu/option/option.py:608 +#: tiramisu/option/option.py:609 msgid "email address" msgstr "" -#: tiramisu/option/option.py:615 +#: tiramisu/option/option.py:616 msgid "username" msgstr "" -#: tiramisu/option/option.py:621 +#: tiramisu/option/option.py:622 msgid "file name" msgstr "" +#: tiramisu/option/option.py:627 +msgid "date" +msgstr "" + #: tiramisu/option/optiondescription.py:73 msgid "duplicate option name: {0}" msgstr "" @@ -701,15 +713,15 @@ msgstr "" msgid "cannot change the value for option {0} this option is frozen" msgstr "" -#: tiramisu/setting.py:541 +#: tiramisu/setting.py:539 msgid "permissive must be a tuple" msgstr "" -#: tiramisu/setting.py:548 tiramisu/value.py:539 +#: tiramisu/setting.py:546 tiramisu/value.py:546 msgid "invalid generic owner {0}" msgstr "" -#: tiramisu/setting.py:649 +#: tiramisu/setting.py:647 msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'" msgstr "" @@ -717,11 +729,11 @@ msgstr "" msgid "option '{0}' has requirement's property error: {1} {2}" msgstr "" -#: tiramisu/setting.py:695 +#: tiramisu/setting.py:694 msgid "the value of \"{0}\" is \"{1}\"" msgstr "" -#: tiramisu/setting.py:697 +#: tiramisu/setting.py:696 msgid "the value of \"{0}\" is not \"{1}\"" msgstr "" @@ -742,7 +754,7 @@ msgid "invalid default_multi value {0} for option {1}: {2}" msgstr "" #: tiramisu/storage/dictionary/option.py:150 -#: tiramisu/storage/dictionary/value.py:234 +#: tiramisu/storage/dictionary/value.py:217 #: tiramisu/storage/sqlalchemy/option.py:666 msgid "information's item not found: {0}" msgstr "" @@ -789,59 +801,59 @@ msgid "session already used" msgstr "" #: tiramisu/storage/dictionary/storage.py:50 -#: tiramisu/storage/dictionary/value.py:252 +#: tiramisu/storage/dictionary/value.py:235 msgid "a dictionary cannot be persistent" msgstr "" -#: tiramisu/storage/dictionary/value.py:243 +#: tiramisu/storage/dictionary/value.py:226 msgid "information's item not found {0}" msgstr "" -#: tiramisu/value.py:388 +#: tiramisu/value.py:395 msgid "you should only set value with config" msgstr "" -#: tiramisu/value.py:500 +#: tiramisu/value.py:507 msgid "owner only avalaible for an option" msgstr "" -#: tiramisu/value.py:544 +#: tiramisu/value.py:551 msgid "no value for {0} cannot change owner to {1}" msgstr "" -#: tiramisu/value.py:678 +#: tiramisu/value.py:685 msgid "can force cache only if cache is actived in config" msgstr "" -#: tiramisu/value.py:715 +#: tiramisu/value.py:722 msgid "{0} is already a Multi " msgstr "" -#: tiramisu/value.py:795 +#: tiramisu/value.py:802 msgid "cannot append a value on a multi option {0} which is a slave" msgstr "" -#: tiramisu/value.py:828 +#: tiramisu/value.py:835 msgid "cannot sort multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:832 +#: tiramisu/value.py:839 msgid "cmp is not permitted in python v3 or greater" msgstr "" -#: tiramisu/value.py:841 +#: tiramisu/value.py:848 msgid "cannot reverse multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:848 +#: tiramisu/value.py:855 msgid "cannot insert multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:865 +#: tiramisu/value.py:872 msgid "cannot extend multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:905 +#: tiramisu/value.py:912 msgid "cannot pop a value on a multi option {0} which is a slave" msgstr ""