From 9732c02765380978eb89ce29898355d89ec1aa87 Mon Sep 17 00:00:00 2001 From: enkore Date: Wed, 6 Mar 2013 16:19:33 +0100 Subject: [PATCH] Add display for parcels not yet showing up in tracking. --- i3pystatus/parcel.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/i3pystatus/parcel.py b/i3pystatus/parcel.py index 32e03ab..fa0779e 100644 --- a/i3pystatus/parcel.py +++ b/i3pystatus/parcel.py @@ -19,6 +19,8 @@ class DHL(TrackerAPI): self.idcode = idcode self.url = self.URL.format(idcode=self.idcode) + error_selector = CSSSelector("#set_identcodes .error") + self.error = lambda page: len(error_selector(page)) >= 1 self.progress_selector = CSSSelector(".greyprogressbar > span, .greenprogressbar > span") self.last_status_selector = CSSSelector(".events .eventList tr") self.intrarow_status_selector = CSSSelector("td.status div") @@ -27,9 +29,12 @@ class DHL(TrackerAPI): ret = {} with urlopen(self.url) as page: page = lxml.html.fromstring(page.read()) - ret["progress"] = self.progress_selector(page)[0].text.strip() - last_row = self.last_status_selector(page)[-1] - ret["status"] = self.intrarow_status_selector(last_row)[0].text.strip() + if self.error(page): + ret["progress"] = ret["status"] = "n/a" + else: + ret["progress"] = self.progress_selector(page)[0].text.strip() + last_row = self.last_status_selector(page)[-1] + ret["status"] = self.intrarow_status_selector(last_row)[0].text.strip() return ret class ParcelTracker(IntervalModule):