Subversion Repositories SmartDukaan

Rev

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

Rev 21269 Rev 21270
Line 282... Line 282...
282
            
282
            
283
            
283
            
284
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
284
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
285
        resp= {}
285
        resp= {}
286
        try:
286
        try:
287
            br = getBrowserObject(mobileAgent)
-
 
288
            url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query 
-
 
289
           
-
 
290
            response = br.open(url)
-
 
291
            page = ungzipResponse(response)
-
 
292
            
-
 
293
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
287
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
-
 
288
            if len(self.db.merchantOrder.find({"merchantOrderId":merchantOrderId})) == 0:
-
 
289
                br = getBrowserObject(mobileAgent)
-
 
290
                url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query 
-
 
291
               
-
 
292
                response = br.open(url)
-
 
293
                page = ungzipResponse(response)
-
 
294
                
294
            print merchantOrderId
295
                print merchantOrderId
295
            
296
                
296
            soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
297
                soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
297
            
298
                
298
            sections = soup.findAll("div", {"class":"ui-app-card-body"})
299
                sections = soup.findAll("div", {"class":"ui-app-card-body"})
299
            sections.pop(1)
300
                sections.pop(1)
300
    
301
        
301
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
302
                merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
302
            merchantOrder.closed = True
303
                merchantOrder.closed = True
303
            merchantOrder.orderTrackingUrl = url
304
                merchantOrder.orderTrackingUrl = url
304
            for data in sections:
305
                for data in sections:
305
                name = data.findAll("span")
306
                    name = data.findAll("span")
306
                i=0
307
                    i=0
307
                while i< len(name):
308
                    while i< len(name):
308
                    if "key" in str(name[i]):
309
                        if "key" in str(name[i]):
309
                        if "Grand Total" in str(name[i]):
310
                            if "Grand Total" in str(name[i]):
310
                            #Total Amount
311
                                #Total Amount
311
                            merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
312
                                merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
312
                        elif "Order Date" in str(name[i]):
313
                            elif "Order Date" in str(name[i]):
313
                            merchantOrder.placedOn = name[i+1].text 
314
                                merchantOrder.placedOn = name[i+1].text 
314
                    i=i+1    
315
                        i=i+1    
315
            
316
                
316
            merchantOrder.merchantOrderId = merchantOrderId
317
                merchantOrder.merchantOrderId = merchantOrderId
317
    
318
        
318
            mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
319
                mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
319
            fkSubOrders = mainOrder.findAll("li")
320
                fkSubOrders = mainOrder.findAll("li")
320
            #remove unwanted list
321
                #remove unwanted list
321
            fkSubOrders.pop(-1)
322
                fkSubOrders.pop(-1)
322
            subOrders = []
323
                subOrders = []
323
            merchantOrder.subOrders = subOrders
324
                merchantOrder.subOrders = subOrders
324
    
325
        
325
            for subOrder in fkSubOrders:
326
                for subOrder in fkSubOrders:
326
                orderItems = subOrder.findAll("div", "product-list-item", recursive=True)
327
                    orderItems = subOrder.findAll("div", "product-list-item", recursive=True)
327
                for orderItem in orderItems:
328
                    for orderItem in orderItems:
328
                    if not orderItem.has_key("id"):
329
                        if not orderItem.has_key("id"):
329
                        continue
330
                            continue
330
                    divs = orderItem.findAll('div', recursive=False)
331
                        divs = orderItem.findAll('div', recursive=False)
331
                    content = divs[0]
332
                        content = divs[0]
332
                    orderTracking = divs[2]
333
                        orderTracking = divs[2]
333
                    merchantSubOrderId = divs[3].get('id')
334
                        merchantSubOrderId = divs[3].get('id')
334
                    imgUrl = content.find('img')['src']
335
                        imgUrl = content.find('img')['src']
335
                    lineDet = content.find("div",{"class":"product-info"})
336
                        lineDet = content.find("div",{"class":"product-info"})
