Subversion Repositories SmartDukaan

Rev

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

Rev 16142 Rev 16143
Line 539... Line 539...
539
            print url
539
            print url
540
            page = fetchResponseUsingProxy(url)
540
            page = fetchResponseUsingProxy(url)
541
            soup = BeautifulSoup(page)
541
            soup = BeautifulSoup(page)
542
            bulk = self.db.merchantOrder.initialize_ordered_bulk_op()
542
            bulk = self.db.merchantOrder.initialize_ordered_bulk_op()
543
            closed = True
543
            closed = True
-
 
544
            if soup is not None:
544
            orderStatusList = soup.findAll(attrs={'class' : 'price ord_status'})
545
                orderStatusList = soup.findAll(attrs={'class' : 'price ord_status'})
545
            print orderStatusList
546
                print orderStatusList
546
            print 'Length Of Order Status List ',len(orderStatusList)
547
                print 'Length Of Order Status List ',len(orderStatusList)
547
            if orderStatusList is not None and len(orderStatusList)>0:
548
                if orderStatusList is not None and len(orderStatusList)>0:
548
                subOrderId = soup.findAll(attrs={'class':'price ord_no'})[0].text.strip()
549
                    subOrderId = soup.findAll(attrs={'class':'price ord_no'})[0].text.strip()
549
                orderStatus = orderStatusList[0].contents[0].strip()
550
                    orderStatus = orderStatusList[0].contents[0].strip()
550
                orderTable = soup.body.find("table", {'class':'table product-list'}).findAll('tr', recursive=False)
551
                    orderTable = soup.body.find("table", {'class':'table product-list'}).findAll('tr', recursive=False)
551
                orderTable.pop(0)
552
                    orderTable.pop(0)
552
                count = 1
553
                    count = 1
553
                while count <= len(orderTable):
554
                    while count <= len(orderTable):
554
                    subOrder =  self._isSubOrderActive(order, str(subOrderId)+'-'+str(count))
555
                        subOrder =  self._isSubOrderActive(order, str(subOrderId)+'-'+str(count))
555
                    count = count +1
556
                        count = count +1
556
                    if subOrder is None:
557
                        if subOrder is None:
557
                        try:
558
                            try:
558
                            subOrders = self.parseSingleSubOrder(soup, order['orderTrackingUrl'].split('email_id=')[1], subOrderId)
559
                                subOrders = self.parseSingleSubOrder(soup, order['orderTrackingUrl'].split('email_id=')[1], subOrderId)
559
                            for subOrder in subOrders:
560
                                for subOrder in subOrders:
560
                                if subOrder is None:
561
                                    if subOrder is None:
561
                                    continue
562
                                        continue
562
                                self.db.merchantOrder.update({"orderId":order['orderId']},{'$push':{"subOrders":{"$each":todict([subOrder])}}})
563
                                    self.db.merchantOrder.update({"orderId":order['orderId']},{'$push':{"subOrders":{"$each":todict([subOrder])}}})
563
                                print "Added new suborders to Order id - ", order['orderId']
564
                                    print "Added new suborders to Order id - ", order['orderId']
564
                                closed = False
565
                                    closed = False
565
                        except:
566
                            except:
566
                            pass
567
                                pass
567
                        continue
568
                            continue
568
                    elif subOrder['closed']:
569
                        elif subOrder['closed']:
569
                        continue
570
                            continue
570
                    else:
-
 
571
                        findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": subOrderId}
-
 
572
                        updateMap = {}
-
 
573
                        updateMap["subOrders.$.detailedStatus"] = orderStatus
-
 
574
                        status = self._getStatusFromDetailedStatus(orderStatus) 
-
 
575
                        closedStatus = status in [Store.ORDER_DELIVERED, Store.ORDER_CANCELLED]
-
 
576
                        if status is not None:
-
 
577
                            updateMap["subOrders.$.status"] = status
-
 
578
                        if closedStatus:
-
 
579
                            #if status is closed then change the paybackStatus accordingly
-
 
580
                            updateMap["subOrders.$.closed"] = True
-
 
581
                            if status == Store.ORDER_DELIVERED:
-
 
582
                                if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
583
                                    updateMap["subOrders.$.cashBackStatus"] = Store.CB_APPROVED
-
 
584
                            elif status == Store.ORDER_CANCELLED:
-
 
585
                                if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
586
                                    updateMap["subOrders.$.cashBackStatus"] = Store.CB_CANCELLED
-
 
587
                        else:
571
                        else:
-
 
572
                            findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": subOrderId}
-
 
573
                            updateMap = {}
-
 
574
                            updateMap["subOrders.$.detailedStatus"] = orderStatus
-
 
575
                            status = self._getStatusFromDetailedStatus(orderStatus) 
-
 
576
                            closedStatus = status in [Store.ORDER_DELIVERED, Store.ORDER_CANCELLED]
-
 
577
                            if status is not None:
-
 
578
                                updateMap["subOrders.$.status"] = status
-
 
579
                            if closedStatus:
-
 
580
                                #if status is closed then change the paybackStatus accordingly
-
 
581
                                updateMap["subOrders.$.closed"] = True
-
 
582
                                if status == Store.ORDER_DELIVERED:
-
 
583
                                    if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
584
                                        updateMap["subOrders.$.cashBackStatus"] = Store.CB_APPROVED
-
 
