diff options
author | Jan Cholasta <jcholast@redhat.com> | 2016-06-22 15:15:32 +0200 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2016-06-27 16:42:42 +0200 |
commit | ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b (patch) | |
tree | 861b0ec75029572cf367f82b1f97cc08861a8699 | |
parent | 7b8247a485081a6f1f5201e286ac17228f976355 (diff) | |
download | freeipa-ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b.tar.gz freeipa-ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b.tar.xz freeipa-ac8e8ecdd3f75c104e30f68630290b0b1ad5a40b.zip |
schema: fix param default value handling
Advertise param's default value even when `autofill` is False. When
`autofill` is False, set `alwaysask` to True in the schema, as it is
semantically equivallent and removes redundancy.
This fixes default value disappearing in CLI for some params.
https://fedorahosted.org/freeipa/ticket/4739
Reviewed-By: David Kupka <dkupka@redhat.com>
-rw-r--r-- | ipaclient/remote_plugins/schema.py | 6 | ||||
-rw-r--r-- | ipaserver/plugins/schema.py | 23 |
2 files changed, 16 insertions, 13 deletions
diff --git a/ipaclient/remote_plugins/schema.py b/ipaclient/remote_plugins/schema.py index c21da5ff0..b944fb08f 100644 --- a/ipaclient/remote_plugins/schema.py +++ b/ipaclient/remote_plugins/schema.py @@ -213,7 +213,6 @@ def _create_param(meta): for key, value in meta.items(): if key in ('alwaysask', - 'autofill', 'doc', 'label', 'multivalue', @@ -229,11 +228,9 @@ def _create_param(meta): kwargs[key] = value elif key == 'default': default = value - kwargs['autofill'] = True elif key == 'default_from_param': kwargs['default_from'] = DefaultFrom(_nope, *(str(k) for k in value)) - kwargs['autofill'] = True elif key in ('exclude', 'include'): kwargs[key] = tuple(str(v) for v in value) @@ -246,6 +243,9 @@ def _create_param(meta): default = tmp._convert_scalar(default[0]) kwargs['default'] = default + if 'default' in kwargs or 'default_from' in kwargs: + kwargs['autofill'] = not kwargs.pop('alwaysask', False) + param = cls(str(meta['name']), **kwargs) if sensitive: diff --git a/ipaserver/plugins/schema.py b/ipaserver/plugins/schema.py index a67d7b243..c3a0e60ba 100644 --- a/ipaserver/plugins/schema.py +++ b/ipaserver/plugins/schema.py @@ -542,23 +542,26 @@ class param(BaseParam): 'include'): obj[key] = list(unicode(v) for v in value) if isinstance(metaobj, Command): - if key in ('alwaysask', - 'confirm'): + if key == 'alwaysask': + obj.setdefault(key, value) + elif key == 'confirm': obj[key] = value elif key in ('cli_metavar', 'cli_name', 'option_group'): obj[key] = unicode(value) elif key == 'default': - if param.autofill: - if param.multivalue: - obj[key] = [unicode(v) for v in value] - else: - obj[key] = [unicode(value)] + if param.multivalue: + obj[key] = [unicode(v) for v in value] + else: + obj[key] = [unicode(value)] + if not param.autofill: + obj['alwaysask'] = True elif key == 'default_from': - if param.autofill: - obj['default_from_param'] = list(unicode(k) - for k in value.keys) + obj['default_from_param'] = list(unicode(k) + for k in value.keys) + if not param.autofill: + obj['alwaysask'] = True elif key in ('exponential', 'normalizer', 'only_absolute', |