diff options
author | Filipp Lepalaan <f@230.to> | 2013-09-23 17:35:54 +0300 |
---|---|---|
committer | Filipp Lepalaan <f@230.to> | 2013-09-23 17:35:54 +0300 |
commit | 86a6df80b0e40855097fcf836cf11bd4808882f6 (patch) | |
tree | 9bc6c3c4766e7ae5a21403c01f317b2a0b34b1c7 /gsxws/core.py | |
parent | d78047ab44809537d21fe048d63a4c3c8e96df3d (diff) | |
download | py-gsxws-86a6df80b0e40855097fcf836cf11bd4808882f6.tar.gz py-gsxws-86a6df80b0e40855097fcf836cf11bd4808882f6.tar.bz2 py-gsxws-86a6df80b0e40855097fcf836cf11bd4808882f6.zip |
Added support for multiple error messages
Diffstat (limited to 'gsxws/core.py')
-rw-r--r-- | gsxws/core.py | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/gsxws/core.py b/gsxws/core.py index 9791850..eaf241d 100644 --- a/gsxws/core.py +++ b/gsxws/core.py @@ -145,23 +145,39 @@ def get_format(locale=GSX_LOCALE): class GsxError(Exception): def __init__(self, message=None, xml=None, url=None): - self.code = "" - self.message = message + self.codes = [] + self.messages = [] if xml is not None: logging.debug(url) logging.debug(xml) - el = ET.fromstring(xml) - self.code = el.findtext("*//faultcode") - self.message = el.findtext("*//faultstring") + root = ET.fromstring(xml) + + for el in root.findall('*//faultcode'): + self.codes.append(el.text) + for el in root.findall('*//faultstring'): + self.messages.append(el.text) + for el in root.findall('*//code'): + self.codes.append(el.text) + for el in root.findall('*//message'): + self.messages.append(el.text) super(Exception, self).__init__(self.message) - def __unicode__(self): - return self.message + @property + def code(self): + return self.codes[0] - def __str__(self): - return self.message + @property + def message(self): + return unicode(self) + + @property + def errors(self): + return dict(zip(self.codes, self.messages)) + + def __unicode__(self): + return u' '.join(self.messages) class GsxCache(object): |