Subversion Repositories SmartDukaan

Rev

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

Rev 13576 Rev 13582
Line 37... Line 37...
37
                      main.Store.ORDER_CANCELLED : ['Closed For Vendor Reallocation']
37
                      main.Store.ORDER_CANCELLED : ['Closed For Vendor Reallocation']
38
                      
38
                      
39
                      }
39
                      }
40
    def __init__(self,store_id):
40
    def __init__(self,store_id):
41
        client = MongoClient('mongodb://localhost:27017/')
41
        client = MongoClient('mongodb://localhost:27017/')
42
        self.db = client.dtr
42
        self.db = client.Dtr
43
        super(Store, self).__init__(store_id)
43
        super(Store, self).__init__(store_id)
44
 
44
 
45
    def getName(self):
45
    def getName(self):
46
        return "snapdeal"
46
        return "snapdeal"
47
    
47
    
Line 61... Line 61...
61
        allPyOffers = [self.covertToObj(offer).__dict__ for offer in allOffers]
61
        allPyOffers = [self.covertToObj(offer).__dict__ for offer in allOffers]
62
        self._saveToAffiliate(allPyOffers)
62
        self._saveToAffiliate(allPyOffers)
63
    
63
    
64
    
64
    
65
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
65
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
-
 
66
        try:
66
        br = getBrowserObject()
67
            br = getBrowserObject()
67
        url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
68
            url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
68
        response = br.open(url)
69
            response = br.open(url)
69
        page = ungzipResponse(response, br)
70
            page = ungzipResponse(response, br)
70
        #page=page.decode("utf-8")
71
            #page=page.decode("utf-8")
71
        soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
72
            soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
72
        #orderHead = soup.find(name, attrs, recursive, text)
73
            #orderHead = soup.find(name, attrs, recursive, text)
73
        sections = soup.findAll("section")
74
            sections = soup.findAll("section")
74
        
75
            
75
        #print sections
76
            #print sections
76
        
77
            
77
        order = sections[1]
78
            order = sections[1]
78
        orderTrs = order.findAll("tr")
79
            orderTrs = order.findAll("tr")
79
        
80
            
80
        placedOn = str(orderTrs[0].findAll("td")[1].text)
81
            placedOn = str(orderTrs[0].findAll("td")[1].text)
81
        
82
            
82
        #Pop two section elements
83
            #Pop two section elements
83
        sections.pop(0) 
84
            sections.pop(0) 
84
        sections.pop(0)
85
            sections.pop(0)
85
        subOrders = sections
86
            subOrders = sections
86
        
87
            
87
         
88
             
88
        merchantSubOrders = []
89
            merchantSubOrders = []
89
 
90
    
90
        merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
91
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
91
        merchantOrder.merchantOderId = re.findall(r'\d+', str(soup.find("div", {"class":"deals_heading"})))[1]
92
            merchantOrder.merchantOderId = re.findall(r'\d+', str(soup.find("div", {"class":"deals_heading"})))[1]
92
        for orderTr in orderTrs:
93
            for orderTr in orderTrs:
93
            orderTrString = str(orderTr)
94
                orderTrString = str(orderTr)
94
            if "Total Amount" in orderTrString:
95
                if "Total Amount" in orderTrString:
95
                merchantOrder.totalAmount = re.findall(r'\d+', orderTrString)[0]
96
                    merchantOrder.totalAmount = re.findall(r'\d+', orderTrString)[0]
96
            elif "Delivery Charges" in orderTrString:
97
                elif "Delivery Charges" in orderTrString:
97
                merchantOrder.deliveryCharges = re.findall(r'\d+', orderTrString)[0]
98
                    merchantOrder.deliveryCharges = re.findall(r'\d+', orderTrString)[0]
98
            elif "Discount Applied" in orderTrString:
99
                elif "Discount Applied" in orderTrString:
99
                merchantOrder.discountApplied = re.findall(r'\d+', orderTrString)[0]
