diff options
author | Petr Viktorin <pviktori@redhat.com> | 2012-02-16 07:11:56 -0500 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-03-12 17:16:14 +0100 |
commit | 7cfc16ca58dfb22bc6e9cd519e6ecc7a10435fa1 (patch) | |
tree | a638850c0a1ba891376f49f5f3a2c8ced66ea696 /ipalib/parameters.py | |
parent | 1dc11a01d7e2a8e561b3a79aa97bf0939cd3fd25 (diff) | |
download | freeipa-7cfc16ca58dfb22bc6e9cd519e6ecc7a10435fa1.tar.gz freeipa-7cfc16ca58dfb22bc6e9cd519e6ecc7a10435fa1.tar.xz freeipa-7cfc16ca58dfb22bc6e9cd519e6ecc7a10435fa1.zip |
Enforce that required attributes can't be set to None in CRUD Update
The `required` parameter attribute didn't distinguish between cases
where the parameter is not given and all, and where the parameter is
given but empty. The case of updating a required attribute couldn't
be validated properly, because when it is given but empty, validators
don't run.
This patch introduces a new flag, 'nonempty', that specifies the
parameter can be missing (if not required), but it can't be None.
This flag gets added automatically to required parameters in CRUD
Update.
Diffstat (limited to 'ipalib/parameters.py')
-rw-r--r-- | ipalib/parameters.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py index b1525b4d5..48155daf9 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -558,9 +558,9 @@ class Param(ReadOnly): else: value = self.convert(self.normalize(value)) if hasattr(self, 'env'): - self.validate(value, self.env.context) #pylint: disable=E1101 + self.validate(value, self.env.context, supplied=self.name in kw) #pylint: disable=E1101 else: - self.validate(value) + self.validate(value, supplied=self.name in kw) return value def kw(self): @@ -820,15 +820,16 @@ class Param(ReadOnly): error=ugettext(self.type_error), ) - def validate(self, value, context=None): + def validate(self, value, context=None, supplied=None): """ Check validity of ``value``. :param value: A proposed value for this parameter. :param context: The context we are running in. + :param supplied: True if this parameter was supplied explicitly. """ if value is None: - if self.required: + if self.required or (supplied and 'nonempty' in self.flags): if context == 'cli': raise RequirementError(name=self.cli_name) else: |