diff options
Diffstat (limited to 'ipalib/public.py')
-rw-r--r-- | ipalib/public.py | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/ipalib/public.py b/ipalib/public.py index 17d00f04..d1c4fa2a 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -183,16 +183,15 @@ class cmd(plugable.Plugin): def normalize(self, **kw): return dict(self.normalize_iter(kw)) - def default(self, **kw): - d = {} - for opt in self.options: - if opt.name not in kw: - value = opt.default(**kw) + def default_iter(self, kw): + for option in self.options: + if option.name not in kw: + value = option.default(**kw) if value is not None: - d[opt.name] = value - assert not set(kw).intersection(d) - kw.update(d) - return kw + yield(option.name, value) + + def default(self, **kw): + return dict(self.default_iter(kw)) def validate(self, **kw): for (key, value) in kw.items(): @@ -201,7 +200,7 @@ class cmd(plugable.Plugin): def __call__(self, **kw): kw = self.normalize(**kw) - kw = self.default(**kw) + kw.update(self.default(**kw)) self.validate(**kw) self.execute(**kw) |