100
                    merchantOrder.discountApplied = re.findall(r'\d+', orderTrString)[0]
100
            elif "Paid Amount" in orderTrString:
101
                elif "Paid Amount" in orderTrString:
101
                merchantOrder.paidAmount = re.findall(r'\d+', orderTrString)[0]
102
                    merchantOrder.paidAmount = re.findall(r'\d+', orderTrString)[0]
102
 
103
    
103
        for subOrderElement in subOrders:
104
            for subOrderElement in subOrders:
104
            productUrl = str(subOrderElement.find("a")['href'])
105
                productUrl = str(subOrderElement.find("a")['href'])
105
            subTable = subOrderElement.find("table", {"class":"lrPad"})
106
                subTable = subOrderElement.find("table", {"class":"lrPad"})
106
            subTrs = subTable.findAll("tr")
107
                subTrs = subTable.findAll("tr")
107
            unitPrice=None
108
                unitPrice=None
108
            offerDiscount = None
109
                offerDiscount = None
109
            deliveryCharges = None
110
                deliveryCharges = None
110
            amountPaid = None
111
                amountPaid = None
111
            for subTr in subTrs:
112
                for subTr in subTrs:
112
                subTrString = str(subTr)
113
                    subTrString = str(subTr)
113
                if "Unit Price" in subTrString:
114
                    if "Unit Price" in subTrString:
114
                    unitPrice = re.findall(r'\d+', subTrString)[0]
115
                        unitPrice = re.findall(r'\d+', subTrString)[0]
115
                if "Quantity" in subTrString:
116
                    if "Quantity" in subTrString:
116
                    qty = re.findall(r'\d+', subTrString)[0]
117
                        qty = re.findall(r'\d+', subTrString)[0]
117
                elif "Offer Discount" in subTrString:
118
                    elif "Offer Discount" in subTrString:
118
                    offerDiscount =   re.findall(r'\d+', subTrString)[0]
119
                        offerDiscount =   re.findall(r'\d+', subTrString)[0]
119
                elif "Delivery Charges" in subTrString:
120
                    elif "Delivery Charges" in subTrString:
120
                    deliveryCharges =   re.findall(r'\d+', subTrString)[0]
121
                        deliveryCharges =   re.findall(r'\d+', subTrString)[0]
121
                elif "Subtotal" in subTrString:
122
                    elif "Subtotal" in subTrString:
122
                    amountPaid =   str(int(re.findall(r'\d+', subTrString)[0])/int(qty))
123
                        amountPaid =   str(int(re.findall(r'\d+', subTrString)[0])/int(qty))
123
                    
124
                        
124
            divs = subOrderElement.findAll("div", {"class": "blk lrPad subordrs"})
125
                divs = subOrderElement.findAll("div", {"class": "blk lrPad subordrs"})
125
            if len(divs)<=0:
126
                if len(divs)<=0:
126
                raise ParseException("subOrder", "Could not Parse suborders for Snapdeal")
127
                    raise ParseException("subOrder", "Could not Parse suborders for Snapdeal")
127
            
-
 
128
            for div in divs:
-
 
129
                productTitle = str(subOrderElement.find("a").text)
-
 
130
                productUrl = "http://m.snapdeal.com/" + productUrl 
-
 
131
                subOrder = SubOrder(productTitle, productUrl, placedOn, amountPaid)
-
 
132
 
-
 
133
                subOrder.amountPaid = amountPaid
-
 
134
                subOrder.deliveryCharges = deliveryCharges
-
 
135
                subOrder.offerDiscount = offerDiscount
-
 
136
                subOrder.unitPrice = unitPrice
-
 
137
                subOrder.productCode = re.findall(r'\d+$', productUrl)[0]
-
 
138
                
-
 
139
                trackAnchor = div.find("a")   
-
 
140
                if trackAnchor is not None:
-
 
141
                    subOrder.tracingkUrl = str(trackAnchor['href'])
-
 
142
                
-
 
143
                divStr = str(div)
-
 
144
                divStr = divStr.replace("\n","").replace("\t", "")
-
 
145
                
128
                
-
 
129
                for div in divs:
-
 
130
                    productTitle = str(subOrderElement.find("a").text)
-
 
131
                    productUrl = "http://m.snapdeal.com/" + productUrl 
-
 
132
                    subOrder = SubOrder(productTitle, productUrl, placedOn, amountPaid)
-
 
133
    
-
 
134
                    subOrder.amountPaid = amountPaid
-
 
135
                    subOrder.deliveryCharges = deliveryCharges
-
 
136
                    subOrder.offerDiscount = offerDiscount
-
 
137
                    subOrder.unitPrice = unitPrice
-
 
138
                    subOrder.productCode = re.findall(r'\d+$', productUrl)[0]
-
 
139
                    
-
 
140
                    trackAnchor = div.find("a")   
-
 
141
                    if trackAnchor is not None:
-
 
142
                        subOrder.tracingkUrl = str(trackAnchor['href'])
-
 
143
                    
-
 
144
                    divStr = str(div)
-
 
145
                    divStr = divStr.replace("\n","").replace("\t", "")
-
 
146
                    
146
                for line in divStr.split("<br />"):
147
                    for line in divStr.split("<br />"):
147
                    if "Suborder ID" in line:
148
                        if "Suborder ID" in line:
148
                        subOrder.merchantSubOrderId = re.findall(r'\d+', line)[0]   
149
                            subOrder.merchantSubOrderId = re.findall(r'\d+', line)[0]   
149
                    elif "Status" in line:
150
                        elif "Status" in line:
150
                        subOrder.detailedStatus = re.findall('>(.*?)</span>', line, re.IGNORECASE)[0]
151
                            subOrder.detailedStatus = re.findall('>(.*?)</span>', line, re.IGNORECASE)[0]
151
                    elif "Est. Shipping Date" in line:
152
                        elif "Est. Shipping Date" in line:
152
                        subOrder.estimatedShippingDate = line.split(":")[1].strip()
153
                            subOrder.estimatedShippingDate = line.split(":")[1].strip()
153
                    elif "Est. Delivery Date" in line:
154
                        elif "Est. Delivery Date" in line:
154
                        subOrder.estimatedDeliveryDate = line.split(":")[1].strip()
155
                            subOrder.estimatedDeliveryDate = line.split(":")[1].strip()
155
                    elif "Courier Name" in line:
156
                        elif "Courier Name" in line:
156
                        subOrder.courierName = line.split(":")[1].strip()
157
                            subOrder.courierName = line.split(":")[1].strip()
157
                    elif "Tracking No" in line:
158
                        elif "Tracking No" in line:
158
                        subOrder.trackingNumber = line.split(":")[1].strip()
159
                            subOrder.trackingNumber = line.split(":")[1].strip()
159
                           
160
                               
160
            merchantSubOrders.append(subOrder)   
161
                merchantSubOrders.append(subOrder)   
161
        
162
            
162
        merchantOrder.subOrders = merchantSubOrders
163
            merchantOrder.subOrders = merchantSubOrders
163
        #print merchantOrder
164
            #print merchantOrder
164
        
165
            
165
        self._saveToOrder(todict(merchantOrder))
166
            self._saveToOrder(todict(merchantOrder))
-
 
167
            return True
-
 
168
        except:
-
 
169
            print "Error occurred"
166
        
170
        
-
 
171
        return False
167
        #soup = BeautifulSoup(rawHtml,convertEntities=BeautifulSoup.HTML_ENTITIES)
172
        #soup = BeautifulSoup(rawHtml,convertEntities=BeautifulSoup.HTML_ENTITIES)
168
        #soup.find(name, attrs, recursive, text)
173
        #soup.find(name, attrs, recursive, text)
169
    
174
    
170
                      
175
                      
171
 
176