585
                                elif status == Store.ORDER_CANCELLED:
-
 
586
                                    if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
587
                                        updateMap["subOrders.$.cashBackStatus"] = Store.CB_CANCELLED
-
 
588
                            else:
-
 
589
                                closed = False
-
 
590
                            bulk.find(findMap).update({'$set' : updateMap})
-
 
591
                    
-
 
592
                else:
-
 
593
                    subOrdersList = self.parseMultiSubOrders(soup, order['orderTrackingUrl'].split('email_id=')[1])
-
 
594
                    for subOrderObj in subOrdersList:
-
 
595
                        subOrder =  self._isSubOrderActive(order, subOrderObj.merchantSubOrderId)
-
 
596
                        if subOrder is None:
-
 
597
                            self.db.merchantOrder.update({"orderId":order['orderId']},{'$push':{"subOrders":{"$each":todict([subOrderObj])}}})
-
 
598
                            print "Added new suborders to Order id - ", order['orderId']
588
                            closed = False
599
                            closed = False
589
                        bulk.find(findMap).update({'$set' : updateMap})
-
 
590
                
-
 
591
            else:
-
 
592
                subOrdersList = self.parseMultiSubOrders(soup, order['orderTrackingUrl'].split('email_id=')[1])
-
 
593
                for subOrderObj in subOrdersList:
-
 
594
                    subOrder =  self._isSubOrderActive(order, subOrderObj.merchantSubOrderId)
-
 
595
                    if subOrder is None:
-
 
596
                        self.db.merchantOrder.update({"orderId":order['orderId']},{'$push':{"subOrders":{"$each":todict([subOrderObj])}}})
-
 
597
                        print "Added new suborders to Order id - ", order['orderId']
-
 
598
                        closed = False
-
 
599
                        continue
600
                            continue
600
                    elif subOrder['closed']:
601
                        elif subOrder['closed']:
601
                        continue
602
                            continue
602
                    else:
-
 
603
                        findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": subOrderId}
-
 
604
                        updateMap = {}
-
 
605
                        updateMap["subOrders.$.detailedStatus"] = subOrderObj.detailedStatus
-
 
606
                        status = self._getStatusFromDetailedStatus(orderStatus) 
-
 
607
                        closedStatus = status in [Store.ORDER_DELIVERED, Store.ORDER_CANCELLED]
-
 
608
                        if status is not None:
-
 
609
                            updateMap["subOrders.$.status"] = status
-
 
610
                        if closedStatus:
-
 
611
                            #if status is closed then change the paybackStatus accordingly
-
 
612
                            updateMap["subOrders.$.closed"] = True
-
 
613
                            if status == Store.ORDER_DELIVERED:
-
 
614
                                if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
615
                                    updateMap["subOrders.$.cashBackStatus"] = Store.CB_APPROVED
-
 
616
                            elif status == Store.ORDER_CANCELLED:
-
 
617
                                if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
618
                                    updateMap["subOrders.$.cashBackStatus"] = Store.CB_CANCELLED
-
 
619
                        else:
603
                        else:
-
 
604
                            findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": subOrderId}
-
 
605
                            updateMap = {}
-
 
606
                            updateMap["subOrders.$.detailedStatus"] = subOrderObj.detailedStatus
-
 
607
                            status = self._getStatusFromDetailedStatus(orderStatus) 
-
 
608
                            closedStatus = status in [Store.ORDER_DELIVERED, Store.ORDER_CANCELLED]
-
 
609
                            if status is not None:
-
 
610
                                updateMap["subOrders.$.status"] = status
-
 
611
                            if closedStatus:
-
 
612
                                #if status is closed then change the paybackStatus accordingly
-
 
613
                                updateMap["subOrders.$.closed"] = True
-
 
614
                                if status == Store.ORDER_DELIVERED:
-
 
615
                                    if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
616
                                        updateMap["subOrders.$.cashBackStatus"] = Store.CB_APPROVED
-
 
617
                                elif status == Store.ORDER_CANCELLED:
-
 
618
                                    if subOrder.get("cashBackStatus") == Store.CB_PENDING:
-
 
619
                                        updateMap["subOrders.$.cashBackStatus"] = Store.CB_CANCELLED
-
 
620
                            else:
620
                            closed = False
621
                                closed = False
621
                        bulk.find(findMap).update({'$set' : updateMap})
622
                            bulk.find(findMap).update({'$set' : updateMap})
622
            bulk.find({'orderId': order['orderId']}).update({'$set':{'closed': closed,"parseError":False}})
623
                bulk.find({'orderId': order['orderId']}).update({'$set':{'closed': closed,"parseError":False}})
623
            result = bulk.execute()
624
                result = bulk.execute()
624
            tprint(result)      
625
                tprint(result)
-
 
626
            else:
-
 
627
                print 'Soup Object not found for this Order', order['orderId'], order['orderTrackingUrl']
-
 
628
                continue      
625
            
629
            
626
    '''
630
    '''
627
    def getTrackingUrls(self, userId):
631
    def getTrackingUrls(self, userId):
628
        missingOrderUrls = ['https://sm.shopclues.com/myaccount','https://sm.shopclues.com/myorders']
632
        missingOrderUrls = ['https://sm.shopclues.com/myaccount','https://sm.shopclues.com/myorders']
629
        return missingOrderUrls
633
        return missingOrderUrls