From 85297d8c4d3000d611c7bdc7ea7dc0a0c6d50e0b Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sun, 7 Dec 2014 14:51:51 +0100 Subject: [PATCH] test uppercase character before valid domain name for better error message --- ChangeLog | 2 + test/test_config_domain.py | 24 +++ tiramisu/option/option.py | 5 +- translations/fr/tiramisu.po | 297 ++++++++++++++++++++---------------- translations/tiramisu.pot | 287 +++++++++++++++++++--------------- 5 files changed, 360 insertions(+), 255 deletions(-) diff --git a/ChangeLog b/ChangeLog index bbb1a92..8217a81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ Sun Dec 7 14:37:32 2014 +0200 Emmanuel Garette * mandatory master/slave's consistency with default value as slave + * test uppercase character before valid domain name for better error + message Mon Dec 1 22:58:13 2014 +0200 Emmanuel Garette * propertyerror are transitive in consistency, now it's possible to set diff --git a/test/test_config_domain.py b/test/test_config_domain.py index 85f48b9..d31ebe5 100644 --- a/test/test_config_domain.py +++ b/test/test_config_domain.py @@ -5,6 +5,7 @@ from py.test import raises from tiramisu.config import Config from tiramisu.option import DomainnameOption, EmailOption, URLOption, OptionDescription from tiramisu.error import ValueWarning +from tiramisu.i18n import _ def test_domainname(): @@ -36,6 +37,29 @@ def test_domainname(): c.g = '192.168.1.29' +def test_domainname_upper(): + d = DomainnameOption('d', '') + od = OptionDescription('a', '', [d]) + c = Config(od) + c.read_write() + c.d = 'toto.com' + msg = _('some characters are uppercase') + has_error = False + try: + c.d = 'TOTO.COM' + except ValueError, err: + assert msg in unicode(err) + has_error = True + assert has_error is True + has_error = False + try: + c.d = 'toTo.com' + except ValueError, err: + assert msg in unicode(err) + has_error = True + assert has_error is True + + def test_domainname_warning(): d = DomainnameOption('d', '', warnings_only=True) f = DomainnameOption('f', '', allow_without_dot=True, warnings_only=True) diff --git a/tiramisu/option/option.py b/tiramisu/option/option.py index 3974683..ccbee14 100644 --- a/tiramisu/option/option.py +++ b/tiramisu/option/option.py @@ -409,6 +409,7 @@ class DomainnameOption(Option): extra['_allow_ip'] = allow_ip extra['_allow_without_dot'] = allow_without_dot extra['_domain_re'] = re.compile(r'^[a-z\d][a-z\d\-]*$') + extra['_has_upper'] = re.compile('[A-Z]') super(DomainnameOption, self).__init__(name, doc, default=default, default_multi=default_multi, @@ -452,9 +453,11 @@ class DomainnameOption(Option): def _second_level_validation(self, value, warnings_only): def _valid_char(val): + if self._get_extra('_has_upper').search(val): + raise ValueError(_('some characters are uppercase')) if not self._get_extra('_domain_re').search(val): if warnings_only: - raise ValueError(_('same characters may cause problems')) + raise ValueError(_('some characters may cause problems')) else: raise ValueError(_('invalid domainname')) #not for IP diff --git a/translations/fr/tiramisu.po b/translations/fr/tiramisu.po index 660bee4..c330ceb 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: 2014-10-26 09:35+CET\n" +"POT-Creation-Date: 2014-12-07 14:44+CET\n" "PO-Revision-Date: \n" "Last-Translator: Emmanuel Garette \n" "Language-Team: Tiramisu's team \n" @@ -21,73 +21,104 @@ msgstr "" "impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : " "{2}" -#: tiramisu/config.py:58 +#: tiramisu/config.py:59 msgid "descr must be an optiondescription, not {0}" msgstr "descr doit être une optiondescription pas un {0}" -#: tiramisu/config.py:137 +#: tiramisu/config.py:139 msgid "unknown group_type: {0}" msgstr "group_type inconnu: {0}" -#: tiramisu/config.py:176 tiramisu/setting.py:321 tiramisu/value.py:54 -#: tiramisu/value.py:555 +#: tiramisu/config.py:178 tiramisu/setting.py:320 tiramisu/value.py:54 +#: tiramisu/value.py:605 msgid "the context does not exist anymore" msgstr "le context n'existe plus" -#: tiramisu/config.py:181 +#: tiramisu/config.py:183 msgid "no option description found for this config (may be GroupConfig)" msgstr "" "pas d'option description trouvé pour cette config (peut être un GroupConfig)" -#: tiramisu/config.py:209 +#: tiramisu/config.py:211 msgid "can't assign to an OptionDescription" msgstr "ne peut pas attribuer une valeur à une OptionDescription" -#: tiramisu/config.py:335 +#: tiramisu/config.py:340 msgid "unknown type_ type {0}for _find" msgstr "type_ type {0} pour _find inconnu" -#: tiramisu/config.py:370 +#: tiramisu/config.py:380 msgid "no option found in config with these criteria" msgstr "aucune option trouvée dans la config avec ces critères" -#: tiramisu/config.py:420 +#: tiramisu/config.py:430 msgid "make_dict can't filtering with value without option" msgstr "make_dict ne peut filtrer sur une valeur mais sans option" -#: tiramisu/config.py:439 +#: tiramisu/config.py:449 msgid "unexpected path {0}, should start with {1}" msgstr "chemin imprévu {0}, devrait commencer par {1}" -#: tiramisu/config.py:507 +#: tiramisu/config.py:519 msgid "opt in getowner must be an option not {0}" msgstr "opt dans getowner doit être une option pas {0}" -#: tiramisu/config.py:552 +#: tiramisu/config.py:564 msgid "cannot serialize Config with MetaConfig" msgstr "impossible de sérialiser une Config avec une MetaConfig" -#: tiramisu/config.py:566 +#: tiramisu/config.py:578 msgid "this storage is not serialisable, could be a none persistent storage" msgstr "ce storage n'est sérialisable, devrait être une storage non persistant" -#: tiramisu/config.py:629 -msgid "metaconfig's children must be a list" -msgstr "enfants d'une metaconfig doit être une liste" +#: tiramisu/config.py:631 +msgid "invalid name: {0} for config" +msgstr "nom invalide : {0} pour la config" -#: tiramisu/config.py:723 +#: tiramisu/config.py:655 +msgid "groupconfig's children must be a list" +msgstr "enfants d'une groupconfig doit être une liste" + +#: tiramisu/config.py:659 +msgid "groupconfig's children must be Config, MetaConfig or GroupConfig" +msgstr "" +"les enfants d'un groupconfig doivent être des Config, MetaConfig ou " +"GroupConfig" + +#: tiramisu/config.py:662 +msgid "name must be set to config before creating groupconfig" +msgstr "un nom doit être donné à la config avant de créer un groupconfig" + +#: tiramisu/config.py:670 +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:785 msgid "metaconfig's children should be config, not {0}" msgstr "enfants d'une metaconfig doit être une config, pas {0}" -#: tiramisu/config.py:727 +#: tiramisu/config.py:789 msgid "child has already a metaconfig's" msgstr "enfant a déjà une metaconfig" -#: tiramisu/config.py:731 +#: tiramisu/config.py:793 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:805 +msgid "" +"force_default, force_default_if_same or force_dont_change_value cannot be " +"set with only_config" +msgstr "" +"force_default, force_default_if_same ou force_dont_change_value ne peuvent " +"pas être spécifié avec only_config" + +#: tiramisu/config.py:811 +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" + #: tiramisu/option/baseoption.py:56 msgid "{0} must be a function" msgstr "{0} doit être une fonction" @@ -141,7 +172,7 @@ msgstr "" msgid "invalid properties type {0} for {1}, must be a tuple" msgstr "type des properties invalide {0} pour {1}, doit être un tuple" -#: tiramisu/option/baseoption.py:144 +#: tiramisu/option/baseoption.py:145 msgid "" "params defined for a callback function but no callback defined yet for " "option {0}" @@ -149,112 +180,115 @@ msgstr "" "params définis pour une fonction callback mais par de callback encore " "définis pour l'option {0}" -#: tiramisu/option/baseoption.py:149 +#: tiramisu/option/baseoption.py:150 msgid "a callback is already set for option {0}, cannot set another one's" msgstr "" "un callback est en lecture seul pour l'option {0}, ne peut en placer une " "autre" -#: tiramisu/option/baseoption.py:276 +#: tiramisu/option/baseoption.py:277 msgid "cannot serialize Option, only in OptionDescription" msgstr "ne peut serialiser une Option, seulement via une OptionDescription" -#: tiramisu/option/baseoption.py:354 +#: tiramisu/option/baseoption.py:363 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule" -#: tiramisu/option/baseoption.py:509 tiramisu/option/baseoption.py:552 +#: tiramisu/option/baseoption.py:528 tiramisu/option/baseoption.py:571 msgid "invalid value for option {0}: {1}" msgstr "valeur invalide pour l'option {0} : {1}" -#: tiramisu/option/baseoption.py:522 +#: tiramisu/option/baseoption.py:541 msgid "do_validation for {0}: error in value" msgstr "do_validation for {0} : erreur dans un la valeur" -#: tiramisu/option/baseoption.py:528 +#: tiramisu/option/baseoption.py:547 msgid "do_validation for {0}: warning in value" msgstr "do_validation for {0} : warning dans un la valeur" -#: tiramisu/option/baseoption.py:538 +#: tiramisu/option/baseoption.py:557 msgid "do_validation for {0}: error in consistency" msgstr "do_validation for {0} : erreur dans un test de consistance" -#: tiramisu/option/baseoption.py:542 +#: tiramisu/option/baseoption.py:561 msgid "do_validation for {0}: warning in consistency" msgstr "do_validation for {0} : warning dans un test de consistance" -#: tiramisu/option/baseoption.py:546 +#: tiramisu/option/baseoption.py:565 msgid "warning on the value of the option {0}: {1}" msgstr "avertissement sur la valeur de l'option {0} : {1}" -#: tiramisu/option/baseoption.py:564 tiramisu/option/baseoption.py:573 +#: tiramisu/option/baseoption.py:583 tiramisu/option/baseoption.py:592 msgid "invalid value {0} for option {1} which must be a list" msgstr "valeur invalide pour l'option {0} : {1} laquelle doit être une liste" -#: tiramisu/option/baseoption.py:579 +#: tiramisu/option/baseoption.py:598 msgid "invalid value {0} for option {1} which must be a list of list" msgstr "" "valeur invalide pour l'option {0} : {1} laquelle doit être une liste de liste" -#: tiramisu/option/baseoption.py:632 -#, fuzzy +#: tiramisu/option/baseoption.py:651 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:643 +#: tiramisu/option/baseoption.py:663 +msgid "unknow parameter {0} in consistency" +msgstr "paramètre inconnu {0} dans un test de consistance" + +#: tiramisu/option/baseoption.py:670 msgid "consistency must be set with an option" msgstr "consistency doit être configuré avec une option" -#: tiramisu/option/baseoption.py:646 tiramisu/option/baseoption.py:653 +#: tiramisu/option/baseoption.py:673 tiramisu/option/baseoption.py:680 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:649 +#: tiramisu/option/baseoption.py:676 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:656 +#: tiramisu/option/baseoption.py:683 msgid "cannot add consistency with itself" msgstr "ne peut ajouter une consistency avec lui même" -#: tiramisu/option/baseoption.py:658 +#: tiramisu/option/baseoption.py:685 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:662 +#: tiramisu/option/baseoption.py:689 msgid "consistency {0} not available for this option" msgstr "consistency {0} non valable pour cette option" -#: tiramisu/option/baseoption.py:689 +#: tiramisu/option/baseoption.py:717 msgid "same value for {0} and {1}, should be different" msgstr "même valeur pour {0} et {1}, devrait être différent" -#: tiramisu/option/baseoption.py:691 +#: tiramisu/option/baseoption.py:719 msgid "same value for {0} and {1}, must be different" msgstr "même valeur pour {0} et {1}, doit être différent" -#: tiramisu/option/baseoption.py:748 +#: tiramisu/option/baseoption.py:776 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:770 +#: tiramisu/option/baseoption.py:798 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:776 +#: tiramisu/option/baseoption.py:804 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:787 +#: tiramisu/option/baseoption.py:815 msgid "" "malformed requirements for option: {0} require must have option, expected " "and action keys" @@ -262,49 +296,49 @@ msgstr "" "requirements malformé pour l'option : {0} l'exigence doit avoir les clefs " "option, expected et action" -#: tiramisu/option/baseoption.py:791 +#: tiramisu/option/baseoption.py:819 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:796 +#: tiramisu/option/baseoption.py:824 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:800 +#: tiramisu/option/baseoption.py:828 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:804 +#: tiramisu/option/baseoption.py:832 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:808 +#: tiramisu/option/baseoption.py:836 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:811 +#: tiramisu/option/baseoption.py:839 msgid "malformed requirements option {0} must not be a multi for {1}" msgstr "" "requirements mal formés pour l'option {0} ne doit pas être une multi pour {1}" -#: tiramisu/option/baseoption.py:818 +#: tiramisu/option/baseoption.py:846 msgid "" "malformed requirements second argument must be valid for option {0}: {1}" msgstr "" "requirements mal formés deuxième argument doit être valide pour l'option " "{0} : {1}" -#: tiramisu/option/baseoption.py:823 +#: tiramisu/option/baseoption.py:851 msgid "inconsistency in action types for option: {0} action: {1}" msgstr "incohérence dans les types action pour l'option : {0} action {1}" -#: tiramisu/option/baseoption.py:851 +#: tiramisu/option/baseoption.py:879 msgid "malformed symlinkoption must be an option for symlink {0}" msgstr "symlinkoption mal formé, doit être une option pour symlink {0}" @@ -332,7 +366,7 @@ msgstr "" "callback d'une variable maitre ne devrait pas référencer des variables " "esclaves" -#: tiramisu/option/masterslave.py:198 +#: tiramisu/option/masterslave.py:258 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" @@ -406,55 +440,59 @@ msgid "invalid IP {0} ({1}) not in network {2} ({3}) with netmask {4} ({5})" msgstr "" "IP invalide {0} ({1}) pas dans le réseau {2} ({3}) avec le masque {4} ({5})" -#: tiramisu/option/option.py:254 +#: tiramisu/option/option.py:256 msgid "inconsistency in allowed range" msgstr "inconsistence dans la plage autorisée" -#: tiramisu/option/option.py:259 +#: tiramisu/option/option.py:261 msgid "max value is empty" msgstr "la valeur maximum est vide" -#: tiramisu/option/option.py:277 +#: tiramisu/option/option.py:279 msgid "invalid port, range must have two values only" msgstr "port invalide, une plage doit avoir deux valeurs seulement" -#: tiramisu/option/option.py:280 +#: tiramisu/option/option.py:282 msgid "invalid port, first port in range must be smaller than the second one" msgstr "" "port invalide, le premier port d'une plage doit être plus petit que le second" -#: tiramisu/option/option.py:289 +#: tiramisu/option/option.py:291 msgid "invalid port" msgstr "port invalide" -#: tiramisu/option/option.py:291 +#: tiramisu/option/option.py:293 msgid "invalid port, must be an between {0} and {1}" msgstr "port invalide, port doit être entre {0} et {1}" -#: tiramisu/option/option.py:304 +#: tiramisu/option/option.py:306 msgid "invalid network address" msgstr "adresse réseau invalide" -#: tiramisu/option/option.py:310 +#: tiramisu/option/option.py:312 msgid "network address is in reserved class" msgstr "l'adresse réseau est pas dans une plage d'adresse réservée" -#: tiramisu/option/option.py:312 +#: tiramisu/option/option.py:314 msgid "invalid network address, mustn't be in reserved class" msgstr "adresse réseau invalide, ne doit pas être dans la classe réservée" -#: tiramisu/option/option.py:324 +#: tiramisu/option/option.py:326 msgid "invalid netmask address" msgstr "masque de sous-réseau invalide" -#: tiramisu/option/option.py:341 +#: tiramisu/option/option.py:343 msgid "invalid len for opts" msgstr "longueur invalide pour opts" -#: tiramisu/option/option.py:355 +#: tiramisu/option/option.py:352 msgid "invalid IP {0} ({1}) with netmask {2}, this IP is a network" msgstr "IP invalide {0} ({1}) avec masque {2}, cette IP est un réseau" +#: tiramisu/option/option.py:355 +msgid "invalid IP {0} ({1}) with netmask {2}, this IP is a broadcast" +msgstr "IP invalide {0} ({1}) avec masque {2}, cette IP est un broadcast" + #: tiramisu/option/option.py:360 msgid "invalid network {0} ({1}) with netmask {2}" msgstr "réseau invalide {0} ({1}) avec masque {2}" @@ -481,55 +519,59 @@ msgstr "allow_ip doit être un booléen" msgid "allow_without_dot must be a boolean" msgstr "allow_without_dot doit être un booléen" -#: tiramisu/option/option.py:428 +#: tiramisu/option/option.py:429 msgid "invalid domainname's length (min 2)" msgstr "longueur du nom de domaine invalide (minimum 2)" -#: tiramisu/option/option.py:430 +#: tiramisu/option/option.py:431 msgid "invalid domainname's length (max {0})" msgstr "longueur du nom de domaine invalide (maximum {0})" -#: tiramisu/option/option.py:445 +#: tiramisu/option/option.py:446 msgid "invalid domainname, must have dot" msgstr "nom de domaine invalide, doit avoir un point" -#: tiramisu/option/option.py:447 +#: tiramisu/option/option.py:448 msgid "invalid domainname's length (max 255)" msgstr "longueur du nom de domaine invalide (maximum {1})" #: tiramisu/option/option.py:457 -msgid "same characters may cause problems" +msgid "some characters are uppercase" +msgstr "des caractères sont en majuscule" + +#: tiramisu/option/option.py:460 +msgid "some characters may cause problems" msgstr "des caractères peuvent poser problèmes" -#: tiramisu/option/option.py:459 +#: tiramisu/option/option.py:462 msgid "invalid domainname" msgstr "nom de domaine invalide" -#: tiramisu/option/option.py:483 +#: tiramisu/option/option.py:486 msgid "invalid email address, must contains one @" msgstr "adresse email invalide, doit contenir un @" -#: tiramisu/option/option.py:486 +#: tiramisu/option/option.py:489 msgid "invalid username in email address" msgstr "nom d'utilisateur invalide dans une adresse email" -#: tiramisu/option/option.py:502 +#: tiramisu/option/option.py:505 msgid "invalid url, must start with http:// or https://" msgstr "URL invalide, doit démarrer avec http:// ou https://" -#: tiramisu/option/option.py:521 +#: tiramisu/option/option.py:524 msgid "invalid url, port must be an between 0 and 65536" msgstr "URL invalide, port doit être entre 0 et 65536" -#: tiramisu/option/option.py:528 +#: tiramisu/option/option.py:531 msgid "invalid url, must ends with filename" msgstr "URL invalide, doit finir avec un nom de fichier" -#: tiramisu/option/option.py:542 +#: tiramisu/option/option.py:545 msgid "invalid username" msgstr "utilisateur invalide" -#: tiramisu/option/option.py:552 +#: tiramisu/option/option.py:555 msgid "invalid filename" msgstr "nom de fichier invalide" @@ -545,36 +587,36 @@ msgstr "option ne doit pas commencé pareil qu'un dynoptiondescription" msgid "consistency with option {0} which is not in Config" msgstr "consistency avec l'option {0} qui n'est pas dans une Config" -#: tiramisu/option/optiondescription.py:139 +#: tiramisu/option/optiondescription.py:145 msgid "duplicate option: {0}" msgstr "option dupliquée : {0}" -#: tiramisu/option/optiondescription.py:155 +#: tiramisu/option/optiondescription.py:156 msgid "cannot change group_type if already set (old {0}, new {1})" msgstr "ne peut changer group_type si déjà spécifié (ancien {0}, nouveau {1})" -#: tiramisu/option/optiondescription.py:163 +#: tiramisu/option/optiondescription.py:164 msgid "group_type: {0} not allowed" msgstr "group_type : {0} non autorisé" -#: tiramisu/option/optiondescription.py:260 +#: tiramisu/option/optiondescription.py:262 msgid "DynOptionDescription callback return not uniq value" msgstr "callback d'une DynOptionDescription ne retourne pas une valeur unique" -#: tiramisu/option/optiondescription.py:263 +#: tiramisu/option/optiondescription.py:265 msgid "invalid suffix: {0} for option" msgstr "suffix invalide : {0} pour l'option" -#: tiramisu/option/optiondescription.py:316 +#: tiramisu/option/optiondescription.py:318 msgid "cannot set optiondescription in an dynoptiondescription" msgstr "" "impossible de mettre une optiondescription dans un dynoptiondescription" -#: tiramisu/option/optiondescription.py:321 +#: tiramisu/option/optiondescription.py:323 msgid "cannot set symlinkoption in an dynoptiondescription" msgstr "impossible de placer un symlinkoption dans un dynoptiondescription" -#: tiramisu/option/optiondescription.py:329 +#: tiramisu/option/optiondescription.py:331 msgid "callback is mandatory for dynoptiondescription" msgstr "callback est obligatoire pour un dynoptiondescription" @@ -586,47 +628,47 @@ msgstr "ne peut redéfinir ({0})" msgid "can't unbind {0}" msgstr "ne peut supprimer ({0})" -#: tiramisu/setting.py:255 +#: tiramisu/setting.py:254 msgid "cannot append {0} property for option {1}: this property is calculated" msgstr "" "ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est " "calculée" -#: tiramisu/setting.py:341 +#: tiramisu/setting.py:343 msgid "you should only append/remove properties" msgstr "pour pouvait seulement ajouter/supprimer des propriétés" -#: tiramisu/setting.py:345 +#: tiramisu/setting.py:347 msgid "opt and all_properties must not be set together in reset" msgstr "opt et all_properties ne doit pas être renseigné ensemble dans reset" -#: tiramisu/setting.py:363 +#: tiramisu/setting.py:368 msgid "if opt is not None, path should not be None in _getproperties" msgstr "" "si opt n'est pas None, path devrait ne pas être à None dans _getproperties" -#: tiramisu/setting.py:407 +#: tiramisu/setting.py:412 msgid "cannot add those properties: {0}" msgstr "ne peut pas ajouter ces propriétés : {0}" -#: tiramisu/setting.py:469 +#: tiramisu/setting.py:477 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:475 +#: tiramisu/setting.py:483 msgid "trying to access to an option named: {0} with properties {1}" msgstr "tentative d'accès à une option nommée : {0} avec les propriétés {1}" -#: tiramisu/setting.py:493 +#: tiramisu/setting.py:501 msgid "permissive must be a tuple" msgstr "permissive doit être un tuple" -#: tiramisu/setting.py:500 tiramisu/value.py:379 +#: tiramisu/setting.py:508 tiramisu/value.py:426 msgid "invalid generic owner {0}" msgstr "invalide owner générique {0}" -#: tiramisu/setting.py:588 +#: tiramisu/setting.py:596 msgid "" "malformed requirements imbrication detected for option: '{0}' with " "requirement on: '{1}'" @@ -634,7 +676,7 @@ msgstr "" "imbrication de requirements mal formés detectée pour l'option : '{0}' avec " "requirement sur : '{1}'" -#: tiramisu/setting.py:599 +#: tiramisu/setting.py:607 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}" @@ -650,108 +692,107 @@ msgstr "ne peut pas importer le stockage {0}" msgid "option {0} not already exists in storage {1}" msgstr "option {0} n'existe pas dans l'espace de stockage {1}" -#: tiramisu/storage/dictionary/option.py:89 +#: tiramisu/storage/dictionary/option.py:99 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:131 tiramisu/value.py:441 +#: tiramisu/storage/dictionary/option.py:141 +#: tiramisu/storage/sqlalchemy/option.py:434 tiramisu/value.py:490 msgid "information's item not found: {0}" msgstr "aucune config spécifiée alors que c'est nécessaire" -#: tiramisu/storage/dictionary/option.py:336 -#: tiramisu/storage/sqlalchemy/option.py:348 +#: tiramisu/storage/dictionary/option.py:362 +#: tiramisu/storage/sqlalchemy/option.py:478 msgid "no option for path {0}" msgstr "pas d'option pour le chemin {0}" -#: tiramisu/storage/dictionary/option.py:342 -#: tiramisu/storage/sqlalchemy/option.py:355 +#: tiramisu/storage/dictionary/option.py:368 +#: tiramisu/storage/sqlalchemy/option.py:485 msgid "no option {0} found" msgstr "pas d'option {0} trouvée" -#: tiramisu/storage/dictionary/option.py:390 +#: tiramisu/storage/dictionary/option.py:417 msgid "cannot find dynpath" msgstr "ne peut trouver le dynpath" -#: tiramisu/storage/dictionary/option.py:480 -#: tiramisu/storage/sqlalchemy/option.py:465 +#: tiramisu/storage/dictionary/option.py:507 +#: tiramisu/storage/sqlalchemy/option.py:630 msgid "suffix and context needed if it's a dyn option" msgstr "suffix et context obligatoire si c'est une option dynamique" -#: tiramisu/storage/dictionary/option.py:493 +#: tiramisu/storage/dictionary/option.py:520 msgid "{0} instance has no attribute '_readonly'" msgstr "{0} instance n'a pas l'attribut '_readonly'" -#: tiramisu/storage/dictionary/option.py:507 -#: tiramisu/storage/sqlalchemy/option.py:495 +#: tiramisu/storage/dictionary/option.py:534 +#: tiramisu/storage/sqlalchemy/option.py:660 msgid "unknown Option {0} in OptionDescription {1}" msgstr "Option {0} inconnue pour l'OptionDescription {1}" #: tiramisu/storage/dictionary/storage.py:37 -#: tiramisu/storage/sqlalchemy/storage.py:37 msgid "dictionary storage cannot delete session" msgstr "" "impossible de supprimer une session dans un espace de stockage dictionary" #: tiramisu/storage/dictionary/storage.py:48 -#: tiramisu/storage/sqlalchemy/storage.py:48 +#: tiramisu/storage/sqlalchemy/storage.py:66 msgid "session already used" msgstr "session déjà utilisée" #: tiramisu/storage/dictionary/storage.py:50 -#: tiramisu/storage/sqlalchemy/storage.py:50 msgid "a dictionary cannot be persistent" msgstr "un espace de stockage dictionary ne peut être persistant" -#: tiramisu/value.py:64 +#: tiramisu/value.py:65 msgid "optiondescription has no value" msgstr "une optiondescription n'a pas de valeur" -#: tiramisu/value.py:303 +#: tiramisu/value.py:325 msgid "you should only set value with config" msgstr "vous devez seul affecter une valeur avec un config" -#: tiramisu/value.py:356 +#: tiramisu/value.py:395 msgid "owner only avalaible for an option" msgstr "owner seulement possible pour une option" -#: tiramisu/value.py:386 +#: tiramisu/value.py:433 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:481 +#: tiramisu/value.py:531 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:520 +#: tiramisu/value.py:570 msgid "{0} is already a Multi " msgstr "{0} est déjà une Multi" -#: tiramisu/value.py:586 +#: tiramisu/value.py:636 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:605 +#: tiramisu/value.py:655 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:609 +#: tiramisu/value.py:659 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:618 +#: tiramisu/value.py:668 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:626 +#: tiramisu/value.py:676 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:634 +#: tiramisu/value.py:684 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:662 +#: tiramisu/value.py:712 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" diff --git a/translations/tiramisu.pot b/translations/tiramisu.pot index 57e07f7..5cc896f 100644 --- a/translations/tiramisu.pot +++ b/translations/tiramisu.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2014-10-26 09:42+CET\n" +"POT-Creation-Date: 2014-12-07 14:44+CET\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,71 +19,95 @@ msgstr "" msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}" msgstr "" -#: tiramisu/config.py:58 +#: tiramisu/config.py:59 msgid "descr must be an optiondescription, not {0}" msgstr "" -#: tiramisu/config.py:137 +#: tiramisu/config.py:139 msgid "unknown group_type: {0}" msgstr "" -#: tiramisu/config.py:176 tiramisu/setting.py:321 tiramisu/value.py:54 -#: tiramisu/value.py:555 +#: tiramisu/config.py:178 tiramisu/setting.py:320 tiramisu/value.py:54 +#: tiramisu/value.py:605 msgid "the context does not exist anymore" msgstr "" -#: tiramisu/config.py:181 +#: tiramisu/config.py:183 msgid "no option description found for this config (may be GroupConfig)" msgstr "" -#: tiramisu/config.py:209 +#: tiramisu/config.py:211 msgid "can't assign to an OptionDescription" msgstr "" -#: tiramisu/config.py:335 +#: tiramisu/config.py:340 msgid "unknown type_ type {0}for _find" msgstr "" -#: tiramisu/config.py:370 +#: tiramisu/config.py:380 msgid "no option found in config with these criteria" msgstr "" -#: tiramisu/config.py:420 +#: tiramisu/config.py:430 msgid "make_dict can't filtering with value without option" msgstr "" -#: tiramisu/config.py:439 +#: tiramisu/config.py:449 msgid "unexpected path {0}, should start with {1}" msgstr "" -#: tiramisu/config.py:507 +#: tiramisu/config.py:519 msgid "opt in getowner must be an option not {0}" msgstr "" -#: tiramisu/config.py:552 +#: tiramisu/config.py:564 msgid "cannot serialize Config with MetaConfig" msgstr "" -#: tiramisu/config.py:566 +#: tiramisu/config.py:578 msgid "this storage is not serialisable, could be a none persistent storage" msgstr "" -#: tiramisu/config.py:629 -msgid "metaconfig's children must be a list" +#: tiramisu/config.py:631 +msgid "invalid name: {0} for config" msgstr "" -#: tiramisu/config.py:723 +#: tiramisu/config.py:655 +msgid "groupconfig's children must be a list" +msgstr "" + +#: tiramisu/config.py:659 +msgid "groupconfig's children must be Config, MetaConfig or GroupConfig" +msgstr "" + +#: tiramisu/config.py:662 +msgid "name must be set to config before creating groupconfig" +msgstr "" + +#: tiramisu/config.py:670 +msgid "config name must be uniq in groupconfig for {0}" +msgstr "" + +#: tiramisu/config.py:785 msgid "metaconfig's children should be config, not {0}" msgstr "" -#: tiramisu/config.py:727 +#: tiramisu/config.py:789 msgid "child has already a metaconfig's" msgstr "" -#: tiramisu/config.py:731 +#: tiramisu/config.py:793 msgid "all config in metaconfig must have the same optiondescription" msgstr "" +#: tiramisu/config.py:805 +msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config" +msgstr "" + +#: tiramisu/config.py:811 +msgid "force_default and force_dont_change_value cannot be set together" +msgstr "" + #: tiramisu/option/baseoption.py:56 msgid "{0} must be a function" msgstr "" @@ -132,139 +156,143 @@ msgstr "" msgid "invalid properties type {0} for {1}, must be a tuple" msgstr "" -#: tiramisu/option/baseoption.py:144 +#: tiramisu/option/baseoption.py:145 msgid "params defined for a callback function but no callback defined yet for option {0}" msgstr "" -#: tiramisu/option/baseoption.py:149 +#: tiramisu/option/baseoption.py:150 msgid "a callback is already set for option {0}, cannot set another one's" msgstr "" -#: tiramisu/option/baseoption.py:276 +#: tiramisu/option/baseoption.py:277 msgid "cannot serialize Option, only in OptionDescription" msgstr "" -#: tiramisu/option/baseoption.py:354 +#: tiramisu/option/baseoption.py:363 msgid "'{0}' ({1}) object attribute '{2}' is read-only" msgstr "" -#: tiramisu/option/baseoption.py:509 tiramisu/option/baseoption.py:552 +#: tiramisu/option/baseoption.py:528 tiramisu/option/baseoption.py:571 msgid "invalid value for option {0}: {1}" msgstr "" -#: tiramisu/option/baseoption.py:522 +#: tiramisu/option/baseoption.py:541 msgid "do_validation for {0}: error in value" msgstr "" -#: tiramisu/option/baseoption.py:528 +#: tiramisu/option/baseoption.py:547 msgid "do_validation for {0}: warning in value" msgstr "" -#: tiramisu/option/baseoption.py:538 +#: tiramisu/option/baseoption.py:557 msgid "do_validation for {0}: error in consistency" msgstr "" -#: tiramisu/option/baseoption.py:542 +#: tiramisu/option/baseoption.py:561 msgid "do_validation for {0}: warning in consistency" msgstr "" -#: tiramisu/option/baseoption.py:546 +#: tiramisu/option/baseoption.py:565 msgid "warning on the value of the option {0}: {1}" msgstr "" -#: tiramisu/option/baseoption.py:564 tiramisu/option/baseoption.py:573 +#: tiramisu/option/baseoption.py:583 tiramisu/option/baseoption.py:592 msgid "invalid value {0} for option {1} which must be a list" msgstr "" -#: tiramisu/option/baseoption.py:579 +#: tiramisu/option/baseoption.py:598 msgid "invalid value {0} for option {1} which must be a list of list" msgstr "" -#: tiramisu/option/baseoption.py:632 +#: tiramisu/option/baseoption.py:651 msgid "'{0}' ({1}) cannot add consistency, option is read-only" msgstr "" -#: tiramisu/option/baseoption.py:643 +#: tiramisu/option/baseoption.py:663 +msgid "unknow parameter {0} in consistency" +msgstr "" + +#: tiramisu/option/baseoption.py:670 msgid "consistency must be set with an option" msgstr "" -#: tiramisu/option/baseoption.py:646 tiramisu/option/baseoption.py:653 +#: tiramisu/option/baseoption.py:673 tiramisu/option/baseoption.py:680 msgid "almost one option in consistency is in a dynoptiondescription but not all" msgstr "" -#: tiramisu/option/baseoption.py:649 +#: tiramisu/option/baseoption.py:676 msgid "option in consistency must be in same dynoptiondescription" msgstr "" -#: tiramisu/option/baseoption.py:656 +#: tiramisu/option/baseoption.py:683 msgid "cannot add consistency with itself" msgstr "" -#: tiramisu/option/baseoption.py:658 +#: tiramisu/option/baseoption.py:685 msgid "every options in consistency must be multi or none" msgstr "" -#: tiramisu/option/baseoption.py:662 +#: tiramisu/option/baseoption.py:689 msgid "consistency {0} not available for this option" msgstr "" -#: tiramisu/option/baseoption.py:689 +#: tiramisu/option/baseoption.py:717 msgid "same value for {0} and {1}, should be different" msgstr "" -#: tiramisu/option/baseoption.py:691 +#: tiramisu/option/baseoption.py:719 msgid "same value for {0} and {1}, must be different" msgstr "" -#: tiramisu/option/baseoption.py:748 +#: tiramisu/option/baseoption.py:776 msgid "default value not allowed if option: {0} is calculated" msgstr "" -#: tiramisu/option/baseoption.py:770 +#: tiramisu/option/baseoption.py:798 msgid "malformed requirements type for option: {0}, must be a dict" msgstr "" -#: tiramisu/option/baseoption.py:776 +#: tiramisu/option/baseoption.py:804 msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}" msgstr "" -#: tiramisu/option/baseoption.py:787 +#: tiramisu/option/baseoption.py:815 msgid "malformed requirements for option: {0} require must have option, expected and action keys" msgstr "" -#: tiramisu/option/baseoption.py:791 +#: tiramisu/option/baseoption.py:819 msgid "malformed requirements for option: {0} action cannot be force_store_value" msgstr "" -#: tiramisu/option/baseoption.py:796 +#: tiramisu/option/baseoption.py:824 msgid "malformed requirements for option: {0} inverse must be boolean" msgstr "" -#: tiramisu/option/baseoption.py:800 +#: tiramisu/option/baseoption.py:828 msgid "malformed requirements for option: {0} transitive must be boolean" msgstr "" -#: tiramisu/option/baseoption.py:804 +#: tiramisu/option/baseoption.py:832 msgid "malformed requirements for option: {0} same_action must be boolean" msgstr "" -#: tiramisu/option/baseoption.py:808 +#: tiramisu/option/baseoption.py:836 msgid "malformed requirements must be an option in option {0}" msgstr "" -#: tiramisu/option/baseoption.py:811 +#: tiramisu/option/baseoption.py:839 msgid "malformed requirements option {0} must not be a multi for {1}" msgstr "" -#: tiramisu/option/baseoption.py:818 +#: tiramisu/option/baseoption.py:846 msgid "malformed requirements second argument must be valid for option {0}: {1}" msgstr "" -#: tiramisu/option/baseoption.py:823 +#: tiramisu/option/baseoption.py:851 msgid "inconsistency in action types for option: {0} action: {1}" msgstr "" -#: tiramisu/option/baseoption.py:851 +#: tiramisu/option/baseoption.py:879 msgid "malformed symlinkoption must be an option for symlink {0}" msgstr "" @@ -288,7 +316,7 @@ msgstr "" msgid "callback of master's option shall not refered a slave's ones" msgstr "" -#: tiramisu/option/masterslave.py:198 +#: tiramisu/option/masterslave.py:258 msgid "invalid len for the slave: {0} which has {1} as master" msgstr "" @@ -361,54 +389,58 @@ msgstr "" msgid "invalid IP {0} ({1}) not in network {2} ({3}) with netmask {4} ({5})" msgstr "" -#: tiramisu/option/option.py:254 +#: tiramisu/option/option.py:256 msgid "inconsistency in allowed range" msgstr "" -#: tiramisu/option/option.py:259 +#: tiramisu/option/option.py:261 msgid "max value is empty" msgstr "" -#: tiramisu/option/option.py:277 +#: tiramisu/option/option.py:279 msgid "invalid port, range must have two values only" msgstr "" -#: tiramisu/option/option.py:280 +#: tiramisu/option/option.py:282 msgid "invalid port, first port in range must be smaller than the second one" msgstr "" -#: tiramisu/option/option.py:289 +#: tiramisu/option/option.py:291 msgid "invalid port" msgstr "" -#: tiramisu/option/option.py:291 +#: tiramisu/option/option.py:293 msgid "invalid port, must be an between {0} and {1}" msgstr "" -#: tiramisu/option/option.py:304 +#: tiramisu/option/option.py:306 msgid "invalid network address" msgstr "" -#: tiramisu/option/option.py:310 +#: tiramisu/option/option.py:312 msgid "network address is in reserved class" msgstr "" -#: tiramisu/option/option.py:312 +#: tiramisu/option/option.py:314 msgid "invalid network address, mustn't be in reserved class" msgstr "" -#: tiramisu/option/option.py:324 +#: tiramisu/option/option.py:326 msgid "invalid netmask address" msgstr "" -#: tiramisu/option/option.py:341 +#: tiramisu/option/option.py:343 msgid "invalid len for opts" msgstr "" -#: tiramisu/option/option.py:355 +#: tiramisu/option/option.py:352 msgid "invalid IP {0} ({1}) with netmask {2}, this IP is a network" msgstr "" +#: tiramisu/option/option.py:355 +msgid "invalid IP {0} ({1}) with netmask {2}, this IP is a broadcast" +msgstr "" + #: tiramisu/option/option.py:360 msgid "invalid network {0} ({1}) with netmask {2}" msgstr "" @@ -433,55 +465,59 @@ msgstr "" msgid "allow_without_dot must be a boolean" msgstr "" -#: tiramisu/option/option.py:428 +#: tiramisu/option/option.py:429 msgid "invalid domainname's length (min 2)" msgstr "" -#: tiramisu/option/option.py:430 +#: tiramisu/option/option.py:431 msgid "invalid domainname's length (max {0})" msgstr "" -#: tiramisu/option/option.py:445 +#: tiramisu/option/option.py:446 msgid "invalid domainname, must have dot" msgstr "" -#: tiramisu/option/option.py:447 +#: tiramisu/option/option.py:448 msgid "invalid domainname's length (max 255)" msgstr "" #: tiramisu/option/option.py:457 -msgid "same characters may cause problems" +msgid "some characters are uppercase" msgstr "" -#: tiramisu/option/option.py:459 +#: tiramisu/option/option.py:460 +msgid "some characters may cause problems" +msgstr "" + +#: tiramisu/option/option.py:462 msgid "invalid domainname" msgstr "" -#: tiramisu/option/option.py:483 +#: tiramisu/option/option.py:486 msgid "invalid email address, must contains one @" msgstr "" -#: tiramisu/option/option.py:486 +#: tiramisu/option/option.py:489 msgid "invalid username in email address" msgstr "" -#: tiramisu/option/option.py:502 +#: tiramisu/option/option.py:505 msgid "invalid url, must start with http:// or https://" msgstr "" -#: tiramisu/option/option.py:521 +#: tiramisu/option/option.py:524 msgid "invalid url, port must be an between 0 and 65536" msgstr "" -#: tiramisu/option/option.py:528 +#: tiramisu/option/option.py:531 msgid "invalid url, must ends with filename" msgstr "" -#: tiramisu/option/option.py:542 +#: tiramisu/option/option.py:545 msgid "invalid username" msgstr "" -#: tiramisu/option/option.py:552 +#: tiramisu/option/option.py:555 msgid "invalid filename" msgstr "" @@ -497,35 +533,35 @@ msgstr "" msgid "consistency with option {0} which is not in Config" msgstr "" -#: tiramisu/option/optiondescription.py:139 +#: tiramisu/option/optiondescription.py:145 msgid "duplicate option: {0}" msgstr "" -#: tiramisu/option/optiondescription.py:155 +#: tiramisu/option/optiondescription.py:156 msgid "cannot change group_type if already set (old {0}, new {1})" msgstr "" -#: tiramisu/option/optiondescription.py:163 +#: tiramisu/option/optiondescription.py:164 msgid "group_type: {0} not allowed" msgstr "" -#: tiramisu/option/optiondescription.py:260 +#: tiramisu/option/optiondescription.py:262 msgid "DynOptionDescription callback return not uniq value" msgstr "" -#: tiramisu/option/optiondescription.py:263 +#: tiramisu/option/optiondescription.py:265 msgid "invalid suffix: {0} for option" msgstr "" -#: tiramisu/option/optiondescription.py:316 +#: tiramisu/option/optiondescription.py:318 msgid "cannot set optiondescription in an dynoptiondescription" msgstr "" -#: tiramisu/option/optiondescription.py:321 +#: tiramisu/option/optiondescription.py:323 msgid "cannot set symlinkoption in an dynoptiondescription" msgstr "" -#: tiramisu/option/optiondescription.py:329 +#: tiramisu/option/optiondescription.py:331 msgid "callback is mandatory for dynoptiondescription" msgstr "" @@ -537,47 +573,47 @@ msgstr "" msgid "can't unbind {0}" msgstr "" -#: tiramisu/setting.py:255 +#: tiramisu/setting.py:254 msgid "cannot append {0} property for option {1}: this property is calculated" msgstr "" -#: tiramisu/setting.py:341 +#: tiramisu/setting.py:343 msgid "you should only append/remove properties" msgstr "" -#: tiramisu/setting.py:345 +#: tiramisu/setting.py:347 msgid "opt and all_properties must not be set together in reset" msgstr "" -#: tiramisu/setting.py:363 +#: tiramisu/setting.py:368 msgid "if opt is not None, path should not be None in _getproperties" msgstr "" -#: tiramisu/setting.py:407 +#: tiramisu/setting.py:412 msgid "cannot add those properties: {0}" msgstr "" -#: tiramisu/setting.py:469 +#: tiramisu/setting.py:477 msgid "cannot change the value for option {0} this option is frozen" msgstr "" -#: tiramisu/setting.py:475 +#: tiramisu/setting.py:483 msgid "trying to access to an option named: {0} with properties {1}" msgstr "" -#: tiramisu/setting.py:493 +#: tiramisu/setting.py:501 msgid "permissive must be a tuple" msgstr "" -#: tiramisu/setting.py:500 tiramisu/value.py:379 +#: tiramisu/setting.py:508 tiramisu/value.py:426 msgid "invalid generic owner {0}" msgstr "" -#: tiramisu/setting.py:588 +#: tiramisu/setting.py:596 msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'" msgstr "" -#: tiramisu/setting.py:599 +#: tiramisu/setting.py:607 msgid "option '{0}' has requirement's property error: {1} {2}" msgstr "" @@ -593,106 +629,105 @@ msgstr "" msgid "option {0} not already exists in storage {1}" msgstr "" -#: tiramisu/storage/dictionary/option.py:89 +#: tiramisu/storage/dictionary/option.py:99 msgid "invalid default_multi value {0} for option {1}: {2}" msgstr "" -#: tiramisu/storage/dictionary/option.py:131 tiramisu/value.py:441 +#: tiramisu/storage/dictionary/option.py:141 +#: tiramisu/storage/sqlalchemy/option.py:434 tiramisu/value.py:490 msgid "information's item not found: {0}" msgstr "" -#: tiramisu/storage/dictionary/option.py:336 -#: tiramisu/storage/sqlalchemy/option.py:348 +#: tiramisu/storage/dictionary/option.py:362 +#: tiramisu/storage/sqlalchemy/option.py:478 msgid "no option for path {0}" msgstr "" -#: tiramisu/storage/dictionary/option.py:342 -#: tiramisu/storage/sqlalchemy/option.py:355 +#: tiramisu/storage/dictionary/option.py:368 +#: tiramisu/storage/sqlalchemy/option.py:485 msgid "no option {0} found" msgstr "" -#: tiramisu/storage/dictionary/option.py:390 +#: tiramisu/storage/dictionary/option.py:417 msgid "cannot find dynpath" msgstr "" -#: tiramisu/storage/dictionary/option.py:480 -#: tiramisu/storage/sqlalchemy/option.py:465 +#: tiramisu/storage/dictionary/option.py:507 +#: tiramisu/storage/sqlalchemy/option.py:630 msgid "suffix and context needed if it's a dyn option" msgstr "" -#: tiramisu/storage/dictionary/option.py:493 +#: tiramisu/storage/dictionary/option.py:520 msgid "{0} instance has no attribute '_readonly'" msgstr "" -#: tiramisu/storage/dictionary/option.py:507 -#: tiramisu/storage/sqlalchemy/option.py:495 +#: tiramisu/storage/dictionary/option.py:534 +#: tiramisu/storage/sqlalchemy/option.py:660 msgid "unknown Option {0} in OptionDescription {1}" msgstr "" #: tiramisu/storage/dictionary/storage.py:37 -#: tiramisu/storage/sqlalchemy/storage.py:37 msgid "dictionary storage cannot delete session" msgstr "" #: tiramisu/storage/dictionary/storage.py:48 -#: tiramisu/storage/sqlalchemy/storage.py:48 +#: tiramisu/storage/sqlalchemy/storage.py:66 msgid "session already used" msgstr "" #: tiramisu/storage/dictionary/storage.py:50 -#: tiramisu/storage/sqlalchemy/storage.py:50 msgid "a dictionary cannot be persistent" msgstr "" -#: tiramisu/value.py:64 +#: tiramisu/value.py:65 msgid "optiondescription has no value" msgstr "" -#: tiramisu/value.py:303 +#: tiramisu/value.py:325 msgid "you should only set value with config" msgstr "" -#: tiramisu/value.py:356 +#: tiramisu/value.py:395 msgid "owner only avalaible for an option" msgstr "" -#: tiramisu/value.py:386 +#: tiramisu/value.py:433 msgid "no value for {0} cannot change owner to {1}" msgstr "" -#: tiramisu/value.py:481 +#: tiramisu/value.py:531 msgid "can force cache only if cache is actived in config" msgstr "" -#: tiramisu/value.py:520 +#: tiramisu/value.py:570 msgid "{0} is already a Multi " msgstr "" -#: tiramisu/value.py:586 +#: tiramisu/value.py:636 msgid "cannot append a value on a multi option {0} which is a slave" msgstr "" -#: tiramisu/value.py:605 +#: tiramisu/value.py:655 msgid "cannot sort multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:609 +#: tiramisu/value.py:659 msgid "cmp is not permitted in python v3 or greater" msgstr "" -#: tiramisu/value.py:618 +#: tiramisu/value.py:668 msgid "cannot reverse multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:626 +#: tiramisu/value.py:676 msgid "cannot insert multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:634 +#: tiramisu/value.py:684 msgid "cannot extend multi option {0} if master or slave" msgstr "" -#: tiramisu/value.py:662 +#: tiramisu/value.py:712 msgid "cannot pop a value on a multi option {0} which is a slave" msgstr ""