diff options
author | Rob Crittenden <rcritten@redhat.com> | 2012-03-16 13:30:59 -0400 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-03-20 09:06:52 +0100 |
commit | f18cfd7de8e82d465cdd112decd262e6c901b2cb (patch) | |
tree | 8121bcf8053221ae21c1c91e099d6ebf278fe5c3 /ipalib/parameters.py | |
parent | 2449b4d827f5402369ff9c41e66ea226710e520b (diff) | |
download | freeipa-f18cfd7de8e82d465cdd112decd262e6c901b2cb.tar.gz freeipa-f18cfd7de8e82d465cdd112decd262e6c901b2cb.tar.xz freeipa-f18cfd7de8e82d465cdd112decd262e6c901b2cb.zip |
Use a consistent parameter name in errors, defaulting to cli_name.
For general command-line errors we want to use the cli_name on output.
The exception is when using *attr, we want to return that attribute name
in the exception.
https://fedorahosted.org/freeipa/ticket/1418
Diffstat (limited to 'ipalib/parameters.py')
-rw-r--r-- | ipalib/parameters.py | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py index 48155daf9..94f11d912 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -563,6 +563,18 @@ class Param(ReadOnly): self.validate(value, supplied=self.name in kw) return value + def get_param_name(self): + """ + Return the right name of an attribute depending on usage. + + Normally errors should use cli_name, our "friendly" name. When + using the API directly or *attr return the real name. + """ + name = self.cli_name + if not name: + name = self.name + return name + def kw(self): """ Iterate through ``(key,value)`` for all kwargs passed to constructor. @@ -861,11 +873,8 @@ class Param(ReadOnly): for rule in self.all_rules: error = rule(ugettext, value) if error is not None: - name = self.cli_name - if not name: - name = self.name raise ValidationError( - name=name, + name=self.get_param_name(), value=value, index=index, error=error, @@ -1175,7 +1184,7 @@ class Int(Number): return int(value) except ValueError: pass - raise ConversionError(name=self.name, index=index, + raise ConversionError(name=self.get_param_name(), index=index, error=ugettext(self.type_error), ) @@ -1218,11 +1227,8 @@ class Int(Number): for rule in self.all_rules: error = rule(ugettext, value) if error is not None: - name = self.cli_name - if not name: - name = self.name raise ValidationError( - name=name, + name=self.get_param_name(), value=value, index=index, error=error, @@ -1309,7 +1315,7 @@ class Decimal(Number): try: value = decimal.Decimal(value) except Exception, e: - raise ConversionError(name=self.name, index=index, + raise ConversionError(name=self.get_param_name(), index=index, error=unicode(e)) if isinstance(value, decimal.Decimal): @@ -1449,7 +1455,7 @@ class Bytes(Data): try: value = base64.b64decode(value) except TypeError: - raise ConversionError(name=self.name, index=index, error=self.type_error) + raise ConversionError(name=self.get_param_name(), index=index, error=self.type_error) return super(Bytes, self)._convert_scalar(value, index) @@ -1548,7 +1554,8 @@ class IA5Str(Str): if isinstance(value, basestring): for i in xrange(len(value)): if ord(value[i]) > 127: - raise ConversionError(name=self.name, index=index, + raise ConversionError(name=self.get_param_name(), + index=index, error=_('The character \'%(char)r\' is not allowed.') % dict(char=value[i],) ) @@ -1832,10 +1839,10 @@ class AccessTime(Str): try: self._check(value) except ValueError, e: - raise ValidationError(name=self.cli_name, error=e.args[0]) + raise ValidationError(name=self.get_param_name(), error=e.args[0]) except IndexError: raise ValidationError( - name=self.cli_name, error='incomplete time value' + name=self.get_param_name(), error='incomplete time value' ) return None |