refactor validation
This commit is contained in:
parent
c566ad1111
commit
10768a6067
14 changed files with 336 additions and 237 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Sat Apr 18 22:42:53 2015 +0200 Emmanuel Garette <egarette@cadoles.com>
|
||||||
|
* refactor validation, build a fake context (with new Values and
|
||||||
|
Settings) to validate value with those object. Now value with
|
||||||
|
callback and consistency are correctly validate
|
||||||
|
|
||||||
Sun Mar 8 12:02:17 2015 +0200 Emmanuel Garette <egarette@cadoles.com>
|
Sun Mar 8 12:02:17 2015 +0200 Emmanuel Garette <egarette@cadoles.com>
|
||||||
* valid default/callback value in consistencies
|
* valid default/callback value in consistencies
|
||||||
|
|
||||||
|
|
|
@ -315,6 +315,15 @@ def return_netmask(*args, **kwargs):
|
||||||
return u'255.255.255.0'
|
return u'255.255.255.0'
|
||||||
|
|
||||||
|
|
||||||
|
def return_netmask2(master):
|
||||||
|
if master is not None:
|
||||||
|
if master.endswith('2.1'):
|
||||||
|
return u'255.255.255.0'
|
||||||
|
if not master.endswith('.0'):
|
||||||
|
return u'255.255.255.255'
|
||||||
|
return u'255.255.255.0'
|
||||||
|
|
||||||
|
|
||||||
def test_consistency_network_netmask_multi_slave_callback():
|
def test_consistency_network_netmask_multi_slave_callback():
|
||||||
a = NetworkOption('a', '', multi=True, properties=('mandatory',))
|
a = NetworkOption('a', '', multi=True, properties=('mandatory',))
|
||||||
b = NetmaskOption('b', '', callback=return_netmask, multi=True, properties=('mandatory',))
|
b = NetmaskOption('b', '', callback=return_netmask, multi=True, properties=('mandatory',))
|
||||||
|
@ -339,6 +348,31 @@ def test_consistency_network_netmask_multi_slave_callback():
|
||||||
c.a = [u'192.168.1.0', u'192.168.1.1']
|
c.a = [u'192.168.1.0', u'192.168.1.1']
|
||||||
|
|
||||||
|
|
||||||
|
def test_consistency_network_netmask_multi_slave_callback_value():
|
||||||
|
a = NetworkOption('a', '', multi=True, properties=('mandatory',))
|
||||||
|
b = NetmaskOption('b', '', callback=return_netmask2, callback_params={'': ((a, False),)}, multi=True, properties=('mandatory',))
|
||||||
|
od = OptionDescription('a', '', [a, b])
|
||||||
|
od.impl_set_group_type(groups.master)
|
||||||
|
b.impl_add_consistency('network_netmask', a)
|
||||||
|
c = Config(od)
|
||||||
|
c.read_write()
|
||||||
|
c.cfgimpl_get_settings().remove('cache')
|
||||||
|
assert c.a == []
|
||||||
|
assert c.b == []
|
||||||
|
c.a.append(u'192.168.1.0')
|
||||||
|
assert c.a == [u'192.168.1.0']
|
||||||
|
assert c.b == [u'255.255.255.0']
|
||||||
|
raises(ValueError, "c.a[0] = u'192.168.2.1'")
|
||||||
|
assert c.a == [u'192.168.1.0']
|
||||||
|
assert c.b == [u'255.255.255.0']
|
||||||
|
raises(ValueError, "c.a = [u'192.168.2.1']")
|
||||||
|
assert c.a == [u'192.168.1.0']
|
||||||
|
assert c.b == [u'255.255.255.0']
|
||||||
|
c.a.append(u'192.168.1.1')
|
||||||
|
c.a = [u'192.168.1.0', u'192.168.1.1']
|
||||||
|
c.b = [u'255.255.255.0', u'255.255.255.255']
|
||||||
|
|
||||||
|
|
||||||
def test_consistency_ip_netmask_multi_master():
|
def test_consistency_ip_netmask_multi_master():
|
||||||
a = IPOption('a', '', multi=True)
|
a = IPOption('a', '', multi=True)
|
||||||
b = NetmaskOption('b', '', multi=True)
|
b = NetmaskOption('b', '', multi=True)
|
||||||
|
@ -406,9 +440,7 @@ def test_consistency_broadcast_error():
|
||||||
b.impl_add_consistency('network_netmask', a)
|
b.impl_add_consistency('network_netmask', a)
|
||||||
c.impl_add_consistency('broadcast', a)
|
c.impl_add_consistency('broadcast', a)
|
||||||
c = Config(od)
|
c = Config(od)
|
||||||
c.a = ['192.168.1.0']
|
raises(ConfigError, "c.a = ['192.168.1.0']")
|
||||||
raises(ConfigError, "c.b = ['255.255.255.0']")
|
|
||||||
raises(ConfigError, "c.c = ['192.168.1.255']")
|
|
||||||
|
|
||||||
|
|
||||||
def test_consistency_broadcast_default_1():
|
def test_consistency_broadcast_default_1():
|
||||||
|
|
|
@ -24,12 +24,12 @@ from tiramisu.setting import undefined
|
||||||
# ____________________________________________________________
|
# ____________________________________________________________
|
||||||
|
|
||||||
|
|
||||||
def carry_out_calculation(option, config, callback, callback_params,
|
def carry_out_calculation(option, context, callback, callback_params,
|
||||||
index=undefined):
|
index=undefined):
|
||||||
"""a function that carries out a calculation for an option's value
|
"""a function that carries out a calculation for an option's value
|
||||||
|
|
||||||
:param option: the option
|
:param option: the option
|
||||||
:param config: the context config in order to have
|
:param context: the context config in order to have
|
||||||
the whole options available
|
the whole options available
|
||||||
:param callback: the name of the callback function
|
:param callback: the name of the callback function
|
||||||
:type callback: str
|
:type callback: str
|
||||||
|
@ -147,25 +147,25 @@ def carry_out_calculation(option, config, callback, callback_params,
|
||||||
for key, callbacks in callback_params.items():
|
for key, callbacks in callback_params.items():
|
||||||
for callbk in callbacks:
|
for callbk in callbacks:
|
||||||
if isinstance(callbk, tuple):
|
if isinstance(callbk, tuple):
|
||||||
if config is undefined:
|
if context is undefined:
|
||||||
raise ContextError() # pragma: optional cover
|
raise ContextError() # pragma: optional cover
|
||||||
if callbk[0] is None: # pragma: optional cover
|
if callbk[0] is None: # pragma: optional cover
|
||||||
#Not an option, set full context
|
#Not an option, set full context
|
||||||
tcparams.setdefault(key, []).append((config, False))
|
tcparams.setdefault(key, []).append((context, False))
|
||||||
else:
|
else:
|
||||||
# callbk is something link (opt, True|False)
|
# callbk is something link (opt, True|False)
|
||||||
opt, force_permissive = callbk
|
opt, force_permissive = callbk
|
||||||
if opt._is_subdyn():
|
if opt._is_subdyn():
|
||||||
root = '.'.join(option.impl_getpath(config).split('.')[:-1])
|
root = '.'.join(option.impl_getpath(context).split('.')[:-1])
|
||||||
name = opt.impl_getname() + option.impl_getsuffix()
|
name = opt.impl_getname() + option.impl_getsuffix()
|
||||||
path = root + '.' + name
|
path = root + '.' + name
|
||||||
opt = opt._impl_to_dyn(name, path)
|
opt = opt._impl_to_dyn(name, path)
|
||||||
else:
|
else:
|
||||||
path = config.cfgimpl_get_description(
|
path = context.cfgimpl_get_description(
|
||||||
).impl_get_path_by_opt(opt)
|
).impl_get_path_by_opt(opt)
|
||||||
# get value
|
# get value
|
||||||
try:
|
try:
|
||||||
value = config.getattr(path, force_permissive=True,
|
value = context.getattr(path, force_permissive=True,
|
||||||
validate=False)
|
validate=False)
|
||||||
# convert to list, not modifie this multi
|
# convert to list, not modifie this multi
|
||||||
if value.__class__.__name__ == 'Multi':
|
if value.__class__.__name__ == 'Multi':
|
||||||
|
|
|
@ -20,13 +20,16 @@
|
||||||
# ____________________________________________________________
|
# ____________________________________________________________
|
||||||
"options handler global entry point"
|
"options handler global entry point"
|
||||||
import weakref
|
import weakref
|
||||||
|
from copy import copy
|
||||||
|
|
||||||
|
|
||||||
from tiramisu.error import PropertiesOptionError, ConfigError, ConflictError
|
from tiramisu.error import PropertiesOptionError, ConfigError, ConflictError
|
||||||
from tiramisu.option import OptionDescription, Option, SymLinkOption, \
|
from tiramisu.option import OptionDescription, Option, SymLinkOption, \
|
||||||
DynSymLinkOption
|
DynSymLinkOption
|
||||||
from tiramisu.option.baseoption import valid_name
|
from tiramisu.option.baseoption import valid_name
|
||||||
from tiramisu.setting import groups, Settings, default_encoding, undefined
|
from tiramisu.setting import groups, Settings, default_encoding, undefined
|
||||||
from tiramisu.storage import get_storages, get_storage, set_storage, \
|
from tiramisu.storage import get_storages, get_storage, set_storage, \
|
||||||
_impl_getstate_setting
|
_impl_getstate_setting, get_storages_validation
|
||||||
from tiramisu.value import Values, Multi
|
from tiramisu.value import Values, Multi
|
||||||
from tiramisu.i18n import _
|
from tiramisu.i18n import _
|
||||||
|
|
||||||
|
@ -595,6 +598,14 @@ class _CommonConfig(SubConfig):
|
||||||
self._impl_settings._impl_setstate(storage)
|
self._impl_settings._impl_setstate(storage)
|
||||||
self._impl_meta = None
|
self._impl_meta = None
|
||||||
|
|
||||||
|
def _gen_fake_values(self):
|
||||||
|
fake_config = Config(self._impl_descr, persistent=False,
|
||||||
|
force_storages=get_storages_validation())
|
||||||
|
fake_config.cfgimpl_get_values()._p_._values = copy(self.cfgimpl_get_values()._p_.get_modified_values())
|
||||||
|
fake_config.cfgimpl_get_settings()._p_._properties = copy(self.cfgimpl_get_settings()._p_.get_modified_properties())
|
||||||
|
fake_config.cfgimpl_get_settings()._p_._permissives = copy(self.cfgimpl_get_settings()._p_.get_modified_permissives())
|
||||||
|
return fake_config
|
||||||
|
|
||||||
|
|
||||||
# ____________________________________________________________
|
# ____________________________________________________________
|
||||||
class Config(_CommonConfig):
|
class Config(_CommonConfig):
|
||||||
|
@ -602,7 +613,7 @@ class Config(_CommonConfig):
|
||||||
__slots__ = ('__weakref__', '_impl_test', '_impl_name')
|
__slots__ = ('__weakref__', '_impl_test', '_impl_name')
|
||||||
|
|
||||||
def __init__(self, descr, session_id=None, persistent=False,
|
def __init__(self, descr, session_id=None, persistent=False,
|
||||||
name=undefined):
|
name=undefined, force_storages=None):
|
||||||
""" Configuration option management master class
|
""" Configuration option management master class
|
||||||
|
|
||||||
:param descr: describes the configuration schema
|
:param descr: describes the configuration schema
|
||||||
|
@ -615,7 +626,10 @@ class Config(_CommonConfig):
|
||||||
:param persistent: if persistent, don't delete storage when leaving
|
:param persistent: if persistent, don't delete storage when leaving
|
||||||
:type persistent: `boolean`
|
:type persistent: `boolean`
|
||||||
"""
|
"""
|
||||||
|
#if force_storages is None:
|
||||||
settings, values = get_storages(self, session_id, persistent)
|
settings, values = get_storages(self, session_id, persistent)
|
||||||
|
#else:
|
||||||
|
# settings, values = force_storages
|
||||||
self._impl_settings = Settings(self, settings)
|
self._impl_settings = Settings(self, settings)
|
||||||
self._impl_values = Values(self, values)
|
self._impl_values = Values(self, values)
|
||||||
super(Config, self).__init__(descr, weakref.ref(self))
|
super(Config, self).__init__(descr, weakref.ref(self))
|
||||||
|
|
|
@ -135,6 +135,9 @@ class Base(StorageBase):
|
||||||
list(set_forbidden_properties)))
|
list(set_forbidden_properties)))
|
||||||
StorageBase.__init__(self, name, _multi, warnings_only, doc, extra,
|
StorageBase.__init__(self, name, _multi, warnings_only, doc, extra,
|
||||||
calc_properties, requires, properties)
|
calc_properties, requires, properties)
|
||||||
|
if multi is not False and default is None:
|
||||||
|
default = []
|
||||||
|
self.impl_validate(default)
|
||||||
self._set_default_values(default, default_multi)
|
self._set_default_values(default, default_multi)
|
||||||
if callback is not False:
|
if callback is not False:
|
||||||
self.impl_set_callback(callback, callback_params)
|
self.impl_set_callback(callback, callback_params)
|
||||||
|
@ -507,7 +510,7 @@ class Option(OnlyOption):
|
||||||
if current_opt is undefined:
|
if current_opt is undefined:
|
||||||
current_opt = self
|
current_opt = self
|
||||||
|
|
||||||
def val_validator(val):
|
def calculation_validator(val):
|
||||||
validator, validator_params = self.impl_get_validator()
|
validator, validator_params = self.impl_get_validator()
|
||||||
if validator is not None:
|
if validator is not None:
|
||||||
if validator_params != {}:
|
if validator_params != {}:
|
||||||
|
@ -524,7 +527,7 @@ class Option(OnlyOption):
|
||||||
else:
|
else:
|
||||||
validator_params_ = {'': (val,)}
|
validator_params_ = {'': (val,)}
|
||||||
# Raise ValueError if not valid
|
# Raise ValueError if not valid
|
||||||
carry_out_calculation(self, config=context,
|
carry_out_calculation(self, context=context,
|
||||||
callback=validator,
|
callback=validator,
|
||||||
callback_params=validator_params_)
|
callback_params=validator_params_)
|
||||||
|
|
||||||
|
@ -545,7 +548,7 @@ class Option(OnlyOption):
|
||||||
warning = None
|
warning = None
|
||||||
try:
|
try:
|
||||||
# valid with self._validator
|
# valid with self._validator
|
||||||
val_validator(_value)
|
calculation_validator(_value)
|
||||||
# if not context launch consistency validation
|
# if not context launch consistency validation
|
||||||
if context is not undefined:
|
if context is not undefined:
|
||||||
descr._valid_consistency(current_opt, _value, context,
|
descr._valid_consistency(current_opt, _value, context,
|
||||||
|
@ -721,6 +724,7 @@ class Option(OnlyOption):
|
||||||
None, all_cons_opts, warnings_only,
|
None, all_cons_opts, warnings_only,
|
||||||
transitive)
|
transitive)
|
||||||
self._add_consistency(func, all_cons_opts, params)
|
self._add_consistency(func, all_cons_opts, params)
|
||||||
|
#re validate default value when add consistency
|
||||||
self.impl_validate(self.impl_getdefault())
|
self.impl_validate(self.impl_getdefault())
|
||||||
|
|
||||||
def _cons_not_equal(self, opts, vals, warnings_only):
|
def _cons_not_equal(self, opts, vals, warnings_only):
|
||||||
|
|
|
@ -208,7 +208,8 @@ class MasterSlaves(object):
|
||||||
index=index,
|
index=index,
|
||||||
setting_properties=setting_properties),
|
setting_properties=setting_properties),
|
||||||
setitem=False,
|
setitem=False,
|
||||||
force=True)
|
force=True,
|
||||||
|
validate=validate)
|
||||||
if validate_properties:
|
if validate_properties:
|
||||||
context.cfgimpl_get_settings().validate_properties(opt, False,
|
context.cfgimpl_get_settings().validate_properties(opt, False,
|
||||||
False,
|
False,
|
||||||
|
|
|
@ -74,7 +74,7 @@ class ChoiceOption(Option):
|
||||||
values_params = self._choice_values_params
|
values_params = self._choice_values_params
|
||||||
if values_params is None:
|
if values_params is None:
|
||||||
values_params = {}
|
values_params = {}
|
||||||
values = carry_out_calculation(self, config=context,
|
values = carry_out_calculation(self, context=context,
|
||||||
callback=values,
|
callback=values,
|
||||||
callback_params=values_params)
|
callback_params=values_params)
|
||||||
if not isinstance(values, list): # pragma: optional cover
|
if not isinstance(values, list): # pragma: optional cover
|
||||||
|
@ -290,7 +290,7 @@ class PortOption(Option):
|
||||||
except ValueError: # pragma: optional cover
|
except ValueError: # pragma: optional cover
|
||||||
raise ValueError(_('invalid port'))
|
raise ValueError(_('invalid port'))
|
||||||
if not self._get_extra('_min_value') <= val <= self._get_extra('_max_value'): # pragma: optional cover
|
if not self._get_extra('_min_value') <= val <= self._get_extra('_max_value'): # pragma: optional cover
|
||||||
raise ValueError(_('invalid port, must be an between {0} '
|
raise ValueError(_('invalid port, must be an integer between {0} '
|
||||||
'and {1}').format(self._get_extra('_min_value'),
|
'and {1}').format(self._get_extra('_min_value'),
|
||||||
self._get_extra('_max_value')))
|
self._get_extra('_max_value')))
|
||||||
|
|
||||||
|
|
|
@ -255,7 +255,7 @@ class OptionDescription(BaseOption, StorageOptionDescription):
|
||||||
|
|
||||||
def _impl_get_suffixes(self, context):
|
def _impl_get_suffixes(self, context):
|
||||||
callback, callback_params = self.impl_get_callback()
|
callback, callback_params = self.impl_get_callback()
|
||||||
values = carry_out_calculation(self, config=context,
|
values = carry_out_calculation(self, context=context,
|
||||||
callback=callback,
|
callback=callback,
|
||||||
callback_params=callback_params)
|
callback_params=callback_params)
|
||||||
if len(values) > len(set(values)):
|
if len(values) > len(set(values)):
|
||||||
|
|
|
@ -27,6 +27,7 @@ configurator ``set_storage()``.
|
||||||
|
|
||||||
|
|
||||||
from time import time
|
from time import time
|
||||||
|
from random import randint
|
||||||
import os
|
import os
|
||||||
from tiramisu.error import ConfigError
|
from tiramisu.error import ConfigError
|
||||||
from tiramisu.i18n import _
|
from tiramisu.i18n import _
|
||||||
|
@ -66,6 +67,8 @@ class StorageType(object):
|
||||||
|
|
||||||
storage_type = StorageType()
|
storage_type = StorageType()
|
||||||
storage_option_type = StorageType()
|
storage_option_type = StorageType()
|
||||||
|
storage_validation = StorageType()
|
||||||
|
storage_validation.set('dictionary')
|
||||||
|
|
||||||
|
|
||||||
def set_storage(type_, name, **kwargs): # pragma: optional cover
|
def set_storage(type_, name, **kwargs): # pragma: optional cover
|
||||||
|
@ -105,13 +108,15 @@ def get_storage(type_, session_id, persistent, test): # pragma: optional cover
|
||||||
"""
|
"""
|
||||||
if type_ == 'option':
|
if type_ == 'option':
|
||||||
return storage_option_type.get().Storage(session_id, persistent, test)
|
return storage_option_type.get().Storage(session_id, persistent, test)
|
||||||
else:
|
elif type_ == 'config':
|
||||||
return storage_type.get().Storage(session_id, persistent, test)
|
return storage_type.get().Storage(session_id, persistent, test)
|
||||||
|
else:
|
||||||
|
return storage_validation.get().Storage(session_id, persistent, test)
|
||||||
|
|
||||||
|
|
||||||
def get_storages(context, session_id, persistent):
|
def get_storages(context, session_id, persistent):
|
||||||
def gen_id(config):
|
def gen_id(config):
|
||||||
return str(id(config)) + str(time())
|
return str(id(config)) + str(time()) + str(randint(0, 500))
|
||||||
|
|
||||||
if session_id is None:
|
if session_id is None:
|
||||||
session_id = gen_id(context)
|
session_id = gen_id(context)
|
||||||
|
@ -119,10 +124,8 @@ def get_storages(context, session_id, persistent):
|
||||||
storage = imp.Storage(session_id, persistent)
|
storage = imp.Storage(session_id, persistent)
|
||||||
try:
|
try:
|
||||||
return imp.Settings(storage), imp.Values(storage)
|
return imp.Settings(storage), imp.Values(storage)
|
||||||
except:
|
except Exception, err:
|
||||||
import traceback
|
raise Exception(_('unable to get storages:') + str(err))
|
||||||
traceback.print_exc()
|
|
||||||
raise Exception('rah')
|
|
||||||
|
|
||||||
|
|
||||||
def get_storages_option(type_):
|
def get_storages_option(type_):
|
||||||
|
@ -133,6 +136,12 @@ def get_storages_option(type_):
|
||||||
return imp.StorageOptionDescription
|
return imp.StorageOptionDescription
|
||||||
|
|
||||||
|
|
||||||
|
def get_storages_validation():
|
||||||
|
imp = storage_validation.get()
|
||||||
|
storage = imp.Storage('pouet', persistent=False, test=True)
|
||||||
|
return imp.Settings(storage), imp.Values(storage)
|
||||||
|
|
||||||
|
|
||||||
def list_sessions(type_): # pragma: optional cover
|
def list_sessions(type_): # pragma: optional cover
|
||||||
"""List all available session (persistent or not persistent)
|
"""List all available session (persistent or not persistent)
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -83,9 +83,6 @@ class StorageBase(object):
|
||||||
self._opt = opt
|
self._opt = opt
|
||||||
|
|
||||||
def _set_default_values(self, default, default_multi):
|
def _set_default_values(self, default, default_multi):
|
||||||
if self.impl_is_multi() and default is None:
|
|
||||||
default = []
|
|
||||||
self.impl_validate(default)
|
|
||||||
if ((self.impl_is_multi() and default != tuple()) or
|
if ((self.impl_is_multi() and default != tuple()) or
|
||||||
(not self.impl_is_multi() and default is not None)):
|
(not self.impl_is_multi() and default is not None)):
|
||||||
if self.impl_is_multi():
|
if self.impl_is_multi():
|
||||||
|
|
|
@ -322,9 +322,6 @@ class _Base(SqlAlchemyBase):
|
||||||
_Consistency(func, all_cons_opts, params)
|
_Consistency(func, all_cons_opts, params)
|
||||||
|
|
||||||
def _set_default_values(self, default, default_multi):
|
def _set_default_values(self, default, default_multi):
|
||||||
if self.impl_is_multi() and default is None:
|
|
||||||
default = []
|
|
||||||
self.impl_validate(default)
|
|
||||||
self._default = default
|
self._default = default
|
||||||
if self.impl_is_multi() and default_multi is not None:
|
if self.impl_is_multi() and default_multi is not None:
|
||||||
self._validate(default_multi)
|
self._validate(default_multi)
|
||||||
|
|
|
@ -83,7 +83,7 @@ class Values(object):
|
||||||
# if value has callback and is not set
|
# if value has callback and is not set
|
||||||
if opt.impl_has_callback():
|
if opt.impl_has_callback():
|
||||||
callback, callback_params = opt.impl_get_callback()
|
callback, callback_params = opt.impl_get_callback()
|
||||||
value = carry_out_calculation(opt, config=self._getcontext(),
|
value = carry_out_calculation(opt, context=self._getcontext(),
|
||||||
callback=callback,
|
callback=callback,
|
||||||
callback_params=callback_params,
|
callback_params=callback_params,
|
||||||
index=index)
|
index=index)
|
||||||
|
@ -161,8 +161,12 @@ class Values(object):
|
||||||
if self._contains(path):
|
if self._contains(path):
|
||||||
if validate:
|
if validate:
|
||||||
setting = context.cfgimpl_get_settings()
|
setting = context.cfgimpl_get_settings()
|
||||||
opt.impl_validate(opt.impl_getdefault(),
|
fake_context = context._gen_fake_values()
|
||||||
context, 'validator' in setting)
|
setting_properties = setting._getproperties()
|
||||||
|
fake_value = fake_context.cfgimpl_get_values()
|
||||||
|
fake_value.reset(opt, path, validate=False)
|
||||||
|
opt.impl_validate(getattr(fake_context, path),
|
||||||
|
fake_context, 'validator' in setting_properties)
|
||||||
context.cfgimpl_reset_cache()
|
context.cfgimpl_reset_cache()
|
||||||
if opt.impl_is_master_slaves('master'):
|
if opt.impl_is_master_slaves('master'):
|
||||||
opt.impl_get_master_slaves().reset(opt, self)
|
opt.impl_get_master_slaves().reset(opt, self)
|
||||||
|
@ -331,8 +335,16 @@ class Values(object):
|
||||||
# valid opt
|
# valid opt
|
||||||
context = self._getcontext()
|
context = self._getcontext()
|
||||||
setting_properties = context.cfgimpl_get_settings()._getproperties()
|
setting_properties = context.cfgimpl_get_settings()._getproperties()
|
||||||
opt.impl_validate(value, context,
|
fake_context = context._gen_fake_values()
|
||||||
'validator' in setting_properties)
|
fake_context.cfgimpl_get_values()._setitem(opt, value, path,
|
||||||
|
force_permissive, is_write,
|
||||||
|
setting_properties)
|
||||||
|
opt.impl_validate(value, fake_context, 'validator' in setting_properties)
|
||||||
|
self._setitem(opt, value, path, force_permissive, is_write,
|
||||||
|
setting_properties)
|
||||||
|
|
||||||
|
def _setitem(self, opt, value, path, force_permissive, is_write,
|
||||||
|
setting_properties):
|
||||||
if opt.impl_is_master_slaves():
|
if opt.impl_is_master_slaves():
|
||||||
opt.impl_get_master_slaves().setitem(self, opt, value, path)
|
opt.impl_get_master_slaves().setitem(self, opt, value, path)
|
||||||
self._setvalue(opt, path, value, force_permissive=force_permissive,
|
self._setvalue(opt, path, value, force_permissive=force_permissive,
|
||||||
|
@ -607,8 +619,13 @@ class Multi(list):
|
||||||
def __setitem__(self, index, value):
|
def __setitem__(self, index, value):
|
||||||
self._setitem(index, value)
|
self._setitem(index, value)
|
||||||
|
|
||||||
def _setitem(self, index, value):
|
def _setitem(self, index, value, validate=True):
|
||||||
self._validate(value, index, True)
|
if validate:
|
||||||
|
fake_context = self._getcontext()._gen_fake_values()
|
||||||
|
fake_multi = fake_context.cfgimpl_get_values()._get_cached_item(
|
||||||
|
self.opt, path=self.path, validate=False)
|
||||||
|
fake_multi._setitem(index, value, validate=False)
|
||||||
|
self._validate(value, fake_context, index, True)
|
||||||
#assume not checking mandatory property
|
#assume not checking mandatory property
|
||||||
super(Multi, self).__setitem__(index, value)
|
super(Multi, self).__setitem__(index, value)
|
||||||
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path,
|
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path,
|
||||||
|
@ -626,7 +643,7 @@ class Multi(list):
|
||||||
True, False, None, True,
|
True, False, None, True,
|
||||||
index=index)
|
index=index)
|
||||||
|
|
||||||
def append(self, value=undefined, force=False, setitem=True):
|
def append(self, value=undefined, force=False, setitem=True, validate=True):
|
||||||
"""the list value can be updated (appened)
|
"""the list value can be updated (appened)
|
||||||
only if the option is a master
|
only if the option is a master
|
||||||
"""
|
"""
|
||||||
|
@ -639,7 +656,12 @@ class Multi(list):
|
||||||
value = self._get_validated_value(index)
|
value = self._get_validated_value(index)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
value = None
|
value = None
|
||||||
self._validate(value, index, True)
|
if validate and value not in [None, undefined]:
|
||||||
|
fake_context = self._getcontext()._gen_fake_values()
|
||||||
|
fake_multi = fake_context.cfgimpl_get_values()._get_cached_item(
|
||||||
|
self.opt, path=self.path, validate=False)
|
||||||
|
fake_multi.append(value, validate=False, force=True)
|
||||||
|
self._validate(value, fake_context, index, True)
|
||||||
if not '_index' in self.__slots__ and self.opt.impl_is_submulti():
|
if not '_index' in self.__slots__ and self.opt.impl_is_submulti():
|
||||||
if not isinstance(value, SubMulti):
|
if not isinstance(value, SubMulti):
|
||||||
value = SubMulti(value, self.context, self.opt, self.path, index)
|
value = SubMulti(value, self.context, self.opt, self.path, index)
|
||||||
|
@ -668,16 +690,21 @@ class Multi(list):
|
||||||
super(Multi, self).reverse()
|
super(Multi, self).reverse()
|
||||||
self._store()
|
self._store()
|
||||||
|
|
||||||
def insert(self, index, obj):
|
def insert(self, index, value, validate=True):
|
||||||
#FIXME obj should be undefined
|
#FIXME value should be undefined
|
||||||
if self.opt.impl_is_master_slaves():
|
if self.opt.impl_is_master_slaves():
|
||||||
raise SlaveError(_("cannot insert multi option {0} if master or "
|
raise SlaveError(_("cannot insert multi option {0} if master or "
|
||||||
"slave").format(self.opt.impl_getname()))
|
"slave").format(self.opt.impl_getname()))
|
||||||
self._validate(obj, index, True)
|
if value is not None and validate:
|
||||||
super(Multi, self).insert(index, obj)
|
fake_context = self._getcontext()._gen_fake_values()
|
||||||
|
fake_multi = fake_context.cfgimpl_get_values()._get_cached_item(
|
||||||
|
self.opt, path=self.path, validate=False)
|
||||||
|
fake_multi.insert(index, value, validate=False)
|
||||||
|
self._validate(value, fake_context, index, True)
|
||||||
|
super(Multi, self).insert(index, value)
|
||||||
self._store()
|
self._store()
|
||||||
|
|
||||||
def extend(self, iterable):
|
def extend(self, iterable, validate=True):
|
||||||
if self.opt.impl_is_master_slaves():
|
if self.opt.impl_is_master_slaves():
|
||||||
raise SlaveError(_("cannot extend multi option {0} if master or "
|
raise SlaveError(_("cannot extend multi option {0} if master or "
|
||||||
"slave").format(self.opt.impl_getname()))
|
"slave").format(self.opt.impl_getname()))
|
||||||
|
@ -685,13 +712,17 @@ class Multi(list):
|
||||||
index = self._index
|
index = self._index
|
||||||
except:
|
except:
|
||||||
index = None
|
index = None
|
||||||
self._validate(iterable, index)
|
if validate:
|
||||||
|
fake_context = self._getcontext()._gen_fake_values()
|
||||||
|
fake_multi = fake_context.cfgimpl_get_values()._get_cached_item(
|
||||||
|
self.opt, path=self.path, validate=False)
|
||||||
|
fake_multi.extend(iterable, validate=False)
|
||||||
|
self._validate(iterable, fake_context, index)
|
||||||
super(Multi, self).extend(iterable)
|
super(Multi, self).extend(iterable)
|
||||||
self._store()
|
self._store()
|
||||||
|
|
||||||
def _validate(self, value, force_index, submulti=False):
|
def _validate(self, value, fake_context, force_index, submulti=False):
|
||||||
if value is not None:
|
self.opt.impl_validate(value, context=fake_context,
|
||||||
self.opt.impl_validate(value, context=self._getcontext(),
|
|
||||||
force_index=force_index)
|
force_index=force_index)
|
||||||
|
|
||||||
def pop(self, index, force=False):
|
def pop(self, index, force=False):
|
||||||
|
@ -749,12 +780,13 @@ class SubMulti(Multi):
|
||||||
self.path,
|
self.path,
|
||||||
self.submulti())
|
self.submulti())
|
||||||
|
|
||||||
def _validate(self, value, force_index, submulti=False):
|
def _validate(self, value, fake_context, force_index, submulti=False):
|
||||||
if value is not None:
|
if value is not None:
|
||||||
if submulti is False:
|
if submulti is False:
|
||||||
super(SubMulti, self)._validate(value, force_index)
|
super(SubMulti, self)._validate(value, fake_context,
|
||||||
|
force_index, submulti)
|
||||||
else:
|
else:
|
||||||
self.opt.impl_validate(value, context=self._getcontext(),
|
self.opt.impl_validate(value, context=fake_context,
|
||||||
force_index=self._index,
|
force_index=self._index,
|
||||||
force_submulti_index=force_index)
|
force_submulti_index=force_index)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Tiramisu\n"
|
"Project-Id-Version: Tiramisu\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2014-12-07 14:44+CET\n"
|
"POT-Creation-Date: 2015-04-18 22:40+CEST\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
|
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
|
||||||
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
|
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
|
||||||
|
@ -10,7 +10,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 1.5.4\n"
|
"X-Generator: Poedit 1.7.5\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Poedit-SourceCharset: UTF-8\n"
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
|
||||||
|
@ -21,92 +21,92 @@ msgstr ""
|
||||||
"impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : "
|
"impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : "
|
||||||
"{2}"
|
"{2}"
|
||||||
|
|
||||||
#: tiramisu/config.py:59
|
#: tiramisu/config.py:62
|
||||||
msgid "descr must be an optiondescription, not {0}"
|
msgid "descr must be an optiondescription, not {0}"
|
||||||
msgstr "descr doit être une optiondescription pas un {0}"
|
msgstr "descr doit être une optiondescription pas un {0}"
|
||||||
|
|
||||||
#: tiramisu/config.py:139
|
#: tiramisu/config.py:142
|
||||||
msgid "unknown group_type: {0}"
|
msgid "unknown group_type: {0}"
|
||||||
msgstr "group_type inconnu: {0}"
|
msgstr "group_type inconnu: {0}"
|
||||||
|
|
||||||
#: tiramisu/config.py:178 tiramisu/setting.py:320 tiramisu/value.py:54
|
#: tiramisu/config.py:181 tiramisu/setting.py:320 tiramisu/value.py:54
|
||||||
#: tiramisu/value.py:605
|
#: tiramisu/value.py:616
|
||||||
msgid "the context does not exist anymore"
|
msgid "the context does not exist anymore"
|
||||||
msgstr "le context n'existe plus"
|
msgstr "le context n'existe plus"
|
||||||
|
|
||||||
#: tiramisu/config.py:183
|
#: tiramisu/config.py:186
|
||||||
msgid "no option description found for this config (may be GroupConfig)"
|
msgid "no option description found for this config (may be GroupConfig)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"pas d'option description trouvé pour cette config (peut être un GroupConfig)"
|
"pas d'option description trouvé pour cette config (peut être un GroupConfig)"
|
||||||
|
|
||||||
#: tiramisu/config.py:211
|
#: tiramisu/config.py:214
|
||||||
msgid "can't assign to an OptionDescription"
|
msgid "can't assign to an OptionDescription"
|
||||||
msgstr "ne peut pas attribuer une valeur à une OptionDescription"
|
msgstr "ne peut pas attribuer une valeur à une OptionDescription"
|
||||||
|
|
||||||
#: tiramisu/config.py:340
|
#: tiramisu/config.py:343
|
||||||
msgid "unknown type_ type {0}for _find"
|
msgid "unknown type_ type {0}for _find"
|
||||||
msgstr "type_ type {0} pour _find inconnu"
|
msgstr "type_ type {0} pour _find inconnu"
|
||||||
|
|
||||||
#: tiramisu/config.py:380
|
#: tiramisu/config.py:383
|
||||||
msgid "no option found in config with these criteria"
|
msgid "no option found in config with these criteria"
|
||||||
msgstr "aucune option trouvée dans la config avec ces critères"
|
msgstr "aucune option trouvée dans la config avec ces critères"
|
||||||
|
|
||||||
#: tiramisu/config.py:430
|
#: tiramisu/config.py:433
|
||||||
msgid "make_dict can't filtering with value without option"
|
msgid "make_dict can't filtering with value without option"
|
||||||
msgstr "make_dict ne peut filtrer sur une valeur mais sans option"
|
msgstr "make_dict ne peut filtrer sur une valeur mais sans option"
|
||||||
|
|
||||||
#: tiramisu/config.py:449
|
#: tiramisu/config.py:452
|
||||||
msgid "unexpected path {0}, should start with {1}"
|
msgid "unexpected path {0}, should start with {1}"
|
||||||
msgstr "chemin imprévu {0}, devrait commencer par {1}"
|
msgstr "chemin imprévu {0}, devrait commencer par {1}"
|
||||||
|
|
||||||
#: tiramisu/config.py:519
|
#: tiramisu/config.py:522
|
||||||
msgid "opt in getowner must be an option not {0}"
|
msgid "opt in getowner must be an option not {0}"
|
||||||
msgstr "opt dans getowner doit être une option pas {0}"
|
msgstr "opt dans getowner doit être une option pas {0}"
|
||||||
|
|
||||||
#: tiramisu/config.py:564
|
#: tiramisu/config.py:567
|
||||||
msgid "cannot serialize Config with MetaConfig"
|
msgid "cannot serialize Config with MetaConfig"
|
||||||
msgstr "impossible de sérialiser une Config avec une MetaConfig"
|
msgstr "impossible de sérialiser une Config avec une MetaConfig"
|
||||||
|
|
||||||
#: tiramisu/config.py:578
|
#: tiramisu/config.py:581
|
||||||
msgid "this storage is not serialisable, could be a none persistent storage"
|
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"
|
msgstr "ce storage n'est sérialisable, devrait être une storage non persistant"
|
||||||
|
|
||||||
#: tiramisu/config.py:631
|
#: tiramisu/config.py:645
|
||||||
msgid "invalid name: {0} for config"
|
msgid "invalid name: {0} for config"
|
||||||
msgstr "nom invalide : {0} pour la config"
|
msgstr "nom invalide : {0} pour la config"
|
||||||
|
|
||||||
#: tiramisu/config.py:655
|
#: tiramisu/config.py:669
|
||||||
msgid "groupconfig's children must be a list"
|
msgid "groupconfig's children must be a list"
|
||||||
msgstr "enfants d'une groupconfig doit être une liste"
|
msgstr "enfants d'une groupconfig doit être une liste"
|
||||||
|
|
||||||
#: tiramisu/config.py:659
|
#: tiramisu/config.py:673
|
||||||
msgid "groupconfig's children must be Config, MetaConfig or GroupConfig"
|
msgid "groupconfig's children must be Config, MetaConfig or GroupConfig"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"les enfants d'un groupconfig doivent être des Config, MetaConfig ou "
|
"les enfants d'un groupconfig doivent être des Config, MetaConfig ou "
|
||||||
"GroupConfig"
|
"GroupConfig"
|
||||||
|
|
||||||
#: tiramisu/config.py:662
|
#: tiramisu/config.py:676
|
||||||
msgid "name must be set to config before creating groupconfig"
|
msgid "name must be set to config before creating groupconfig"
|
||||||
msgstr "un nom doit être donné à la config avant de créer un groupconfig"
|
msgstr "un nom doit être donné à la config avant de créer un groupconfig"
|
||||||
|
|
||||||
#: tiramisu/config.py:670
|
#: tiramisu/config.py:684
|
||||||
msgid "config name must be uniq in groupconfig for {0}"
|
msgid "config name must be uniq in groupconfig for {0}"
|
||||||
msgstr "le nom de la config doit être unique dans un groupconfig pour {0}"
|
msgstr "le nom de la config doit être unique dans un groupconfig pour {0}"
|
||||||
|
|
||||||
#: tiramisu/config.py:785
|
#: tiramisu/config.py:799
|
||||||
msgid "metaconfig's children should be config, not {0}"
|
msgid "metaconfig's children should be config, not {0}"
|
||||||
msgstr "enfants d'une metaconfig doit être une config, pas {0}"
|
msgstr "enfants d'une metaconfig doit être une config, pas {0}"
|
||||||
|
|
||||||
#: tiramisu/config.py:789
|
#: tiramisu/config.py:803
|
||||||
msgid "child has already a metaconfig's"
|
msgid "child has already a metaconfig's"
|
||||||
msgstr "enfant a déjà une metaconfig"
|
msgstr "enfant a déjà une metaconfig"
|
||||||
|
|
||||||
#: tiramisu/config.py:793
|
#: tiramisu/config.py:807
|
||||||
msgid "all config in metaconfig must have the same optiondescription"
|
msgid "all config in metaconfig must have the same optiondescription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"toutes les configs d'une metaconfig doivent avoir la même optiondescription"
|
"toutes les configs d'une metaconfig doivent avoir la même optiondescription"
|
||||||
|
|
||||||
#: tiramisu/config.py:805
|
#: tiramisu/config.py:819
|
||||||
msgid ""
|
msgid ""
|
||||||
"force_default, force_default_if_same or force_dont_change_value cannot be "
|
"force_default, force_default_if_same or force_dont_change_value cannot be "
|
||||||
"set with only_config"
|
"set with only_config"
|
||||||
|
@ -114,7 +114,7 @@ msgstr ""
|
||||||
"force_default, force_default_if_same ou force_dont_change_value ne peuvent "
|
"force_default, force_default_if_same ou force_dont_change_value ne peuvent "
|
||||||
"pas être spécifié avec only_config"
|
"pas être spécifié avec only_config"
|
||||||
|
|
||||||
#: tiramisu/config.py:811
|
#: tiramisu/config.py:825
|
||||||
msgid "force_default and force_dont_change_value cannot be set together"
|
msgid "force_default and force_dont_change_value cannot be set together"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"force_default et force_dont_change_value ne peuvent pas être mis ensemble"
|
"force_default et force_dont_change_value ne peuvent pas être mis ensemble"
|
||||||
|
@ -172,7 +172,7 @@ msgstr ""
|
||||||
msgid "invalid properties type {0} for {1}, must be a tuple"
|
msgid "invalid properties type {0} for {1}, must be a tuple"
|
||||||
msgstr "type des properties invalide {0} pour {1}, doit être un tuple"
|
msgstr "type des properties invalide {0} pour {1}, doit être un tuple"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:145
|
#: tiramisu/option/baseoption.py:148
|
||||||
msgid ""
|
msgid ""
|
||||||
"params defined for a callback function but no callback defined yet for "
|
"params defined for a callback function but no callback defined yet for "
|
||||||
"option {0}"
|
"option {0}"
|
||||||
|
@ -180,115 +180,115 @@ msgstr ""
|
||||||
"params définis pour une fonction callback mais par de callback encore "
|
"params définis pour une fonction callback mais par de callback encore "
|
||||||
"définis pour l'option {0}"
|
"définis pour l'option {0}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:150
|
#: tiramisu/option/baseoption.py:153
|
||||||
msgid "a callback is already set for option {0}, cannot set another one's"
|
msgid "a callback is already set for option {0}, cannot set another one's"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"un callback est en lecture seul pour l'option {0}, ne peut en placer une "
|
"un callback est en lecture seul pour l'option {0}, ne peut en placer une "
|
||||||
"autre"
|
"autre"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:277
|
#: tiramisu/option/baseoption.py:280
|
||||||
msgid "cannot serialize Option, only in OptionDescription"
|
msgid "cannot serialize Option, only in OptionDescription"
|
||||||
msgstr "ne peut serialiser une Option, seulement via une OptionDescription"
|
msgstr "ne peut serialiser une Option, seulement via une OptionDescription"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:363
|
#: tiramisu/option/baseoption.py:366
|
||||||
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
|
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
|
||||||
msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule"
|
msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:528 tiramisu/option/baseoption.py:571
|
#: tiramisu/option/baseoption.py:545 tiramisu/option/baseoption.py:588
|
||||||
msgid "invalid value for option {0}: {1}"
|
msgid "invalid value for option {0}: {1}"
|
||||||
msgstr "valeur invalide pour l'option {0} : {1}"
|
msgstr "valeur invalide pour l'option {0} : {1}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:541
|
#: tiramisu/option/baseoption.py:558
|
||||||
msgid "do_validation for {0}: error in value"
|
msgid "do_validation for {0}: error in value"
|
||||||
msgstr "do_validation for {0} : erreur dans un la valeur"
|
msgstr "do_validation for {0} : erreur dans un la valeur"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:547
|
#: tiramisu/option/baseoption.py:564
|
||||||
msgid "do_validation for {0}: warning in value"
|
msgid "do_validation for {0}: warning in value"
|
||||||
msgstr "do_validation for {0} : warning dans un la valeur"
|
msgstr "do_validation for {0} : warning dans un la valeur"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:557
|
#: tiramisu/option/baseoption.py:574
|
||||||
msgid "do_validation for {0}: error in consistency"
|
msgid "do_validation for {0}: error in consistency"
|
||||||
msgstr "do_validation for {0} : erreur dans un test de consistance"
|
msgstr "do_validation for {0} : erreur dans un test de consistance"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:561
|
#: tiramisu/option/baseoption.py:578
|
||||||
msgid "do_validation for {0}: warning in consistency"
|
msgid "do_validation for {0}: warning in consistency"
|
||||||
msgstr "do_validation for {0} : warning dans un test de consistance"
|
msgstr "do_validation for {0} : warning dans un test de consistance"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:565
|
#: tiramisu/option/baseoption.py:582
|
||||||
msgid "warning on the value of the option {0}: {1}"
|
msgid "warning on the value of the option {0}: {1}"
|
||||||
msgstr "avertissement sur la valeur de l'option {0} : {1}"
|
msgstr "avertissement sur la valeur de l'option {0} : {1}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:583 tiramisu/option/baseoption.py:592
|
#: tiramisu/option/baseoption.py:600 tiramisu/option/baseoption.py:609
|
||||||
msgid "invalid value {0} for option {1} which must be a list"
|
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"
|
msgstr "valeur invalide pour l'option {0} : {1} laquelle doit être une liste"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:598
|
#: tiramisu/option/baseoption.py:615
|
||||||
msgid "invalid value {0} for option {1} which must be a list of list"
|
msgid "invalid value {0} for option {1} which must be a list of list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"valeur invalide pour l'option {0} : {1} laquelle doit être une liste de liste"
|
"valeur invalide pour l'option {0} : {1} laquelle doit être une liste de liste"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:651
|
#: tiramisu/option/baseoption.py:668
|
||||||
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
|
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"'{0}' ({1}) ne peut ajouter de consistency, l'option est en lecture seul"
|
"'{0}' ({1}) ne peut ajouter de consistency, l'option est en lecture seul"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:663
|
#: tiramisu/option/baseoption.py:680
|
||||||
msgid "unknow parameter {0} in consistency"
|
msgid "unknow parameter {0} in consistency"
|
||||||
msgstr "paramètre inconnu {0} dans un test de consistance"
|
msgstr "paramètre inconnu {0} dans un test de consistance"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:670
|
#: tiramisu/option/baseoption.py:687
|
||||||
msgid "consistency must be set with an option"
|
msgid "consistency must be set with an option"
|
||||||
msgstr "consistency doit être configuré avec une option"
|
msgstr "consistency doit être configuré avec une option"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:673 tiramisu/option/baseoption.py:680
|
#: tiramisu/option/baseoption.py:690 tiramisu/option/baseoption.py:697
|
||||||
msgid ""
|
msgid ""
|
||||||
"almost one option in consistency is in a dynoptiondescription but not all"
|
"almost one option in consistency is in a dynoptiondescription but not all"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"au moins une option dans le test de consistance est dans une "
|
"au moins une option dans le test de consistance est dans une "
|
||||||
"dynoptiondescription mais pas toutes"
|
"dynoptiondescription mais pas toutes"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:676
|
#: tiramisu/option/baseoption.py:693
|
||||||
msgid "option in consistency must be in same dynoptiondescription"
|
msgid "option in consistency must be in same dynoptiondescription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"option dans une consistency doit être dans le même dynoptiondescription"
|
"option dans une consistency doit être dans le même dynoptiondescription"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:683
|
#: tiramisu/option/baseoption.py:700
|
||||||
msgid "cannot add consistency with itself"
|
msgid "cannot add consistency with itself"
|
||||||
msgstr "ne peut ajouter une consistency avec lui même"
|
msgstr "ne peut ajouter une consistency avec lui même"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:685
|
#: tiramisu/option/baseoption.py:702
|
||||||
msgid "every options in consistency must be multi or none"
|
msgid "every options in consistency must be multi or none"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"toutes les options d'une consistency doivent être multi ou ne pas l'être"
|
"toutes les options d'une consistency doivent être multi ou ne pas l'être"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:689
|
#: tiramisu/option/baseoption.py:706
|
||||||
msgid "consistency {0} not available for this option"
|
msgid "consistency {0} not available for this option"
|
||||||
msgstr "consistency {0} non valable pour cette option"
|
msgstr "consistency {0} non valable pour cette option"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:717
|
#: tiramisu/option/baseoption.py:735
|
||||||
msgid "same value for {0} and {1}, should be different"
|
msgid "same value for {0} and {1}, should be different"
|
||||||
msgstr "même valeur pour {0} et {1}, devrait être différent"
|
msgstr "même valeur pour {0} et {1}, devrait être différent"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:719
|
#: tiramisu/option/baseoption.py:737
|
||||||
msgid "same value for {0} and {1}, must be different"
|
msgid "same value for {0} and {1}, must be different"
|
||||||
msgstr "même valeur pour {0} et {1}, doit être différent"
|
msgstr "même valeur pour {0} et {1}, doit être différent"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:776
|
#: tiramisu/option/baseoption.py:794
|
||||||
msgid "default value not allowed if option: {0} is calculated"
|
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"
|
msgstr "la valeur par défaut n'est pas possible si l'option {0} est calculée"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:798
|
#: tiramisu/option/baseoption.py:816
|
||||||
msgid "malformed requirements type for option: {0}, must be a dict"
|
msgid "malformed requirements type for option: {0}, must be a dict"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"type requirements malformé pour l'option : {0}, doit être un dictionnaire"
|
"type requirements malformé pour l'option : {0}, doit être un dictionnaire"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:804
|
#: tiramisu/option/baseoption.py:822
|
||||||
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
|
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés pour l'option : {0} clefs inconnues {1}, doit "
|
"requirements mal formés pour l'option : {0} clefs inconnues {1}, doit "
|
||||||
"seulement avoir {2}"
|
"seulement avoir {2}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:815
|
#: tiramisu/option/baseoption.py:833
|
||||||
msgid ""
|
msgid ""
|
||||||
"malformed requirements for option: {0} require must have option, expected "
|
"malformed requirements for option: {0} require must have option, expected "
|
||||||
"and action keys"
|
"and action keys"
|
||||||
|
@ -296,49 +296,49 @@ msgstr ""
|
||||||
"requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
|
"requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
|
||||||
"option, expected et action"
|
"option, expected et action"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:819
|
#: tiramisu/option/baseoption.py:837
|
||||||
msgid ""
|
msgid ""
|
||||||
"malformed requirements for option: {0} action cannot be force_store_value"
|
"malformed requirements for option: {0} action cannot be force_store_value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés pour l'option : {0} action ne peut pas être "
|
"requirements mal formés pour l'option : {0} action ne peut pas être "
|
||||||
"force_store_value"
|
"force_store_value"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:824
|
#: tiramisu/option/baseoption.py:842
|
||||||
msgid "malformed requirements for option: {0} inverse must be boolean"
|
msgid "malformed requirements for option: {0} inverse must be boolean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés pour l'option : {0} inverse doit être un booléen"
|
"requirements mal formés pour l'option : {0} inverse doit être un booléen"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:828
|
#: tiramisu/option/baseoption.py:846
|
||||||
msgid "malformed requirements for option: {0} transitive must be boolean"
|
msgid "malformed requirements for option: {0} transitive must be boolean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés pour l'option : {0} transitive doit être booléen"
|
"requirements mal formés pour l'option : {0} transitive doit être booléen"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:832
|
#: tiramisu/option/baseoption.py:850
|
||||||
msgid "malformed requirements for option: {0} same_action must be boolean"
|
msgid "malformed requirements for option: {0} same_action must be boolean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés pour l'option : {0} same_action doit être un booléen"
|
"requirements mal formés pour l'option : {0} same_action doit être un booléen"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:836
|
#: tiramisu/option/baseoption.py:854
|
||||||
msgid "malformed requirements must be an option in option {0}"
|
msgid "malformed requirements must be an option in option {0}"
|
||||||
msgstr "requirements mal formés doit être une option dans l'option {0}"
|
msgstr "requirements mal formés doit être une option dans l'option {0}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:839
|
#: tiramisu/option/baseoption.py:857
|
||||||
msgid "malformed requirements option {0} must not be a multi for {1}"
|
msgid "malformed requirements option {0} must not be a multi for {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés pour l'option {0} ne doit pas être une multi pour {1}"
|
"requirements mal formés pour l'option {0} ne doit pas être une multi pour {1}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:846
|
#: tiramisu/option/baseoption.py:864
|
||||||
msgid ""
|
msgid ""
|
||||||
"malformed requirements second argument must be valid for option {0}: {1}"
|
"malformed requirements second argument must be valid for option {0}: {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"requirements mal formés deuxième argument doit être valide pour l'option "
|
"requirements mal formés deuxième argument doit être valide pour l'option "
|
||||||
"{0} : {1}"
|
"{0} : {1}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:851
|
#: tiramisu/option/baseoption.py:869
|
||||||
msgid "inconsistency in action types for option: {0} action: {1}"
|
msgid "inconsistency in action types for option: {0} action: {1}"
|
||||||
msgstr "incohérence dans les types action pour l'option : {0} action {1}"
|
msgstr "incohérence dans les types action pour l'option : {0} action {1}"
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:879
|
#: tiramisu/option/baseoption.py:897
|
||||||
msgid "malformed symlinkoption must be an option for symlink {0}"
|
msgid "malformed symlinkoption must be an option for symlink {0}"
|
||||||
msgstr "symlinkoption mal formé, doit être une option pour symlink {0}"
|
msgstr "symlinkoption mal formé, doit être une option pour symlink {0}"
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ msgstr ""
|
||||||
"callback d'une variable maitre ne devrait pas référencer des variables "
|
"callback d'une variable maitre ne devrait pas référencer des variables "
|
||||||
"esclaves"
|
"esclaves"
|
||||||
|
|
||||||
#: tiramisu/option/masterslave.py:258
|
#: tiramisu/option/masterslave.py:259
|
||||||
msgid "invalid len for the slave: {0} which has {1} as master"
|
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"
|
msgstr "longueur invalide pour une esclave : {0} qui a {1} comme maître"
|
||||||
|
|
||||||
|
@ -462,8 +462,8 @@ msgid "invalid port"
|
||||||
msgstr "port invalide"
|
msgstr "port invalide"
|
||||||
|
|
||||||
#: tiramisu/option/option.py:293
|
#: tiramisu/option/option.py:293
|
||||||
msgid "invalid port, must be an between {0} and {1}"
|
msgid "invalid port, must be an integer between {0} and {1}"
|
||||||
msgstr "port invalide, port doit être entre {0} et {1}"
|
msgstr "port invalide, port doit être nombre entre {0} et {1}"
|
||||||
|
|
||||||
#: tiramisu/option/option.py:306
|
#: tiramisu/option/option.py:306
|
||||||
msgid "invalid network address"
|
msgid "invalid network address"
|
||||||
|
@ -664,7 +664,7 @@ msgstr "tentative d'accès à une option nommée : {0} avec les propriétés {1}
|
||||||
msgid "permissive must be a tuple"
|
msgid "permissive must be a tuple"
|
||||||
msgstr "permissive doit être un tuple"
|
msgstr "permissive doit être un tuple"
|
||||||
|
|
||||||
#: tiramisu/setting.py:508 tiramisu/value.py:426
|
#: tiramisu/setting.py:508 tiramisu/value.py:437
|
||||||
msgid "invalid generic owner {0}"
|
msgid "invalid generic owner {0}"
|
||||||
msgstr "invalide owner générique {0}"
|
msgstr "invalide owner générique {0}"
|
||||||
|
|
||||||
|
@ -680,52 +680,56 @@ msgstr ""
|
||||||
msgid "option '{0}' has requirement's property error: {1} {2}"
|
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}"
|
msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}"
|
||||||
|
|
||||||
#: tiramisu/storage/__init__.py:48
|
#: tiramisu/storage/__init__.py:49
|
||||||
msgid "storage_type is already set, cannot rebind it"
|
msgid "storage_type is already set, cannot rebind it"
|
||||||
msgstr "storage_type est déjà défini, impossible de le redéfinir"
|
msgstr "storage_type est déjà défini, impossible de le redéfinir"
|
||||||
|
|
||||||
#: tiramisu/storage/__init__.py:59
|
#: tiramisu/storage/__init__.py:60
|
||||||
msgid "cannot import the storage {0}"
|
msgid "cannot import the storage {0}"
|
||||||
msgstr "ne peut pas importer le stockage {0}"
|
msgstr "ne peut pas importer le stockage {0}"
|
||||||
|
|
||||||
#: tiramisu/storage/__init__.py:90
|
#: tiramisu/storage/__init__.py:93
|
||||||
msgid "option {0} not already exists in storage {1}"
|
msgid "option {0} not already exists in storage {1}"
|
||||||
msgstr "option {0} n'existe pas dans l'espace de stockage {1}"
|
msgstr "option {0} n'existe pas dans l'espace de stockage {1}"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:99
|
#: tiramisu/storage/__init__.py:128
|
||||||
|
msgid "unable to get storages:"
|
||||||
|
msgstr "impossible de récupérer les storages :"
|
||||||
|
|
||||||
|
#: tiramisu/storage/dictionary/option.py:96
|
||||||
msgid "invalid default_multi value {0} for option {1}: {2}"
|
msgid "invalid default_multi value {0} for option {1}: {2}"
|
||||||
msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
|
msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:141
|
#: tiramisu/storage/dictionary/option.py:138
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:434 tiramisu/value.py:490
|
#: tiramisu/storage/sqlalchemy/option.py:431 tiramisu/value.py:501
|
||||||
msgid "information's item not found: {0}"
|
msgid "information's item not found: {0}"
|
||||||
msgstr "aucune config spécifiée alors que c'est nécessaire"
|
msgstr "aucune config spécifiée alors que c'est nécessaire"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:362
|
#: tiramisu/storage/dictionary/option.py:359
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:478
|
#: tiramisu/storage/sqlalchemy/option.py:475
|
||||||
msgid "no option for path {0}"
|
msgid "no option for path {0}"
|
||||||
msgstr "pas d'option pour le chemin {0}"
|
msgstr "pas d'option pour le chemin {0}"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:368
|
#: tiramisu/storage/dictionary/option.py:365
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:485
|
#: tiramisu/storage/sqlalchemy/option.py:482
|
||||||
msgid "no option {0} found"
|
msgid "no option {0} found"
|
||||||
msgstr "pas d'option {0} trouvée"
|
msgstr "pas d'option {0} trouvée"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:417
|
#: tiramisu/storage/dictionary/option.py:414
|
||||||
msgid "cannot find dynpath"
|
msgid "cannot find dynpath"
|
||||||
msgstr "ne peut trouver le dynpath"
|
msgstr "ne peut trouver le dynpath"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:507
|
#: tiramisu/storage/dictionary/option.py:504
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:630
|
#: tiramisu/storage/sqlalchemy/option.py:627
|
||||||
msgid "suffix and context needed if it's a dyn option"
|
msgid "suffix and context needed if it's a dyn option"
|
||||||
msgstr "suffix et context obligatoire si c'est une option dynamique"
|
msgstr "suffix et context obligatoire si c'est une option dynamique"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:520
|
#: tiramisu/storage/dictionary/option.py:517
|
||||||
msgid "{0} instance has no attribute '_readonly'"
|
msgid "{0} instance has no attribute '_readonly'"
|
||||||
msgstr "{0} instance n'a pas l'attribut '_readonly'"
|
msgstr "{0} instance n'a pas l'attribut '_readonly'"
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:534
|
#: tiramisu/storage/dictionary/option.py:531
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:660
|
#: tiramisu/storage/sqlalchemy/option.py:657
|
||||||
msgid "unknown Option {0} in OptionDescription {1}"
|
msgid "unknown Option {0} in OptionDescription {1}"
|
||||||
msgstr "Option {0} inconnue pour l'OptionDescription {1}"
|
msgstr "Option {0} inconnue pour l'OptionDescription {1}"
|
||||||
|
|
||||||
|
@ -747,52 +751,52 @@ msgstr "un espace de stockage dictionary ne peut être persistant"
|
||||||
msgid "optiondescription has no value"
|
msgid "optiondescription has no value"
|
||||||
msgstr "une optiondescription n'a pas de valeur"
|
msgstr "une optiondescription n'a pas de valeur"
|
||||||
|
|
||||||
#: tiramisu/value.py:325
|
#: tiramisu/value.py:329
|
||||||
msgid "you should only set value with config"
|
msgid "you should only set value with config"
|
||||||
msgstr "vous devez seul affecter une valeur avec un config"
|
msgstr "vous devez seul affecter une valeur avec un config"
|
||||||
|
|
||||||
#: tiramisu/value.py:395
|
#: tiramisu/value.py:406
|
||||||
msgid "owner only avalaible for an option"
|
msgid "owner only avalaible for an option"
|
||||||
msgstr "owner seulement possible pour une option"
|
msgstr "owner seulement possible pour une option"
|
||||||
|
|
||||||
#: tiramisu/value.py:433
|
#: tiramisu/value.py:444
|
||||||
msgid "no value for {0} cannot change owner to {1}"
|
msgid "no value for {0} cannot change owner to {1}"
|
||||||
msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}"
|
msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}"
|
||||||
|
|
||||||
#: tiramisu/value.py:531
|
#: tiramisu/value.py:542
|
||||||
msgid "can force cache only if cache is actived in config"
|
msgid "can force cache only if cache is actived in config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"peut force la mise en cache seulement si le cache est activé dans la config"
|
"peut force la mise en cache seulement si le cache est activé dans la config"
|
||||||
|
|
||||||
#: tiramisu/value.py:570
|
#: tiramisu/value.py:581
|
||||||
msgid "{0} is already a Multi "
|
msgid "{0} is already a Multi "
|
||||||
msgstr "{0} est déjà une Multi"
|
msgstr "{0} est déjà une Multi"
|
||||||
|
|
||||||
#: tiramisu/value.py:636
|
#: tiramisu/value.py:651
|
||||||
msgid "cannot append a value on a multi option {0} which is a slave"
|
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"
|
msgstr "ne peut ajouter une valeur sur l'option multi {0} qui est une esclave"
|
||||||
|
|
||||||
#: tiramisu/value.py:655
|
#: tiramisu/value.py:675
|
||||||
msgid "cannot sort multi option {0} if master or slave"
|
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"
|
msgstr "ne peut trier une option multi {0} pour une maître ou une esclave"
|
||||||
|
|
||||||
#: tiramisu/value.py:659
|
#: tiramisu/value.py:679
|
||||||
msgid "cmp is not permitted in python v3 or greater"
|
msgid "cmp is not permitted in python v3 or greater"
|
||||||
msgstr "cmp n'est pas permis en python v3 ou supérieure"
|
msgstr "cmp n'est pas permis en python v3 ou supérieure"
|
||||||
|
|
||||||
#: tiramisu/value.py:668
|
#: tiramisu/value.py:688
|
||||||
msgid "cannot reverse multi option {0} if master or slave"
|
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"
|
msgstr "ne peut inverser une option multi {0} pour une maître ou une esclave"
|
||||||
|
|
||||||
#: tiramisu/value.py:676
|
#: tiramisu/value.py:696
|
||||||
msgid "cannot insert multi option {0} if master or slave"
|
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"
|
msgstr "ne peut insérer une option multi {0} pour une maître ou une esclave"
|
||||||
|
|
||||||
#: tiramisu/value.py:684
|
#: tiramisu/value.py:709
|
||||||
msgid "cannot extend multi option {0} if master or slave"
|
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"
|
msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave"
|
||||||
|
|
||||||
#: tiramisu/value.py:712
|
#: tiramisu/value.py:741
|
||||||
msgid "cannot pop a value on a multi option {0} which is a slave"
|
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"
|
msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave"
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"POT-Creation-Date: 2014-12-07 14:44+CET\n"
|
"POT-Creation-Date: 2015-04-18 22:40+CEST\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -19,92 +19,92 @@ msgstr ""
|
||||||
msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
|
msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:59
|
#: tiramisu/config.py:62
|
||||||
msgid "descr must be an optiondescription, not {0}"
|
msgid "descr must be an optiondescription, not {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:139
|
#: tiramisu/config.py:142
|
||||||
msgid "unknown group_type: {0}"
|
msgid "unknown group_type: {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:178 tiramisu/setting.py:320 tiramisu/value.py:54
|
#: tiramisu/config.py:181 tiramisu/setting.py:320 tiramisu/value.py:54
|
||||||
#: tiramisu/value.py:605
|
#: tiramisu/value.py:616
|
||||||
msgid "the context does not exist anymore"
|
msgid "the context does not exist anymore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:183
|
#: tiramisu/config.py:186
|
||||||
msgid "no option description found for this config (may be GroupConfig)"
|
msgid "no option description found for this config (may be GroupConfig)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:211
|
#: tiramisu/config.py:214
|
||||||
msgid "can't assign to an OptionDescription"
|
msgid "can't assign to an OptionDescription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:340
|
#: tiramisu/config.py:343
|
||||||
msgid "unknown type_ type {0}for _find"
|
msgid "unknown type_ type {0}for _find"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:380
|
#: tiramisu/config.py:383
|
||||||
msgid "no option found in config with these criteria"
|
msgid "no option found in config with these criteria"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:430
|
#: tiramisu/config.py:433
|
||||||
msgid "make_dict can't filtering with value without option"
|
msgid "make_dict can't filtering with value without option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:449
|
#: tiramisu/config.py:452
|
||||||
msgid "unexpected path {0}, should start with {1}"
|
msgid "unexpected path {0}, should start with {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:519
|
#: tiramisu/config.py:522
|
||||||
msgid "opt in getowner must be an option not {0}"
|
msgid "opt in getowner must be an option not {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:564
|
#: tiramisu/config.py:567
|
||||||
msgid "cannot serialize Config with MetaConfig"
|
msgid "cannot serialize Config with MetaConfig"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:578
|
#: tiramisu/config.py:581
|
||||||
msgid "this storage is not serialisable, could be a none persistent storage"
|
msgid "this storage is not serialisable, could be a none persistent storage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:631
|
#: tiramisu/config.py:645
|
||||||
msgid "invalid name: {0} for config"
|
msgid "invalid name: {0} for config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:655
|
#: tiramisu/config.py:669
|
||||||
msgid "groupconfig's children must be a list"
|
msgid "groupconfig's children must be a list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:659
|
#: tiramisu/config.py:673
|
||||||
msgid "groupconfig's children must be Config, MetaConfig or GroupConfig"
|
msgid "groupconfig's children must be Config, MetaConfig or GroupConfig"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:662
|
#: tiramisu/config.py:676
|
||||||
msgid "name must be set to config before creating groupconfig"
|
msgid "name must be set to config before creating groupconfig"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:670
|
#: tiramisu/config.py:684
|
||||||
msgid "config name must be uniq in groupconfig for {0}"
|
msgid "config name must be uniq in groupconfig for {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:785
|
#: tiramisu/config.py:799
|
||||||
msgid "metaconfig's children should be config, not {0}"
|
msgid "metaconfig's children should be config, not {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:789
|
#: tiramisu/config.py:803
|
||||||
msgid "child has already a metaconfig's"
|
msgid "child has already a metaconfig's"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:793
|
#: tiramisu/config.py:807
|
||||||
msgid "all config in metaconfig must have the same optiondescription"
|
msgid "all config in metaconfig must have the same optiondescription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:805
|
#: tiramisu/config.py:819
|
||||||
msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config"
|
msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/config.py:811
|
#: tiramisu/config.py:825
|
||||||
msgid "force_default and force_dont_change_value cannot be set together"
|
msgid "force_default and force_dont_change_value cannot be set together"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -156,143 +156,143 @@ msgstr ""
|
||||||
msgid "invalid properties type {0} for {1}, must be a tuple"
|
msgid "invalid properties type {0} for {1}, must be a tuple"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:145
|
#: tiramisu/option/baseoption.py:148
|
||||||
msgid "params defined for a callback function but no callback defined yet for option {0}"
|
msgid "params defined for a callback function but no callback defined yet for option {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:150
|
#: tiramisu/option/baseoption.py:153
|
||||||
msgid "a callback is already set for option {0}, cannot set another one's"
|
msgid "a callback is already set for option {0}, cannot set another one's"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:277
|
#: tiramisu/option/baseoption.py:280
|
||||||
msgid "cannot serialize Option, only in OptionDescription"
|
msgid "cannot serialize Option, only in OptionDescription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:363
|
#: tiramisu/option/baseoption.py:366
|
||||||
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
|
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:528 tiramisu/option/baseoption.py:571
|
#: tiramisu/option/baseoption.py:545 tiramisu/option/baseoption.py:588
|
||||||
msgid "invalid value for option {0}: {1}"
|
msgid "invalid value for option {0}: {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:541
|
#: tiramisu/option/baseoption.py:558
|
||||||
msgid "do_validation for {0}: error in value"
|
msgid "do_validation for {0}: error in value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:547
|
#: tiramisu/option/baseoption.py:564
|
||||||
msgid "do_validation for {0}: warning in value"
|
msgid "do_validation for {0}: warning in value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:557
|
#: tiramisu/option/baseoption.py:574
|
||||||
msgid "do_validation for {0}: error in consistency"
|
msgid "do_validation for {0}: error in consistency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:561
|
#: tiramisu/option/baseoption.py:578
|
||||||
msgid "do_validation for {0}: warning in consistency"
|
msgid "do_validation for {0}: warning in consistency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:565
|
#: tiramisu/option/baseoption.py:582
|
||||||
msgid "warning on the value of the option {0}: {1}"
|
msgid "warning on the value of the option {0}: {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:583 tiramisu/option/baseoption.py:592
|
#: tiramisu/option/baseoption.py:600 tiramisu/option/baseoption.py:609
|
||||||
msgid "invalid value {0} for option {1} which must be a list"
|
msgid "invalid value {0} for option {1} which must be a list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:598
|
#: tiramisu/option/baseoption.py:615
|
||||||
msgid "invalid value {0} for option {1} which must be a list of list"
|
msgid "invalid value {0} for option {1} which must be a list of list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:651
|
#: tiramisu/option/baseoption.py:668
|
||||||
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
|
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:663
|
#: tiramisu/option/baseoption.py:680
|
||||||
msgid "unknow parameter {0} in consistency"
|
msgid "unknow parameter {0} in consistency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:670
|
#: tiramisu/option/baseoption.py:687
|
||||||
msgid "consistency must be set with an option"
|
msgid "consistency must be set with an option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:673 tiramisu/option/baseoption.py:680
|
#: tiramisu/option/baseoption.py:690 tiramisu/option/baseoption.py:697
|
||||||
msgid "almost one option in consistency is in a dynoptiondescription but not all"
|
msgid "almost one option in consistency is in a dynoptiondescription but not all"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:676
|
#: tiramisu/option/baseoption.py:693
|
||||||
msgid "option in consistency must be in same dynoptiondescription"
|
msgid "option in consistency must be in same dynoptiondescription"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:683
|
#: tiramisu/option/baseoption.py:700
|
||||||
msgid "cannot add consistency with itself"
|
msgid "cannot add consistency with itself"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:685
|
#: tiramisu/option/baseoption.py:702
|
||||||
msgid "every options in consistency must be multi or none"
|
msgid "every options in consistency must be multi or none"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:689
|
#: tiramisu/option/baseoption.py:706
|
||||||
msgid "consistency {0} not available for this option"
|
msgid "consistency {0} not available for this option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:717
|
#: tiramisu/option/baseoption.py:735
|
||||||
msgid "same value for {0} and {1}, should be different"
|
msgid "same value for {0} and {1}, should be different"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:719
|
#: tiramisu/option/baseoption.py:737
|
||||||
msgid "same value for {0} and {1}, must be different"
|
msgid "same value for {0} and {1}, must be different"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:776
|
#: tiramisu/option/baseoption.py:794
|
||||||
msgid "default value not allowed if option: {0} is calculated"
|
msgid "default value not allowed if option: {0} is calculated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:798
|
#: tiramisu/option/baseoption.py:816
|
||||||
msgid "malformed requirements type for option: {0}, must be a dict"
|
msgid "malformed requirements type for option: {0}, must be a dict"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:804
|
#: tiramisu/option/baseoption.py:822
|
||||||
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
|
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:815
|
#: tiramisu/option/baseoption.py:833
|
||||||
msgid "malformed requirements for option: {0} require must have option, expected and action keys"
|
msgid "malformed requirements for option: {0} require must have option, expected and action keys"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:819
|
#: tiramisu/option/baseoption.py:837
|
||||||
msgid "malformed requirements for option: {0} action cannot be force_store_value"
|
msgid "malformed requirements for option: {0} action cannot be force_store_value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:824
|
#: tiramisu/option/baseoption.py:842
|
||||||
msgid "malformed requirements for option: {0} inverse must be boolean"
|
msgid "malformed requirements for option: {0} inverse must be boolean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:828
|
#: tiramisu/option/baseoption.py:846
|
||||||
msgid "malformed requirements for option: {0} transitive must be boolean"
|
msgid "malformed requirements for option: {0} transitive must be boolean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:832
|
#: tiramisu/option/baseoption.py:850
|
||||||
msgid "malformed requirements for option: {0} same_action must be boolean"
|
msgid "malformed requirements for option: {0} same_action must be boolean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:836
|
#: tiramisu/option/baseoption.py:854
|
||||||
msgid "malformed requirements must be an option in option {0}"
|
msgid "malformed requirements must be an option in option {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:839
|
#: tiramisu/option/baseoption.py:857
|
||||||
msgid "malformed requirements option {0} must not be a multi for {1}"
|
msgid "malformed requirements option {0} must not be a multi for {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:846
|
#: tiramisu/option/baseoption.py:864
|
||||||
msgid "malformed requirements second argument must be valid for option {0}: {1}"
|
msgid "malformed requirements second argument must be valid for option {0}: {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:851
|
#: tiramisu/option/baseoption.py:869
|
||||||
msgid "inconsistency in action types for option: {0} action: {1}"
|
msgid "inconsistency in action types for option: {0} action: {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/baseoption.py:879
|
#: tiramisu/option/baseoption.py:897
|
||||||
msgid "malformed symlinkoption must be an option for symlink {0}"
|
msgid "malformed symlinkoption must be an option for symlink {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ msgstr ""
|
||||||
msgid "callback of master's option shall not refered a slave's ones"
|
msgid "callback of master's option shall not refered a slave's ones"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/masterslave.py:258
|
#: tiramisu/option/masterslave.py:259
|
||||||
msgid "invalid len for the slave: {0} which has {1} as master"
|
msgid "invalid len for the slave: {0} which has {1} as master"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -410,7 +410,7 @@ msgid "invalid port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/option.py:293
|
#: tiramisu/option/option.py:293
|
||||||
msgid "invalid port, must be an between {0} and {1}"
|
msgid "invalid port, must be an integer between {0} and {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/option/option.py:306
|
#: tiramisu/option/option.py:306
|
||||||
|
@ -605,7 +605,7 @@ msgstr ""
|
||||||
msgid "permissive must be a tuple"
|
msgid "permissive must be a tuple"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/setting.py:508 tiramisu/value.py:426
|
#: tiramisu/setting.py:508 tiramisu/value.py:437
|
||||||
msgid "invalid generic owner {0}"
|
msgid "invalid generic owner {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -617,52 +617,56 @@ msgstr ""
|
||||||
msgid "option '{0}' has requirement's property error: {1} {2}"
|
msgid "option '{0}' has requirement's property error: {1} {2}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/__init__.py:48
|
#: tiramisu/storage/__init__.py:49
|
||||||
msgid "storage_type is already set, cannot rebind it"
|
msgid "storage_type is already set, cannot rebind it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/__init__.py:59
|
#: tiramisu/storage/__init__.py:60
|
||||||
msgid "cannot import the storage {0}"
|
msgid "cannot import the storage {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/__init__.py:90
|
#: tiramisu/storage/__init__.py:93
|
||||||
msgid "option {0} not already exists in storage {1}"
|
msgid "option {0} not already exists in storage {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:99
|
#: tiramisu/storage/__init__.py:128
|
||||||
|
msgid "unable to get storages:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: tiramisu/storage/dictionary/option.py:96
|
||||||
msgid "invalid default_multi value {0} for option {1}: {2}"
|
msgid "invalid default_multi value {0} for option {1}: {2}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:141
|
#: tiramisu/storage/dictionary/option.py:138
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:434 tiramisu/value.py:490
|
#: tiramisu/storage/sqlalchemy/option.py:431 tiramisu/value.py:501
|
||||||
msgid "information's item not found: {0}"
|
msgid "information's item not found: {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:362
|
#: tiramisu/storage/dictionary/option.py:359
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:478
|
#: tiramisu/storage/sqlalchemy/option.py:475
|
||||||
msgid "no option for path {0}"
|
msgid "no option for path {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:368
|
#: tiramisu/storage/dictionary/option.py:365
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:485
|
#: tiramisu/storage/sqlalchemy/option.py:482
|
||||||
msgid "no option {0} found"
|
msgid "no option {0} found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:417
|
#: tiramisu/storage/dictionary/option.py:414
|
||||||
msgid "cannot find dynpath"
|
msgid "cannot find dynpath"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:507
|
#: tiramisu/storage/dictionary/option.py:504
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:630
|
#: tiramisu/storage/sqlalchemy/option.py:627
|
||||||
msgid "suffix and context needed if it's a dyn option"
|
msgid "suffix and context needed if it's a dyn option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:520
|
#: tiramisu/storage/dictionary/option.py:517
|
||||||
msgid "{0} instance has no attribute '_readonly'"
|
msgid "{0} instance has no attribute '_readonly'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/storage/dictionary/option.py:534
|
#: tiramisu/storage/dictionary/option.py:531
|
||||||
#: tiramisu/storage/sqlalchemy/option.py:660
|
#: tiramisu/storage/sqlalchemy/option.py:657
|
||||||
msgid "unknown Option {0} in OptionDescription {1}"
|
msgid "unknown Option {0} in OptionDescription {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -683,51 +687,51 @@ msgstr ""
|
||||||
msgid "optiondescription has no value"
|
msgid "optiondescription has no value"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:325
|
#: tiramisu/value.py:329
|
||||||
msgid "you should only set value with config"
|
msgid "you should only set value with config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:395
|
#: tiramisu/value.py:406
|
||||||
msgid "owner only avalaible for an option"
|
msgid "owner only avalaible for an option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:433
|
#: tiramisu/value.py:444
|
||||||
msgid "no value for {0} cannot change owner to {1}"
|
msgid "no value for {0} cannot change owner to {1}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:531
|
#: tiramisu/value.py:542
|
||||||
msgid "can force cache only if cache is actived in config"
|
msgid "can force cache only if cache is actived in config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:570
|
#: tiramisu/value.py:581
|
||||||
msgid "{0} is already a Multi "
|
msgid "{0} is already a Multi "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:636
|
#: tiramisu/value.py:651
|
||||||
msgid "cannot append a value on a multi option {0} which is a slave"
|
msgid "cannot append a value on a multi option {0} which is a slave"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:655
|
#: tiramisu/value.py:675
|
||||||
msgid "cannot sort multi option {0} if master or slave"
|
msgid "cannot sort multi option {0} if master or slave"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:659
|
#: tiramisu/value.py:679
|
||||||
msgid "cmp is not permitted in python v3 or greater"
|
msgid "cmp is not permitted in python v3 or greater"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:668
|
#: tiramisu/value.py:688
|
||||||
msgid "cannot reverse multi option {0} if master or slave"
|
msgid "cannot reverse multi option {0} if master or slave"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:676
|
#: tiramisu/value.py:696
|
||||||
msgid "cannot insert multi option {0} if master or slave"
|
msgid "cannot insert multi option {0} if master or slave"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:684
|
#: tiramisu/value.py:709
|
||||||
msgid "cannot extend multi option {0} if master or slave"
|
msgid "cannot extend multi option {0} if master or slave"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: tiramisu/value.py:712
|
#: tiramisu/value.py:741
|
||||||
msgid "cannot pop a value on a multi option {0} which is a slave"
|
msgid "cannot pop a value on a multi option {0} which is a slave"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue