mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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
This commit is contained in:
parent
2449b4d827
commit
f18cfd7de8
@ -563,6 +563,18 @@ class Param(ReadOnly):
|
|||||||
self.validate(value, supplied=self.name in kw)
|
self.validate(value, supplied=self.name in kw)
|
||||||
return value
|
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):
|
def kw(self):
|
||||||
"""
|
"""
|
||||||
Iterate through ``(key,value)`` for all kwargs passed to constructor.
|
Iterate through ``(key,value)`` for all kwargs passed to constructor.
|
||||||
@ -861,11 +873,8 @@ class Param(ReadOnly):
|
|||||||
for rule in self.all_rules:
|
for rule in self.all_rules:
|
||||||
error = rule(ugettext, value)
|
error = rule(ugettext, value)
|
||||||
if error is not None:
|
if error is not None:
|
||||||
name = self.cli_name
|
|
||||||
if not name:
|
|
||||||
name = self.name
|
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
name=name,
|
name=self.get_param_name(),
|
||||||
value=value,
|
value=value,
|
||||||
index=index,
|
index=index,
|
||||||
error=error,
|
error=error,
|
||||||
@ -1175,7 +1184,7 @@ class Int(Number):
|
|||||||
return int(value)
|
return int(value)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
raise ConversionError(name=self.name, index=index,
|
raise ConversionError(name=self.get_param_name(), index=index,
|
||||||
error=ugettext(self.type_error),
|
error=ugettext(self.type_error),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1218,11 +1227,8 @@ class Int(Number):
|
|||||||
for rule in self.all_rules:
|
for rule in self.all_rules:
|
||||||
error = rule(ugettext, value)
|
error = rule(ugettext, value)
|
||||||
if error is not None:
|
if error is not None:
|
||||||
name = self.cli_name
|
|
||||||
if not name:
|
|
||||||
name = self.name
|
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
name=name,
|
name=self.get_param_name(),
|
||||||
value=value,
|
value=value,
|
||||||
index=index,
|
index=index,
|
||||||
error=error,
|
error=error,
|
||||||
@ -1309,7 +1315,7 @@ class Decimal(Number):
|
|||||||
try:
|
try:
|
||||||
value = decimal.Decimal(value)
|
value = decimal.Decimal(value)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise ConversionError(name=self.name, index=index,
|
raise ConversionError(name=self.get_param_name(), index=index,
|
||||||
error=unicode(e))
|
error=unicode(e))
|
||||||
|
|
||||||
if isinstance(value, decimal.Decimal):
|
if isinstance(value, decimal.Decimal):
|
||||||
@ -1449,7 +1455,7 @@ class Bytes(Data):
|
|||||||
try:
|
try:
|
||||||
value = base64.b64decode(value)
|
value = base64.b64decode(value)
|
||||||
except TypeError:
|
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)
|
return super(Bytes, self)._convert_scalar(value, index)
|
||||||
|
|
||||||
|
|
||||||
@ -1548,7 +1554,8 @@ class IA5Str(Str):
|
|||||||
if isinstance(value, basestring):
|
if isinstance(value, basestring):
|
||||||
for i in xrange(len(value)):
|
for i in xrange(len(value)):
|
||||||
if ord(value[i]) > 127:
|
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.') %
|
error=_('The character \'%(char)r\' is not allowed.') %
|
||||||
dict(char=value[i],)
|
dict(char=value[i],)
|
||||||
)
|
)
|
||||||
@ -1832,10 +1839,10 @@ class AccessTime(Str):
|
|||||||
try:
|
try:
|
||||||
self._check(value)
|
self._check(value)
|
||||||
except ValueError, e:
|
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:
|
except IndexError:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
name=self.cli_name, error='incomplete time value'
|
name=self.get_param_name(), error='incomplete time value'
|
||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -780,8 +780,9 @@ last, after all sets and adds."""),
|
|||||||
try:
|
try:
|
||||||
value = self.params[attr](value)
|
value = self.params[attr](value)
|
||||||
except errors.ValidationError, err:
|
except errors.ValidationError, err:
|
||||||
(name, error) = str(err.strerror).split(':')
|
raise errors.ValidationError(name=attr, error=err.error)
|
||||||
raise errors.ValidationError(name=attr, error=error)
|
except errors.ConversionError, err:
|
||||||
|
raise errors.ValidationError(name=attr, error=err.error)
|
||||||
if self.api.env.in_server:
|
if self.api.env.in_server:
|
||||||
value = self.params[attr].encode(value)
|
value = self.params[attr].encode(value)
|
||||||
if append and attr in newdict:
|
if append and attr in newdict:
|
||||||
|
Loading…
Reference in New Issue
Block a user