Amazon module: skip 'Not yet shipped' orders. Fixes #1699

This commit is contained in:
Oleg Plakhotniuk 2014-12-29 13:35:26 -06:00 committed by Florent
commit f2ea735c78

View file

@ -75,25 +75,28 @@ class HistoryPage(AmazonPage):
) if x.startswith('year-')] ) if x.startswith('year-')]
class OrderNewPage(AmazonPage): class OrderPage(AmazonPage):
is_here = u'//*[contains(text(),"Ordered on")]' def shouldSkip(self):
def order(self):
# Reports only fully shipped and delivered orders, because they have # Reports only fully shipped and delivered orders, because they have
# finalized payment amounts. # finalized payment amounts.
# Payment for not yet shipped orders may change, and is not always # Payment for not yet shipped orders may change, and is not always
# available. # available.
for s in [u'Not Yet Shipped', u'Preparing for Shipment', return bool([x for s in [u'Not Yet Shipped', u'Not yet shipped',
u'Shipping now', u'In transit']: u'Preparing for Shipment', u'Shipping now', u'In transit']
if self.doc.xpath(u'//*[contains(text(),"%s")]' % s): for x in self.doc.xpath(u'//*[contains(text(),"%s")]' % s)])
return None
order = Order(id=self.order_number())
order.date = self.order_date() class OrderNewPage(OrderPage):
order.tax = self.tax() is_here = u'//*[contains(text(),"Ordered on")]'
order.discount = self.discount()
order.shipping = self.shipping() def order(self):
return order if not self.shouldSkip():
order = Order(id=self.order_number())
order.date = self.order_date()
order.tax = self.tax()
order.discount = self.discount()
order.shipping = self.shipping()
return order
def order_date(self): def order_date(self):
return datetime.strptime( return datetime.strptime(
@ -207,25 +210,17 @@ class OrderNewPage(AmazonPage):
yield itm yield itm
class OrderOldPage(AmazonPage): class OrderOldPage(OrderPage):
is_here = u'//*[contains(text(),"Amazon.com order number")]' is_here = u'//*[contains(text(),"Amazon.com order number")]'
def order(self): def order(self):
# Reports only fully shipped and delivered orders, because they have if not self.shouldSkip():
# finalized payment amounts. order = Order(id=self.order_number())
# Payment for not yet shipped orders may change, and are not always order.date = self.order_date()
# available. order.tax = self.tax()
for s in [u'Not Yet Shipped', u'Preparing for Shipment', order.discount = self.discount()
u'Shipping now']: order.shipping = self.shipping()
if self.doc.xpath(u'//b[contains(text(),"%s")]' % s): return order
return None
order = Order(id=self.order_number())
order.date = self.order_date()
order.tax = self.tax()
order.discount = self.discount()
order.shipping = self.shipping()
return order
def order_date(self): def order_date(self):
return datetime.strptime(u' '.join(self.doc.xpath( return datetime.strptime(u' '.join(self.doc.xpath(