336
                    productTitle = lineDet.find("a",{"class":"product-title"}).text
337
                        productTitle = lineDet.find("a",{"class":"product-title"}).text
337
                    productUrl =  str(lineDet.find("a")['href'])
338
                        productUrl =  str(lineDet.find("a")['href'])
-
 
339
        
-
 
340
                        start='pid='
-
 
341
                        s=str(lineDet.find("a")['href'])
-
 
342
                        productCode = re.findall(re.escape(start)+"(.*)",s)[0].strip()
-
 
343
                        mname = lineDet.findAll("span")
-
 
344
                        k=0
-
 
345
                        while k<len(mname):
-
 
346
                            if "note" in str(mname[k]):
-
 
347
                                if "Color:" in str(mname[k]):
-
 
348
                                    productTitle = productTitle + " " + mname[k+1].text
-
 
349
                                    
-
 
350
                                elif "Qty:" in str(mname[k]):
-
 
351
                                    quantity = int(mname[k+1].text)
-
 
352
                                elif "Subtotal:" in str(mname[k]):
-
 
353
                                    amountPaid = int(re.findall(r'\d+', mname[k+1].text)[0])
-
 
354
                                elif "Delivery:" in str(mname[k]):
-
 
355
                                    #Delivery Date for sub order
-
 
356
                                    print "Delivery Date " +mname[k+1].text
-
 
357
                            k=k+1
-
 
358
                        merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
-
 
359
                        merchantsubOrder.imgUrl  = imgUrl
-
 
360
                        merchantsubOrder.productCode = productCode
-
 
361
                        merchantsubOrder.merchantSubOrderId = merchantSubOrderId
-
 
362
                        print "productCode", productCode
-
 
363
                        print "amountPaid", amountPaid
-
 
364
                        cashbackAmount, cashbackPercent = self.getCashbackAmount(productCode, amountPaid)
-
 
365
                        cashbackStatus = Store.CB_PENDING
-
 
366
                        if cashbackAmount <= 0:
-
 
367
                            cashbackStatus = Store.CB_NA
-
 
368
                        merchantsubOrder.cashBackAmount = cashbackAmount
-
 
369
                        merchantsubOrder.cashBackStatus = cashbackStatus      
-
 
370
                        merchantsubOrder.cashBackPercentage = cashbackPercent
-
 
371
                        activePart = orderItem.find("div", "c-tabs-content m-top active")
-
 
372
                        if activePart is not None:
-
 
373
                            merchantsubOrder.detailedStatus = str(activePart.find("div", "tracking-remark").text)   
-
 
374
                        
-
 
375
                        #To track shipping details         
-
 
376
                        status=ORDER_PLACED
-
 
377
                        tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
-
 
378
                        if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
-
 
379
                            pass
-
 
380
                        elif "shippingDetails-ongoing" in str(tr):
-
 
381
                            status = MStore.ORDER_SHIPPED
-
 
382
                        elif "delivery-complete" in str(tr):
-
 
383
                            status = MStore.ORDER_DELIVERED
-
 
384
                            if cashbackStatus!=MStore.CB_NA:
-
 
385
                                merchantsubOrder.cashBackStatus = MStore.CB_APPROVED
-
 
386
                            merchantsubOrder.closed = True
-
 
387
                        if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
-
 
388
                            status = MStore.ORDER_CANCELLED
-
 
389
                            if merchantsubOrder.cashBackStatus != MStore.CB_NA:    
-
 
390
                                merchantsubOrder.cashBackStatus = MStore.CB_CANCELLED
-
 
391
                            merchantsubOrder.closed = True
-
 
392
                        print "Sub Order Status " + str(status)
-
 
393
                        merchantsubOrder.status=status
-
 
394
                        if merchantOrder.closed:
-
 
395
                            merchantOrder.closed = merchantsubOrder.closed 
-
 
396
                        subOrders.append(merchantsubOrder)
338
    
397
    
339
                    start='pid='
-
 
