From e05dfbd8b4b4e040266ecfba579bcd64e22b342b Mon Sep 17 00:00:00 2001 From: Nathaniel McCallum Date: Tue, 1 Oct 2013 13:57:24 -0400 Subject: Add optional_create flag --- ipalib/crud.py | 15 ++++++++++----- ipalib/parameters.py | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ipalib/crud.py b/ipalib/crud.py index 72ea142da..cd244156e 100644 --- a/ipalib/crud.py +++ b/ipalib/crud.py @@ -133,16 +133,21 @@ class Create(Method): has_output = output.standard_entry + def __clone(self, param, **kw): + if 'optional_create' in param.flags: + kw['required'] = False + return param.clone(**kw) if kw else param + def get_args(self): if self.obj.primary_key: - yield self.obj.primary_key.clone(attribute=True) + yield self.__clone(self.obj.primary_key, attribute=True) for arg in super(Create, self).get_args(): - yield arg + yield self.__clone(arg) def get_options(self): if self.extra_options_first: for option in super(Create, self).get_options(): - yield option + yield self.__clone(option) for option in self.obj.params_minus(self.args): attribute = 'virtual_attribute' not in option.flags if 'no_create' in option.flags: @@ -153,10 +158,10 @@ class Create(Method): autofill=False, alwaysask=True ) else: - yield option.clone(attribute=attribute) + yield self.__clone(option, attribute=attribute) if not self.extra_options_first: for option in super(Create, self).get_options(): - yield option + yield self.__clone(option) class PKQuery(Method): diff --git a/ipalib/parameters.py b/ipalib/parameters.py index f592a323f..79b9062bb 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -351,6 +351,8 @@ class Param(ReadOnly): not be given at all. All crud.Update commands automatically convert required parameters to `nonempty` ones, so the value can be unspecified (unchanged) but cannot be deleted. + * optional_create: do not require the parameter for crud.Create + based commands - hint: this attribute is currently not used - alwaysask: when enabled, CLI asks for parameter value even when the parameter is not `required` -- cgit