aboutsummaryrefslogtreecommitdiffstats
path: root/gsxws/core.py
diff options
context:
space:
mode:
authorFilipp Lepalaan <f@230.to>2013-09-23 17:35:54 +0300
committerFilipp Lepalaan <f@230.to>2013-09-23 17:35:54 +0300
commit86a6df80b0e40855097fcf836cf11bd4808882f6 (patch)
tree9bc6c3c4766e7ae5a21403c01f317b2a0b34b1c7 /gsxws/core.py
parentd78047ab44809537d21fe048d63a4c3c8e96df3d (diff)
downloadpy-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.py34
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):