Subversion Repositories SmartDukaan

Rev

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

Rev 13730 Rev 13781
Line 28... Line 28...
28
AFF_STATUS_APPROVED='approved'
28
AFF_STATUS_APPROVED='approved'
29
AFF_STATUS_DISAPPROVED='disapproved'
29
AFF_STATUS_DISAPPROVED='disapproved'
30
AFF_STATUS_PENDING='pending'
30
AFF_STATUS_PENDING='pending'
31
 
31
 
32
 
32
 
33
class Store(main.Store):
33
class Store(MStore):
34
    OrderStatusMap = {
34
    OrderStatusMap = {
35
                      main.Store.ORDER_PLACED : ['Approval', 'Processing'],
35
                      main.Store.ORDER_PLACED : ['Approval', 'Processing'],
36
                      main.Store.ORDER_DELIVERED : ['Shipping'],
36
                      main.Store.ORDER_DELIVERED : ['Shipping'],
37
                      main.Store.ORDER_SHIPPED : ['In Transit'],
37
                      main.Store.ORDER_SHIPPED : ['In Transit'],
38
                      main.Store.ORDER_CANCELLED : ['']
38
                      main.Store.ORDER_CANCELLED : ['']
Line 171... Line 171...
171
                    updateMap['subOrders.$.cashBackAmount'], updateMap['subOrders.$.cashBacPercentage'] = self.getCashbackAmount(productCode, price)
171
                    updateMap['subOrders.$.cashBackAmount'], updateMap['subOrders.$.cashBacPercentage'] = self.getCashbackAmount(productCode, price)
172
                    self._updateOrdersPayBackStatus({'subTagId':subTagId, 'subOrders.productCode':productCode}, updateMap)
172
                    self._updateOrdersPayBackStatus({'subTagId':subTagId, 'subOrders.productCode':productCode}, updateMap)
173
        
173
        
174
    
174
    
175
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
175
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
176
        br = getBrowserObject()
176
        response= {}
177
        url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
177
        try:
178
       
178
            br = getBrowserObject()
179
        response = br.open(url)
179
            url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
180
        page = ungzipResponse(response)
180
           
181
        
181
            response = br.open(url)
182
        merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
182
            page = ungzipResponse(response)
183
        print merchantOrderId
183
            
184
        
184
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
185
        soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
185
            print merchantOrderId
186
        
186
            
187
        sections = soup.findAll("div", {"class":"ui-app-card-body"})
187
            soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
188
        sections.pop(1)
188
            
189
 
189
            sections = soup.findAll("div", {"class":"ui-app-card-body"})
190
        merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
190
            sections.pop(1)
191
        for data in sections:
191
    
192
            name = data.findAll("span")
192
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
193
            i=0
193
            for data in sections:
194
            while i< len(name):
194
                name = data.findAll("span")
195
                if "key" in str(name[i]):
195
                i=0
196
                    if "Grand Total" in str(name[i]):
196
                while i< len(name):
197
                        #Total Amount
197
                    if "key" in str(name[i]):
198
                        merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
198
                        if "Grand Total" in str(name[i]):
199
                    elif "Order Date" in str(name[i]):
199
                            #Total Amount
200
                        merchantOrder.placedOn = name[i+1].text 
200
                            merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
201
                i=i+1    
201
                        elif "Order Date" in str(name[i]):
202
        
202
                            merchantOrder.placedOn = name[i+1].text 
203
        merchantOrder.merchantOrderId = merchantOrderId
203
                    i=i+1    
204
 
204
            
205
        mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
205
            merchantOrder.merchantOrderId = merchantOrderId
206
        fkSubOrders = mainOrder.findAll("li")
206
    
207
        #remove unwanted list
207
            mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
208
        fkSubOrders.pop(-1)
208
            fkSubOrders = mainOrder.findAll("li")
209
        subOrders = []
209
            #remove unwanted list
210
        merchantOrder.subOrders = subOrders
210
            fkSubOrders.pop(-1)
211
 
211
            subOrders = []
212
        #fetching suborders details
212
            merchantOrder.subOrders = subOrders
213
        for subOrder in fkSubOrders:
213
    
214
            y = subOrder.find("header").findAll("span")
214
            #fetching suborders details
215
            for suborderId in y:
215
            for subOrder in fkSubOrders:
216
                if "value emp" in str(suborderId):
216
                y = subOrder.find("header").findAll("span")
217
                    merchantSubOrderId = suborderId.text
217
                for suborderId in y:
218
                    break
218
                    if "value emp" in str(suborderId):
219
            orderItems = subOrder.find("ul").findAll("div", recursive=False)
219
                        merchantSubOrderId = suborderId.text
220
            i=0
220
                        break
221
            for orderItem in orderItems:
221
                orderItems = subOrder.find("ul").findAll("div", recursive=False)
222
                merchantOrder.placedOn
222
                i=0
223
                merchantSubOrderId = merchantSubOrderId + str(i)
223
                for orderItem in orderItems:
224
                divs = orderItem.findAll('div', recursive=False)
224
                    merchantOrder.placedOn
225
                content = divs[0]
225
                    merchantSubOrderId = merchantSubOrderId + str(i)
226
                orderTracking = divs[2]
226
                    divs = orderItem.findAll('div', recursive=False)
227
                orderTrackingDet = divs[3]
227
                    content = divs[0]
228
                
228
                    orderTracking = divs[2]
229
                
229
                    orderTrackingDet = divs[3]
230
                imgUrl = content.find('img')['src']
230
                    
231
                lineDet = content.find("div",{"class":"product-info"})
231
                    
232
                productTitle = lineDet.find("a",{"class":"product-title"}).text
232
                    imgUrl = content.find('img')['src']
233
                productUrl =  str(lineDet.find("a")['href'])
233
                    lineDet = content.find("div",{"class":"product-info"})
234
 
234
                    productTitle = lineDet.find("a",{"class":"product-title"}).text
235
                start='pid='
235
                    productUrl =  str(lineDet.find("a")['href'])
236
                s=str(lineDet.find("a")['href'])
236
    
237
                productCode = re.findall(re.escape(start)+"(.*)",s)[0]
237
                    start='pid='
238
                mname = lineDet.findAll("span")
238
                    s=str(lineDet.find("a")['href'])
239
                k=0
239
                    productCode = re.findall(re.escape(start)+"(.*)",s)[0]
240
                while k<len(mname):
240
                    mname = lineDet.findAll("span")
241
                    if "note" in str(mname[k]):
241
                    k=0
242
                        if "Color:" in str(mname[k]):
242
                    while k<len(mname):
243
                            productTitle = productTitle + " " + mname[k+1].text
243
                        if "note" in str(mname[k]):
244
                            
244
                            if "Color:" in str(mname[k]):
245
                        elif "Qty:" in str(mname[k]):
245
                                productTitle = productTitle + " " + mname[k+1].text
246
                            quantity = int(mname[k+1].text)
246
                                
247
                        elif "Subtotal:" in str(mname[k]):
247
                            elif "Qty:" in str(mname[k]):
248
                            amountPaid = re.findall(r'\d+', mname[k+1].text)[0]
248
                                quantity = int(mname[k+1].text)
249
                        elif "Delivery:" in str(mname[k]):
249
                            elif "Subtotal:" in str(mname[k]):
250
                            #Delivery Date for sub order
250
                                amountPaid = re.findall(r'\d+', mname[k+1].text)[0]
251
                            print "Delivery Date " +mname[k+1].text
251
                            elif "Delivery:" in str(mname[k]):
252
                    k=k+1
252
                                #Delivery Date for sub order
253
                merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
253
                                print "Delivery Date " +mname[k+1].text
254
                merchantsubOrder.imgUrl  = imgUrl
254
                        k=k+1
255
                merchantsubOrder.productCode = productCode
255
                    merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
256
                merchantsubOrder.merchantSubOrderId = merchantSubOrderId
256
                    merchantsubOrder.imgUrl  = imgUrl
257
                cashbackAmount, cashbackPercent = self.getCashbackAmount(subOrder.productCode, amountPaid)
257
                    merchantsubOrder.productCode = productCode
258
                cashbackStatus = Store.CB_INIT
258
                    merchantsubOrder.merchantSubOrderId = merchantSubOrderId
259
                if cashbackAmount <= 0:
259
                    cashbackAmount, cashbackPercent = self.getCashbackAmount(subOrder.productCode, amountPaid)
260
                    cashbackStatus = Store.CB_NA
260
                    cashbackStatus = Store.CB_PENDING
261
                merchantsubOrder.cashBackAmount = cashbackAmount
261
                    if cashbackAmount <= 0:
262
                merchantsubOrder.cashBackStatus = cashbackStatus      
262
                        cashbackStatus = Store.CB_NA
263
                merchantsubOrder.cashBackPercentage = cashbackPercent      
263
                    merchantsubOrder.cashBackAmount = cashbackAmount
264
                
264
                    merchantsubOrder.cashBackStatus = cashbackStatus      
265
                subOrders.append(merchantsubOrder)
265
                    merchantsubOrder.cashBackPercentage = cashbackPercent      
266
                #To track shipping details         
266
                    
267
                status=-1    
267
                    subOrders.append(merchantsubOrder)
268
                tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
268
                    #To track shipping details         
269
                if "approveDetails-complete" in str(tr):
269
                    status=-1    
270
                    if "processingDetails-complete" in str(tr):
270
                    tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
271
                        if "shippingDetails-complete" in str(tr):
271
                    if "approveDetails-complete" in str(tr):
272
                            if "delivery-complete" in str(tr):
272
                        if "processingDetails-complete" in str(tr):
273
                                status = MStore.ORDER_DELIVERED
273
                            if "shippingDetails-complete" in str(tr):
274
                            else:     
274
                                if "delivery-complete" in str(tr):
275
                                status = MStore.ORDER_SHIPPED
275
                                    status = MStore.ORDER_DELIVERED
276
                                orderTracking.find('div', {'class':'tracking-remark active'})
276
                                else:     
277
                        else:
277
                                    status = MStore.ORDER_SHIPPED
-
 
278
                                    orderTracking.find('div', {'class':'tracking-remark active'})
-
 
279
                            else:
-
 
280
                                status = MStore.ORDER_PLACED
-
 
281
                        else: 
278
                            status = MStore.ORDER_PLACED
282
                            status = MStore.ORDER_PLACED
279
                    else: 
-
 
280
                        status = MStore.ORDER_PLACED
-
 
281
                elif str(tr) in ["approveDetails-ongoing"]:
283
                    elif str(tr) in ["approveDetails-ongoing"]:
282
                    status=MStore.ORDER_PLACED             
284
                        status=MStore.ORDER_PLACED             
283
                if "dead" in str(tr):
285
                    if "dead" in str(tr):
284
                    status = MStore.ORDER_CANCELLED    
286
                        status = MStore.ORDER_CANCELLED    
285
                print "Sub Order Status " + str(status)                      
287
                    print "Sub Order Status " + str(status)                      
286
                
288
                    
287
                trackingDetailsActive = orderTrackingDet.find("div",{"class":"c-tabs-content m-top active"})
289
                    trackingDetailsActive = orderTrackingDet.find("div",{"class":"c-tabs-content m-top active"})
288
                print "Sub order tracking description " + trackingDetailsActive.text
290
                    print "Sub order tracking description " + trackingDetailsActive.text
289
        self._saveToOrder(todict(merchantOrder))
291
            self._saveToOrder(todict(merchantOrder))
-
 
292
            response['result'] = 'ORDER_CREATED'
-
 
293
            return response 
-
 
294
        except:
-
 
295
            response['result'] = 'PARSE_ERROR'
-
 
296
            return response 
-
 
297
            
290
    
298
    
291
    def flipkartOrderTracking(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
299
    def flipkartOrderTracking(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
292
        br = getBrowserObject()
300
        br = getBrowserObject()
293
        url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
301
        url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
294
       
302