summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Zeleny <jzeleny@redhat.com>2011-01-25 09:06:19 -0500
committerRob Crittenden <rcritten@redhat.com>2011-01-26 09:29:39 -0500
commit6cca48cb59951db833ac517aaa1274c19e40c8d8 (patch)
treecc2bd9a08e80effd6cc4b4ef2bb4496a0e215aaf
parentc1799c836612337a13fd2301eb0911709dac4176 (diff)
downloadfreeipa-6cca48cb59951db833ac517aaa1274c19e40c8d8.tar.gz
freeipa-6cca48cb59951db833ac517aaa1274c19e40c8d8.tar.xz
freeipa-6cca48cb59951db833ac517aaa1274c19e40c8d8.zip
Add flags to enforce asking for object attribute
So far the only flag to enforce asking in interactive mode was the alwaysask attribute, which is not sufficient any more. This patch adds the ability to control for which actions the atrribute shall be asked for.
-rw-r--r--ipalib/crud.py23
-rw-r--r--ipalib/plugins/permission.py12
2 files changed, 26 insertions, 9 deletions
diff --git a/ipalib/crud.py b/ipalib/crud.py
index 76d57daef..b7a665361 100644
--- a/ipalib/crud.py
+++ b/ipalib/crud.py
@@ -141,7 +141,13 @@ class Create(Method):
for option in self.obj.params_minus(self.args):
if 'no_create' in option.flags:
continue
- yield option.clone(attribute=True)
+ if 'ask_create' in option.flags:
+ yield option.clone(
+ attribute=True, query=True, required=False,
+ autofill=False, alwaysask=True
+ )
+ else:
+ yield option.clone(attribute=True)
if not self.extra_options_first:
for option in super(Create, self).get_options():
yield option
@@ -179,7 +185,13 @@ class Update(PKQuery):
for option in self.obj.params_minus_pk():
if 'no_update' in option.flags:
continue
- yield option.clone(attribute=True, required=False, autofill=False)
+ if 'ask_update' in option.flags:
+ yield option.clone(
+ attribute=True, query=True, required=False,
+ autofill=False, alwaysask=True
+ )
+ else:
+ yield option.clone(attribute=True, required=False, autofill=False)
if not self.extra_options_first:
for option in super(Update, self).get_options():
yield option
@@ -210,7 +222,12 @@ class Search(Method):
for option in self.obj.params_minus(self.args):
if 'no_search' in option.flags:
continue
- if isinstance(option, parameters.Flag):
+ if 'ask_search' in option.flags:
+ yield option.clone(
+ attribute=True, query=True, required=False,
+ autofill=False, alwaysask=True
+ )
+ elif isinstance(option, parameters.Flag):
yield option.clone_retype(
option.name, parameters.Bool,
attribute=True, query=True, required=False, autofill=False
diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py
index e97174abf..14d7b9656 100644
--- a/ipalib/plugins/permission.py
+++ b/ipalib/plugins/permission.py
@@ -116,38 +116,38 @@ class permission(LDAPObject):
label=_('Attributes'),
doc=_('Comma-separated list of attributes'),
normalizer=lambda value: value.lower(),
- alwaysask=True,
+ flags=('ask_create', 'ask_update'),
),
StrEnum('type?',
cli_name='type',
label=_('Type'),
doc=_('Type of IPA object (user, group, host, hostgroup, service, netgroup, dns)'),
values=(u'user', u'group', u'host', u'service', u'hostgroup', u'netgroup', u'dns',),
- alwaysask=True,
+ flags=('ask_create', 'ask_update'),
),
Str('memberof?',
cli_name='memberof',
label=_('Member of group'), # FIXME: Does this label make sense?
doc=_('Target members of a group'),
- alwaysask=True,
+ flags=('ask_create', 'ask_update'),
),
Str('filter?',
cli_name='filter',
label=_('Filter'),
doc=_('Legal LDAP filter (e.g. ou=Engineering)'),
- alwaysask=True,
+ flags=('ask_create', 'ask_update'),
),
Str('subtree?',
cli_name='subtree',
label=_('Subtree'),
doc=_('Subtree to apply permissions to'),
- alwaysask=True,
+ flags=('ask_create', 'ask_update'),
),
Str('targetgroup?',
cli_name='targetgroup',
label=_('Target group'),
doc=_('User group to apply permissions to'),
- alwaysask=True,
+ flags=('ask_create', 'ask_update'),
),
)