| Line 35... |
Line 35... |
| 35 |
class Store(MStore):
|
35 |
class Store(MStore):
|
| 36 |
|
36 |
|
| 37 |
orderStatusRegexMap = { MStore.ORDER_PLACED : ['ordered from', 'not yet dispatched','dispatching now', 'preparing for dispatch'],
|
37 |
orderStatusRegexMap = { MStore.ORDER_PLACED : ['ordered from', 'not yet dispatched','dispatching now', 'preparing for dispatch'],
|
| 38 |
MStore.ORDER_SHIPPED : ['dispatched on','dispatched', 'on the way', 'out for delivery', 'Out for delivery'],
|
38 |
MStore.ORDER_SHIPPED : ['dispatched on','dispatched', 'on the way', 'out for delivery', 'Out for delivery'],
|
| 39 |
MStore.ORDER_CANCELLED : ['return complete', 'refunded', 'cancelled'],
|
39 |
MStore.ORDER_CANCELLED : ['return complete', 'refunded', 'cancelled'],
|
| 40 |
MStore.ORDER_DELIVERED : ['delivered']
|
40 |
MStore.ORDER_DELIVERED : ['delivered', 'your package was delivered']
|
| 41 |
}
|
41 |
}
|
| 42 |
|
42 |
|
| 43 |
def __init__(self,store_id):
|
43 |
def __init__(self,store_id):
|
| 44 |
super(Store, self).__init__(store_id)
|
44 |
super(Store, self).__init__(store_id)
|
| 45 |
|
45 |
|
| Line 458... |
Line 458... |
| 458 |
shipments = orderEle.findAll('div',{'class':re.compile('.*?a-box.*?')}, recursive=False)
|
458 |
shipments = orderEle.findAll('div',{'class':re.compile('.*?a-box.*?')}, recursive=False)
|
| 459 |
shipments.pop(0)
|
459 |
shipments.pop(0)
|
| 460 |
for shipment in shipments:
|
460 |
for shipment in shipments:
|
| 461 |
shipdiv = shipment.find('div', {'class':'a-box-inner'})
|
461 |
shipdiv = shipment.find('div', {'class':'a-box-inner'})
|
| 462 |
sdivs = shipment.div.div.findAll('div', recursive=False)
|
462 |
sdivs = shipment.div.div.findAll('div', recursive=False)
|
| 463 |
orderStatus = sdivs[0].span.text.strip()
|
463 |
orderStatus = sdivs[0].findAll('div')[1].text.strip()
|
| 464 |
status = self._getStatusFromDetailedStatus(orderStatus)
|
464 |
status = self._getStatusFromDetailedStatus(orderStatus)
|
| 465 |
if status == MStore.ORDER_DELIVERED:
|
465 |
# if status == MStore.ORDER_DELIVERED:
|
| - |
|
466 |
# try:
|
| - |
|
467 |
# #getDateString(sdivs[0].span.text.strip().split("Delivered ")[1].strip())
|
| 466 |
deliveredOn = sdivs[0].findAll('span')[-1].text.strip()
|
468 |
# deliveredOn = sdivs[0].findAll('span')[-1].text.strip()
|
| 467 |
try:
|
469 |
# try:
|
| 468 |
deliveredOn = deliveredOn.split(":")[1].strip()
|
470 |
# deliveredOn = deliveredOn.split(":")[1].strip()
|
| 469 |
except:
|
471 |
# except:
|
| 470 |
deliveredOn = ""
|
472 |
# deliveredOn = ""
|
| - |
|
473 |
# except:
|
| - |
|
474 |
# pass
|
| 471 |
deliveryestimatespan = sdivs[0].find('span', {'class':'a-color-success'})
|
475 |
deliveryestimatespan = sdivs[0].find('span', {'class':'a-color-success'})
|
| 472 |
deliveryEstimate = None
|
476 |
deliveryEstimate = None
|
| 473 |
if deliveryestimatespan is not None:
|
477 |
if deliveryestimatespan is not None:
|
| 474 |
deliveryEstimate = deliveryestimatespan.find('span', {'class':'a-text-bold'}).text.strip()
|
478 |
deliveryEstimate = deliveryestimatespan.find('span', {'class':'a-text-bold'}).text.strip()
|
| 475 |
productDivs = shipdiv.find('div', {'class':re.compile('.*?a-spacing-top-medium.*?')}).find('div', {'class':'a-row'}).findAll('div', recursive=False)
|
479 |
productDivs = shipdiv.find('div', {'class':re.compile('.*?a-spacing-top-medium.*?')}).find('div', {'class':'a-row'}).findAll('div', recursive=False)
|
| Line 489... |
Line 493... |
| 489 |
findMap = {"orderId": activeOrder['orderId'], "subOrders.merchantSubOrderId": subOrder.get("merchantSubOrderId")}
|
493 |
findMap = {"orderId": activeOrder['orderId'], "subOrders.merchantSubOrderId": subOrder.get("merchantSubOrderId")}
|
| 490 |
updateMap = {}
|
494 |
updateMap = {}
|
| 491 |
closedStatus = False
|
495 |
closedStatus = False
|
| 492 |
updateMap['subOrders.$.imgUrl'] = imgUrl
|
496 |
updateMap['subOrders.$.imgUrl'] = imgUrl
|
| 493 |
updateMap['subOrders.$.lastTracked'] = timestamp
|
497 |
updateMap['subOrders.$.lastTracked'] = timestamp
|
| 494 |
updateMap['subOrders.$.detailedStatus'] = orderStatus
|
498 |
updateMap['subOrders.$.detailedStatus'] = status
|
| 495 |
cashbackStatus = subOrder.get("cashBackStatus")
|
499 |
cashbackStatus = subOrder.get("cashBackStatus")
|
| 496 |
updateMap['subOrders.$.status'] = status
|
500 |
updateMap['subOrders.$.status'] = status
|
| 497 |
|
501 |
|
| - |
|
502 |
if status==MStore.ORDER_DELIVERED:
|
| 498 |
if status==MStore.ORDER_DELIVERED:
|
503 |
# if not deliveredOn:
|
| 499 |
updateMap['subOrders.$.deliveredOn'] = deliveredOn
|
504 |
# updateMap['subOrders.$.deliveredOn'] = deliveredOn
|
| 500 |
closedStatus = True
|
505 |
closedStatus = True
|
| 501 |
updateMap['subOrders.$.closed'] = True
|
506 |
updateMap['subOrders.$.closed'] = True
|
| 502 |
if cashbackStatus == Store.CB_PENDING:
|
507 |
if cashbackStatus == Store.CB_PENDING:
|
| 503 |
updateMap['subOrders.$.cashBackStatus'] = Store.CB_APPROVED
|
508 |
updateMap['subOrders.$.cashBackStatus'] = Store.CB_APPROVED
|
| 504 |
if status==MStore.ORDER_CANCELLED:
|
509 |
if status==MStore.ORDER_CANCELLED:
|
| Line 655... |
Line 660... |
| 655 |
session.close()
|
660 |
session.close()
|
| 656 |
|
661 |
|
| 657 |
|
662 |
|
| 658 |
|
663 |
|
| 659 |
def main():
|
664 |
def main():
|
| 660 |
getSummaryFile("/AmazonTrack/User8703/")
|
665 |
#getSummaryFile("/AmazonTrack/User8703/")
|
| 661 |
#process_rejects("/home/amit/Downloads/RejectCashbackTemplate.xlsx")
|
666 |
#process_rejects("/home/amit/Downloads/RejectCashbackTemplate.xlsx")
|
| 662 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary28-06:13:25:08")
|
667 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary28-06:13:25:08")
|
| 663 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary24-06:17:38:04")
|
668 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary24-06:17:38:04")
|
| 664 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary24-06:17:38:01")
|
669 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary24-06:17:38:01")
|
| 665 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary24-06:17:31:53")
|
670 |
#str1 = readSSh("/AmazonTrack/User2466/orderSummary24-06:17:31:53")
|
| Line 684... |
Line 689... |
| 684 |
#store.trackOrdersForUser(4355, "https://www.amazon.in/gp/css/summary/edit.html?orderID=171-4824011-7090713", readSSh("~/4355"))
|
689 |
#store.trackOrdersForUser(4355, "https://www.amazon.in/gp/css/summary/edit.html?orderID=171-4824011-7090713", readSSh("~/4355"))
|
| 685 |
#readSSh("/tmp/User211/2015-04-12 10:32:41.905765")
|
690 |
#readSSh("/tmp/User211/2015-04-12 10:32:41.905765")
|
| 686 |
#store.scrapeAffiliate()
|
691 |
#store.scrapeAffiliate()
|
| 687 |
#parseDetailNotCreated()
|
692 |
#parseDetailNotCreated()
|
| 688 |
#parseOrderNotCreated()
|
693 |
#parseOrderNotCreated()
|
| 689 |
for userId in store.db.merchantOrder.find({"storeId":1, "closed":True, "subOrders.closed":False}).distinct("userId"):
|
694 |
for userId in store.db.merchantOrder.find({"storeId":1, "subOrders.closed":False}).distinct("userId"):
|
| 690 |
print userId
|
695 |
userId = int(userId)
|
| 691 |
directory = "/AmazonTrack/User" + str(userId) + "/"
|
696 |
directory = "/AmazonTrack/User" + str(userId) + "/"
|
| 692 |
summaryFile=getSummaryFile(directory)
|
697 |
summaryFile="orderSummary13-10:14:41:55"
|
| 693 |
if summaryFile is None:
|
698 |
if summaryFile is None:
|
| 694 |
print "No summary for", userId
|
699 |
print "No summary for", userId
|
| 695 |
else:
|
700 |
else:
|
| 696 |
print userId, directory+summaryFile
|
701 |
print userId, directory+summaryFile
|
| 697 |
#store.trackOrdersForUser(userId, 'https://www.amazon.in/gp/css/order-history', readSSh(directory + summaryFile))
|
702 |
store.trackOrdersForUser(userId, 'https://www.amazon.in/gp/css/order-history', readSSh(directory + summaryFile))
|
| 698 |
|
703 |
|
| 699 |
#store.trackOrdersForUser(8703, 'https://www.amazon.in/gp/css/order-history', readSSh('/home/amit/Downloads/orderSummary06-10_12_15_54'))
|
704 |
#store.trackOrdersForUser(8703, 'https://www.amazon.in/gp/css/order-history', readSSh('/home/amit/Downloads/orderSummary06-10_12_15_54'))
|
| 700 |
|
705 |
|
| 701 |
def getSummaryFile(directory):
|
706 |
def getSummaryFile(directory):
|
| 702 |
date1 = datetime(2015,1,1)
|
707 |
date1 = datetime(2015,1,1)
|
| Line 708... |
Line 713... |
| 708 |
if date2 > date1:
|
713 |
if date2 > date1:
|
| 709 |
date1 = date2
|
714 |
date1 = date2
|
| 710 |
finalFile=file
|
715 |
finalFile=file
|
| 711 |
except:
|
716 |
except:
|
| 712 |
print "Missing directory"
|
717 |
print "Missing directory"
|
| 713 |
return finalFile
|
718 |
return finalFile
|
| 714 |
|
719 |
|
| 715 |
|
720 |
|
| 716 |
def parseDetailNotCreated():
|
721 |
def parseDetailNotCreated():
|
| 717 |
try:
|
722 |
try:
|
| 718 |
store=getStore(1)
|
723 |
store=getStore(1)
|
| Line 721... |
Line 726... |
| 721 |
for order in orders:
|
726 |
for order in orders:
|
| 722 |
store.trackOrdersForUser(order.id, order.order_url, order.rawhtml)
|
727 |
store.trackOrdersForUser(order.id, order.order_url, order.rawhtml)
|
| 723 |
|
728 |
|
| 724 |
finally:
|
729 |
finally:
|
| 725 |
session.close()
|
730 |
session.close()
|
| - |
|
731 |
|
| - |
|
732 |
def getDateStringDelivered(dateString='Monday'):
|
| - |
|
733 |
#print datetime.strftime(dateMin,"%d-%b-%y")
|
| - |
|
734 |
if dateString.lower()=='today':
|
| - |
|
735 |
return date.today()
|
| - |
|
736 |
if dateString.lower()=='yesterday':
|
| - |
|
737 |
return date.today() - timedelta(days=1)
|
| - |
|
738 |
try:
|
| - |
|
739 |
return datetime.strptime(dateString, '%d-%b-%y')
|
| - |
|
740 |
except:
|
| - |
|
741 |
try:
|
| - |
|
742 |
#get Closest Date from today
|
| - |
|
743 |
curDate = date.today()
|
| - |
|
744 |
curTime = datetime(curDate.year, curDate.month, curDate.day)
|
| - |
|
745 |
curYear = curDate.year
|
| - |
|
746 |
prevYear = curYear - 1
|
| - |
|
747 |
dateMax = datetime.strptime(dateString + " " + str(curYear), "%A,%d %b %Y")
|
| - |
|
748 |
dateMin = datetime.strptime(dateString + " " + str(prevYear), "%A,%d %b %Y")
|
| - |
|
749 |
if dateMax <= curTime:
|
| - |
|
750 |
return dateMax
|
| - |
|
751 |
else:
|
| - |
|
752 |
return dateMin
|
| - |
|
753 |
except:
|
| - |
|
754 |
days_of_week = ['sunday','monday','tuesday','wednesday',
|
| - |
|
755 |
'thursday','friday','saturday']
|
| - |
|
756 |
deltaDays = curDate.isoweekday() - days_of_week.index(dateString.lower())
|
| - |
|
757 |
if deltaDays <= 0:
|
| - |
|
758 |
deltaDays= deltaDays + 7
|
| - |
|
759 |
curDate = curDate - timedelta(days=deltaDays)
|
| - |
|
760 |
print datetime.strftime(curDate, '%d-%b-%y')
|
| - |
|
761 |
return curDate
|
| 726 |
|
762 |
|
| 727 |
def parseOrderNotCreated():
|
763 |
def parseOrderNotCreated():
|
| 728 |
try:
|
764 |
try:
|
| 729 |
store=getStore(1)
|
765 |
store=getStore(1)
|
| 730 |
orders = session.query(OrdersRaw).filter_by(status='ORDER_NOT_CREATED_UNKNOWN').all()
|
766 |
orders = session.query(OrdersRaw).filter_by(status='ORDER_NOT_CREATED_UNKNOWN').all()
|