340
                    s=str(lineDet.find("a")['href'])
-
 
341
                    productCode = re.findall(re.escape(start)+"(.*)",s)[0].strip()
-
 
342
                    mname = lineDet.findAll("span")
-
 
343
                    k=0
-
 
344
                    while k<len(mname):
-
 
345
                        if "note" in str(mname[k]):
-
 
346
                            if "Color:" in str(mname[k]):
-
 
347
                                productTitle = productTitle + " " + mname[k+1].text
-
 
348
                                
-
 
349
                            elif "Qty:" in str(mname[k]):
-
 
350
                                quantity = int(mname[k+1].text)
-
 
351
                            elif "Subtotal:" in str(mname[k]):
-
 
352
                                amountPaid = int(re.findall(r'\d+', mname[k+1].text)[0])
-
 
353
                            elif "Delivery:" in str(mname[k]):
-
 
354
                                #Delivery Date for sub order
-
 
355
                                print "Delivery Date " +mname[k+1].text
-
 
356
                        k=k+1
-
 
357
                    merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
-
 
358
                    merchantsubOrder.imgUrl  = imgUrl
-
 
359
                    merchantsubOrder.productCode = productCode
398
                if self._saveToOrder(todict(merchantOrder)):
360
                    merchantsubOrder.merchantSubOrderId = merchantSubOrderId
-
 
361
                    print "productCode", productCode
-
 
362
                    print "amountPaid", amountPaid
-
 
363
                    cashbackAmount, cashbackPercent = self.getCashbackAmount(productCode, amountPaid)
-
 
364
                    cashbackStatus = Store.CB_PENDING
399
                    resp['result'] = 'ORDER_CREATED'
365
                    if cashbackAmount <= 0:
-
 
366
                        cashbackStatus = Store.CB_NA
-
 
367
                    merchantsubOrder.cashBackAmount = cashbackAmount
-
 
368
                    merchantsubOrder.cashBackStatus = cashbackStatus      
-
 
369
                    merchantsubOrder.cashBackPercentage = cashbackPercent
-
 
370
                    activePart = orderItem.find("div", "c-tabs-content m-top active")
-
 
371
                    if activePart is not None:
-
 
372
                        merchantsubOrder.detailedStatus = str(activePart.find("div", "tracking-remark").text)   
-
 
373
                    
400
                else:
374
                    #To track shipping details         
-
 
375
                    status=ORDER_PLACED
-
 
376
                    tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
-
 
377
                    if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
-
 
378
                        pass
-
 
379
                    elif "shippingDetails-ongoing" in str(tr):
-
 
380
                        status = MStore.ORDER_SHIPPED
-
 
381
                    elif "delivery-complete" in str(tr):
-
 
382
                        status = MStore.ORDER_DELIVERED
-
 
383
                        if cashbackStatus!=MStore.CB_NA:
-
 
384
                            merchantsubOrder.cashBackStatus = MStore.CB_APPROVED
-
 
385
                        merchantsubOrder.closed = True
-
 
386
                    if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
-
 
387
                        status = MStore.ORDER_CANCELLED
-
 
388
                        if merchantsubOrder.cashBackStatus != MStore.CB_NA:    
-
 
389
                            merchantsubOrder.cashBackStatus = MStore.CB_CANCELLED
-
 
390
                        merchantsubOrder.closed = True
-
 
391
                    print "Sub Order Status " + str(status)
-
 
392
                    merchantsubOrder.status=status
-
 
393
                    if merchantOrder.closed:
-
 
394
                        merchantOrder.closed = merchantsubOrder.closed 
-
 
395
                    subOrders.append(merchantsubOrder)
-
 
396
 
-
 
397
            if self._saveToOrder(todict(merchantOrder)):
-
 
398
                resp['result'] = 'ORDER_CREATED'
401
                    resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
399
            else:
402
            else:
400
                resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
403
                resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
401
                
404
                
402
            return resp 
405
            return resp 
403
        except:
406
        except: