summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/crud.py12
-rw-r--r--ipalib/parameters.py8
2 files changed, 16 insertions, 4 deletions
diff --git a/ipalib/crud.py b/ipalib/crud.py
index 86e175655..6df3c733d 100644
--- a/ipalib/crud.py
+++ b/ipalib/crud.py
@@ -210,9 +210,15 @@ class Search(Method):
for option in self.obj.params_minus(self.args):
if 'no_search' in option.flags:
continue
- yield option.clone(
- attribute=True, query=True, required=False, autofill=False
- )
+ if isinstance(option, parameters.Flag):
+ yield option.clone_retype(
+ option.name, parameters.Bool,
+ attribute=True, query=True, required=False, autofill=False
+ )
+ else:
+ yield option.clone(
+ attribute=True, query=True, required=False, autofill=False
+ )
if not self.extra_options_first:
for option in super(Search, self).get_options():
yield option
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 5c386c324..128c8a463 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -585,9 +585,15 @@ class Param(ReadOnly):
"""
Return a new `Param` instance similar to this one, but named differently
"""
+ return self.clone_retype(name, self.__class__, **overrides)
+
+ def clone_retype(self, name, klass, **overrides):
+ """
+ Return a new `Param` instance similar to this one, but of a different type
+ """
kw = dict(self.__clonekw)
kw.update(overrides)
- return self.__class__(name, *self.rules, **kw)
+ return klass(name, *self.rules, **kw)
def normalize(self, value):
"""