summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/crud.py5
-rw-r--r--ipalib/parameters.py3
-rw-r--r--tests/test_ipalib/test_parameters.py11
3 files changed, 15 insertions, 4 deletions
diff --git a/ipalib/crud.py b/ipalib/crud.py
index d34a7c57c..345fc2700 100644
--- a/ipalib/crud.py
+++ b/ipalib/crud.py
@@ -50,13 +50,14 @@ class Del(frontend.Method):
for option in self.takes_options:
yield option
+
class Mod(frontend.Method):
def get_args(self):
yield self.obj.primary_key
def get_options(self):
for param in self.obj.params_minus_pk():
- yield param.clone(required=False)
+ yield param.clone(required=False, query=True)
for option in self.takes_options:
yield option
@@ -67,7 +68,7 @@ class Find(frontend.Method):
def get_options(self):
for param in self.obj.params_minus_pk():
- yield param.clone(required=False)
+ yield param.clone(required=False, query=True)
for option in self.takes_options:
yield option
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 4d46297c0..ff088ff80 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -229,6 +229,7 @@ class Param(ReadOnly):
('default_from', DefaultFrom, None),
('create_default', callable, None),
('autofill', bool, False),
+ ('query', bool, False),
('flags', frozenset, frozenset()),
# The 'default' kwarg gets appended in Param.__init__():
@@ -489,6 +490,8 @@ class Param(ReadOnly):
:param value: A proposed value for this parameter.
"""
+ if self.query:
+ return
if value is None:
if self.required:
raise RequirementError(name=self.name)
diff --git a/tests/test_ipalib/test_parameters.py b/tests/test_ipalib/test_parameters.py
index aeaed2a42..f9e370fe0 100644
--- a/tests/test_ipalib/test_parameters.py
+++ b/tests/test_ipalib/test_parameters.py
@@ -164,6 +164,7 @@ class test_Param(ClassChecker):
assert o.create_default is None
assert o._get_default is None
assert o.autofill is False
+ assert o.query is False
assert o.flags == frozenset()
# Test that ValueError is raised when a kwarg from a subclass
@@ -366,15 +367,21 @@ class test_Param(ClassChecker):
Test the `ipalib.parameters.Param.validate` method.
"""
- # Test with required=True/False:
+ # Test in default state (with no rules, no kwarg):
o = self.cls('my_param')
- assert o.required is True
e = raises(errors2.RequirementError, o.validate, None)
assert e.name == 'my_param'
+
+ # Test with required=False
o = self.cls('my_param', required=False)
assert o.required is False
assert o.validate(None) is None
+ # Test with query=True:
+ o = self.cls('my_param', query=True)
+ assert o.query is True
+ assert o.validate(None) is None
+
# Test with multivalue=True:
o = self.cls('my_param', multivalue=True)
e = raises(TypeError, o.validate, [])