From 8c8d9e6e2cff18afed26e5b6cb77029febaa422f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Thu, 2 Jun 2016 19:04:53 +0200 Subject: [PATCH] Handle DPD Errors gracefully issue5597 review20231003 --- stock.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/stock.py b/stock.py index e8e3b64296..4381bb7ebe 100644 --- a/stock.py +++ b/stock.py @@ -77,6 +77,8 @@ class CreateDPDShipping(Wizard): cls._error_messages.update({ 'has_reference_number': ('Shipment "%(shipment)s" already has' 'a reference number.'), + 'dpd_webservice_error': ('DPD webservice call failed with the' + ' following error message:\n\n%(message)s'), }) def transition_start(self): @@ -126,6 +128,13 @@ class CreateDPDShipping(Wizard): 'credential': credential.rec_name, }) + response, = shipment_response.shipmentResponses + if response.faults: + message = '\n'.join(f.message for f in response.faults) + self.raise_user_error('dpd_webservice_error', { + 'message': message, + }) + labels = [] labels_pdf = BytesIO(shipment_response.parcellabelsPDF) reader = PdfFileReader(labels_pdf) @@ -136,7 +145,6 @@ class CreateDPDShipping(Wizard): new_pdf.write(new_label) labels.append(new_label) - response, = shipment_response.shipmentResponses shipment.reference = response.mpsId parcels = response.parcelInformation for package, label, parcel in zip(packages, labels, parcels):