Subversion Repositories SmartDukaan

Rev

Rev 17231 | Rev 17252 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 17231 Rev 17251
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()