wsme/wsme/exc.py
Yuriy Zveryanskyy 9546c10250 Add custom error code to ClientSideError
Added custom error status code for ClientSideError
exception instead of hardcoded value 400.
Fixed case when user exception with client error code
formatted as server error.
Pecan extension fixed.

Change-Id: I2663db0aa88538b722eb2783d130585b0fc2335b
2013-10-09 16:59:40 +03:00

65 lines
1.7 KiB
Python

import six
from wsme.utils import _
class ClientSideError(RuntimeError):
def __init__(self, msg=None, status_code=400):
self.msg = msg
self.code = status_code
super(ClientSideError, self).__init__(self.faultstring)
@property
def faultstring(self):
if self.msg is None:
return str(self)
elif isinstance(self.msg, six.text_type):
return self.msg
else:
return six.u(self.msg)
class InvalidInput(ClientSideError):
def __init__(self, fieldname, value, msg=''):
self.fieldname = fieldname
self.value = value
super(InvalidInput, self).__init__(msg)
@property
def faultstring(self):
return _(six.u(
"Invalid input for field/attribute %s. Value: '%s'. %s")
) % (self.fieldname, self.value, self.msg)
class MissingArgument(ClientSideError):
def __init__(self, argname, msg=''):
self.argname = argname
super(MissingArgument, self).__init__(msg)
@property
def faultstring(self):
return _(six.u('Missing argument: "%s"%s')) % (
self.argname, self.msg and ": " + self.msg or "")
class UnknownArgument(ClientSideError):
def __init__(self, argname, msg=''):
self.argname = argname
super(UnknownArgument, self).__init__(msg)
@property
def faultstring(self):
return _(six.u('Unknown argument: "%s"%s')) % (
self.argname, self.msg and ": " + self.msg or "")
class UnknownFunction(ClientSideError):
def __init__(self, name):
self.name = name
super(UnknownFunction, self).__init__()
@property
def faultstring(self):
return _(six.u("Unknown function name: %s")) % (self.name)