From 9c19dd3506a28d4966adb950c8f5016d6d5ce55a Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Mon, 6 Jun 2016 12:14:21 +0200 Subject: schema: do not validate unrequested params in command_defaults Request specific params when getting the defaults instead of getting defaults for all params and filtering the result. This fixes command_defaults failing with validation errors on unrequested params. https://fedorahosted.org/freeipa/ticket/4739 Reviewed-By: David Kupka --- ipalib/frontend.py | 8 +++++--- ipaserver/plugins/schema.py | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ipalib/frontend.py b/ipalib/frontend.py index 81e9cd4c2..ffcf71b5a 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -670,7 +670,7 @@ class Command(HasParam): if kw.get(param.name, None) is None: continue - def get_default(self, **kw): + def get_default(self, _params=None, **kw): """ Return a dictionary of defaults for all missing required values. @@ -687,8 +687,10 @@ class Command(HasParam): >>> c.get_default(color=u'Yellow') {} """ - params = [p.name for p in self.params() if p.name not in kw and (p.required or p.autofill)] - return dict(self.__get_default_iter(params, kw)) + if _params is None: + _params = [p.name for p in self.params() + if p.name not in kw and (p.required or p.autofill)] + return dict(self.__get_default_iter(_params, kw)) def get_default_of(self, _name, **kw): """ diff --git a/ipaserver/plugins/schema.py b/ipaserver/plugins/schema.py index 8bc230350..d66943c2e 100644 --- a/ipaserver/plugins/schema.py +++ b/ipaserver/plugins/schema.py @@ -229,8 +229,7 @@ class command_defaults(PKQuery): raise errors.ConversionError(name=name, error=_("must be a dictionary")) - result = command.get_default(**kw) - result = {n: v for n, v in result.items() if n in params} + result = command.get_default(params, **kw) return dict(result=result) -- cgit