add fullpath to make_dict
This commit is contained in:
parent
df90e74819
commit
66f24bd1c0
3 changed files with 36 additions and 7 deletions
|
@ -134,6 +134,24 @@ def test_make_dict_with_disabled_in_callback():
|
|||
assert d == {"s1.a": False, "int": 42}
|
||||
|
||||
|
||||
def test_make_dict_fullpath():
|
||||
descr = OptionDescription("root", "", [
|
||||
OptionDescription("opt", "", [
|
||||
OptionDescription("s1", "", [
|
||||
BoolOption("a", "", default=False),
|
||||
BoolOption("b", "", default=False, properties=('disabled',))]),
|
||||
OptionDescription("s2", "", [
|
||||
BoolOption("a", "", default=False),
|
||||
BoolOption("b", "", default=False)], properties=('disabled',)),
|
||||
IntOption("int", "", default=42)]),
|
||||
IntOption("introot", "", default=42)])
|
||||
config = Config(descr)
|
||||
config.read_only()
|
||||
assert config.make_dict() == {"opt.s1.a": False, "opt.int": 42, "introot": 42}
|
||||
assert config.opt.make_dict() == {"s1.a": False, "int": 42}
|
||||
assert config.opt.make_dict(fullpath=True) == {"opt.s1.a": False, "opt.int": 42}
|
||||
|
||||
|
||||
def test_find_in_config():
|
||||
"finds option in config"
|
||||
descr = make_description()
|
||||
|
|
|
@ -187,6 +187,9 @@ class SubConfig(object):
|
|||
raise ConfigError(_('the context does not exist anymore'))
|
||||
return context
|
||||
|
||||
def cfgimpl_get_context(self):
|
||||
return self._cfgimpl_get_context()
|
||||
|
||||
def cfgimpl_get_description(self):
|
||||
if self._impl_descr is None: # pragma: optional cover
|
||||
raise ConfigError(_('no option description found for this config'
|
||||
|
@ -436,7 +439,7 @@ class SubConfig(object):
|
|||
|
||||
def make_dict(self, flatten=False, _currpath=None, withoption=None,
|
||||
withvalue=undefined, force_permissive=False,
|
||||
setting_properties=undefined):
|
||||
setting_properties=undefined, fullpath=False):
|
||||
"""exports the whole config into a `dict`, for example:
|
||||
|
||||
>>> print cfg.make_dict()
|
||||
|
@ -506,21 +509,23 @@ class SubConfig(object):
|
|||
path = path[len(tmypath):]
|
||||
self._make_sub_dict(opt, path, pathsvalues, _currpath, flatten,
|
||||
force_permissive=force_permissive,
|
||||
setting_properties=setting_properties)
|
||||
setting_properties=setting_properties,
|
||||
fullpath=fullpath)
|
||||
#withoption can be set to None below !
|
||||
if withoption is None:
|
||||
for opt in self.cfgimpl_get_description().impl_getchildren():
|
||||
path = opt.impl_getname()
|
||||
self._make_sub_dict(opt, path, pathsvalues, _currpath, flatten,
|
||||
force_permissive=force_permissive,
|
||||
setting_properties=setting_properties)
|
||||
setting_properties=setting_properties,
|
||||
fullpath=fullpath)
|
||||
if _currpath == []:
|
||||
options = dict(pathsvalues)
|
||||
return options
|
||||
return pathsvalues
|
||||
|
||||
def _make_sub_dict(self, opt, path, pathsvalues, _currpath, flatten,
|
||||
setting_properties, force_permissive=False):
|
||||
setting_properties, force_permissive=False, fullpath=False):
|
||||
value = self.getattr(path,
|
||||
force_permissive=force_permissive,
|
||||
_setting_properties=setting_properties,
|
||||
|
@ -533,10 +538,14 @@ class SubConfig(object):
|
|||
pathsvalues += value.make_dict(flatten,
|
||||
_currpath + path.split('.'),
|
||||
force_permissive=force_permissive,
|
||||
setting_properties=setting_properties)
|
||||
setting_properties=setting_properties,
|
||||
fullpath=fullpath)
|
||||
else:
|
||||
if flatten:
|
||||
name = opt.impl_getname()
|
||||
else:
|
||||
if fullpath:
|
||||
name = '.'.join([self._impl_path, opt.impl_getname()])
|
||||
else:
|
||||
name = '.'.join(_currpath + [opt.impl_getname()])
|
||||
pathsvalues.append((name, value))
|
||||
|
|
|
@ -19,7 +19,9 @@ from .i18n import _
|
|||
|
||||
|
||||
def display_list(lst, separator='and'):
|
||||
if len(lst) == 1:
|
||||
if len(lst) == 0:
|
||||
return ''
|
||||
elif len(lst) == 1:
|
||||
return lst[0]
|
||||
else:
|
||||
lst_ = []
|
||||
|
|
Loading…
Reference in a new issue