Subversion Repositories SmartDukaan

Rev

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

Rev 18762 Rev 19153
Line 46... Line 46...
46
        except Exception, e:
46
        except Exception, e:
47
            print e
47
            print e
48
            return None
48
            return None
49
    return con
49
    return con
50
 
50
 
-
 
51
def calculateCashBack(data, inputPrice):
-
 
52
    try:
-
 
53
        cashBack = getCashBack(data['_id'], data['source_id'], data['category_id'], mc, 'localhost')
-
 
54
        print "CashBack is ",cashBack
-
 
55
        if not cashBack or cashBack.get('cash_back_status')!=1:
-
 
56
            data['cash_back_type'] = 0
-
 
57
            data['cash_back'] = 0
-
 
58
        else:
-
 
59
            if cashBack['cash_back_type'] in (1,2):
-
 
60
                
-
 
61
                if cashBack.get('maxCashBack') is not None:
-
 
62
                    
-
 
63
                    if cashBack.get('cash_back_type') ==1 and (float(cashBack.get('cash_back'))*data['available_price'])/100 > cashBack.get('maxCashBack'):
-
 
64
                        cashBack['cash_back_type'] = 2
-
 
65
                        cashBack['cash_back'] = cashBack['maxCashBack']
-
 
66
                    elif cashBack.get('cash_back_type') ==2 and cashBack.get('cash_back') > cashBack.get('maxCashBack'):
-
 
67
                        cashBack['cash_back'] = cashBack['maxCashBack']
-
 
68
                    else:
-
 
69
                        pass
-
 
70
                
-
 
71
                data['cash_back_type'] = cashBack['cash_back_type']
-
 
72
                data['cash_back'] = float(cashBack['cash_back'])
-
 
73
            else:
-
 
74
                data['cash_back_type'] = 0
-
 
75
                data['cash_back'] = 0
-
 
76
    except Exception as cashBackEx:
-
 
77
        traceback.print_exc()
-
 
78
        print "Error calculating cashback."
-
 
79
        data['cash_back_type'] = 0
-
 
80
        data['cash_back'] = 0
-
 
81
        
-
 
82
    if data['cash_back_type'] == 1:
-
 
83
        data['netPriceAfterCashBack'] = inputPrice - float(inputPrice)*data['cash_back']/100
-
 
84
    elif data['cash_back_type'] == 2:
-
 
85
        data['netPriceAfterCashBack'] = inputPrice - data['cash_back']
-
 
86
    else:
-
 
87
        data['netPriceAfterCashBack'] = inputPrice
-
 
88
    
-
 
89
    return data
-
 
90
 
51
def returnLatestPrice(data, source_id, ignoreLastUpdated = True):
91
def returnLatestPrice(data, source_id, ignoreLastUpdated = True):
52
    now = datetime.now()
92
    now = datetime.now()
53
    if source_id == 1:
93
    if source_id == 1:
54
        try:
94
        try:
55
            if data['identifier'] is None or len(data['identifier'].strip())==0:
95
            if data['identifier'] is None or len(data['identifier'].strip())==0:
56
                return {}
96
                return {}
57
            
97
            
58
            if data.get('ignorePricing') ==1:
-
 
59
                if data['dealFlag'] ==1 and data['dealType'] ==1:
-
 
60
                    data['marketPlaceUrl'] = data['dealUrl'].strip()
-
 
61
                return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
-
 
62
            
-
 
63
            
-
 
64
            if data['dealFlag'] ==1 and data['dealType'] ==1:
98
            if data['dealFlag'] ==1 and data['dealType'] ==1:
65
                data['marketPlaceUrl'] = data['dealUrl'].strip()
99
                data['marketPlaceUrl'] = data['dealUrl'].strip()
66
            
100
            
-
 
101
            
-
 
102
            if data.get('ignorePricing') ==1:
-
 
103
                return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
-
 
104
            
67
            try:
105
            try:
68
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
106
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
69
                    print "sku id is already updated",data['_id'] 
107
                    print "sku id is already updated",data['_id'] 
70
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
108
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
71
            except:
109
            except:
Line 490... Line 528...
490
    
528
    
491
    """Lets recompute deal for this bundle"""
529
    """Lets recompute deal for this bundle"""
492
    print "Recomputing for bundleId",item.get('skuBundleId')
530
    print "Recomputing for bundleId",item.get('skuBundleId')
493
    skuBundleId = item['skuBundleId']
531
    skuBundleId = item['skuBundleId']
494
    
532
    
495
    similarItems = list(get_mongo_connection().Catalog.Deals.find({'skuBundleId':skuBundleId}).sort([('available_price',pymongo.ASCENDING)]))
533
    similarItems = list(get_mongo_connection().Catalog.Deals.find({'skuBundleId':skuBundleId}).sort([('netPriceAfterCashBack',pymongo.ASCENDING)]))
496
    bestPrice = float("inf")
534
    bestPrice = float("inf")
497
    bestOne = None
535
    bestOne = None
498
    bestSellerPoints = 0
536
    bestSellerPoints = 0
499
    toUpdate = []
537
    toUpdate = []
500
    prepaidBestPrice = float("inf")
538
    prepaidBestPrice = float("inf")
Line 512... Line 550...
512
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
550
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
513
                continue
551
                continue
514
            if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0 and similarItem['category_id']!=6:
552
            if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0 and similarItem['category_id']!=6:
515
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
553
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
516
                continue
554
                continue
517
            if similarItem['available_price'] < bestPrice:
555
            if similarItem['netPriceAfterCashBack'] < bestPrice:
518
                bestOne = similarItem
556
                bestOne = similarItem
519
                bestPrice = similarItem['available_price']
557
                bestPrice = similarItem['netPriceAfterCashBack']
520
                bestSellerPoints = similarItem['bestSellerPoints']
558
                bestSellerPoints = similarItem['bestSellerPoints']
521
            elif similarItem['available_price'] == bestPrice and bestSellerPoints < similarItem['bestSellerPoints']:
559
            elif similarItem['netPriceAfterCashBack'] == bestPrice and bestSellerPoints < similarItem['bestSellerPoints']:
522
                bestOne = similarItem
560
                bestOne = similarItem
523
                bestPrice = similarItem['available_price']
561
                bestPrice = similarItem['netPriceAfterCashBack']
524
                bestSellerPoints = similarItem['bestSellerPoints']
562
                bestSellerPoints = similarItem['bestSellerPoints']
525
            else:
563
            else:
526
                pass
564
                pass
527
        else:
565
        else:
528
            if mc.get("negative_deals") is None:
566
            if mc.get("negative_deals") is None:
Line 531... Line 569...
531
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
569
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
532
                continue
570
                continue
533
            if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0 and similarItem['category_id']!=6:
571
            if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0 and similarItem['category_id']!=6:
534
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
572
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
535
                continue
573
                continue
536
            if similarItem['source_id'] == SOURCE_MAP.get('PAYTM.COM'):
-
 
537
                similarItem['available_price'] = similarItem['gross_price']
-
 
538
            if similarItem['available_price'] < prepaidBestPrice:
574
            if similarItem['netPriceAfterCashBack'] < prepaidBestPrice:
539
                prepaidBestOne = similarItem
575
                prepaidBestOne = similarItem
540
                prepaidBestPrice = similarItem['available_price']
576
                prepaidBestPrice = similarItem['netPriceAfterCashBack']
541
                prepaidBestSellerPoints = similarItem['bestSellerPoints']
577
                prepaidBestSellerPoints = similarItem['bestSellerPoints']
542
            elif similarItem['available_price'] == prepaidBestPrice and prepaidBestSellerPoints < similarItem['bestSellerPoints']:
578
            elif similarItem['netPriceAfterCashBack'] == prepaidBestPrice and prepaidBestSellerPoints < similarItem['bestSellerPoints']:
543
                prepaidBestOne = similarItem
579
                prepaidBestOne = similarItem
544
                prepaidBestPrice = similarItem['available_price']
580
                prepaidBestPrice = similarItem['netPriceAfterCashBack']
545
                prepaidBestSellerPoints = similarItem['bestSellerPoints']
581
                prepaidBestSellerPoints = similarItem['bestSellerPoints']
546
            else:
582
            else:
547
                pass
583
                pass
548
    #print "bestOne ", bestOne
584
    #print "bestOne ", bestOne
549
    #print "prepaid best one",  prepaidBestOne
585
    #print "prepaid best one",  prepaidBestOne
Line 553... Line 589...
553
        if bestOne is not None:
589
        if bestOne is not None:
554
            toUpdate.remove(bestOne['_id'])
590
            toUpdate.remove(bestOne['_id'])
555
            get_mongo_connection().Catalog.Deals.update({ '_id' : bestOne['_id'] }, {'$set':{'showDeal':1,'prepaidDeal':0 }})
591
            get_mongo_connection().Catalog.Deals.update({ '_id' : bestOne['_id'] }, {'$set':{'showDeal':1,'prepaidDeal':0 }})
556
        if prepaidBestOne is not None:
592
        if prepaidBestOne is not None:
557
            if bestOne is not None:
593
            if bestOne is not None:
558
                if prepaidBestOne['available_price'] < bestOne['available_price']: 
594
                if prepaidBestOne['netPriceAfterCashBack'] < bestOne['netPriceAfterCashBack']: 
559
                    toUpdate.remove(prepaidBestOne['_id'])
595
                    toUpdate.remove(prepaidBestOne['_id'])
560
                    get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
596
                    get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
561
            else:
597
            else:
562
                toUpdate.remove(prepaidBestOne['_id'])
598
                toUpdate.remove(prepaidBestOne['_id'])
563
                get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
599
                get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
Line 582... Line 618...
582
        if len(manualDeals) > 0:
618
        if len(manualDeals) > 0:
583
            item['dealFlag'] = 1
619
            item['dealFlag'] = 1
584
            item['dealType'] =manualDeals[0]['dealType']
620
            item['dealType'] =manualDeals[0]['dealType']
585
            item['dealUrl'] = manualDeals[0]['dealUrl']
621
            item['dealUrl'] = manualDeals[0]['dealUrl']
586
        info = returnLatestPrice(item, source_id)
622
        info = returnLatestPrice(item, source_id)
587
        print info
-
 
588
        try:
-
 
589
            cashBack = getCashBack(item['_id'], item['source_id'], item['category_id'], mc, 'localhost')
623
        if item['source_id'] != SOURCE_MAP.get('PAYTM.COM'):
590
            print "CashBack is ",cashBack
624
            data = calculateCashBack(item, info['available_price'])
591
            if not cashBack or cashBack.get('cash_back_status')!=1:
625
        else:
592
                info['cash_back_type'] = 0
626
            if info['codAvailable'] ==0:
593
                info['cash_back'] = 0
627
                data = calculateCashBack(item, info['gross_price'])
594
            else:
628
            else:
595
                if cashBack['cash_back_type'] in (1,2):
629
                data = calculateCashBack(item, info['available_price'])  #No need, can be done in if with or clause.
596
                    
630
        
597
                    if cashBack.get('maxCashBack') is not None:
-
 
598
                        
-
 
599
                        if cashBack.get('cash_back_type') ==1 and (float(cashBack.get('cash_back'))*info['available_price'])/100 > cashBack.get('maxCashBack'):
-
 
600
                            cashBack['cash_back_type'] = 2
631
        info['cash_back'] = data['cash_back']
601
                            cashBack['cash_back'] = cashBack['maxCashBack']
-
 
602
                        elif cashBack.get('cash_back_type') ==2 and cashBack.get('cash_back') > cashBack.get('maxCashBack'):
-
 
603
                            cashBack['cash_back'] = cashBack['maxCashBack']
-
 
604
                        else:
-
 
605
                            pass
-
 
606
                    
-
 
607
                    
-
 
608
                    
-
 
609
                    info['cash_back_type'] = cashBack['cash_back_type']
632
        info['cash_back_type'] = data['cash_back_type']
610
                    info['cash_back'] = float(cashBack['cash_back'])
633
        info['netPriceAfterCashBack'] = data['netPriceAfterCashBack']
611
                else:
-
 
612
                    info['cash_back_type'] = 0
-
 
613
                    info['cash_back'] = 0
-
 
614
        except Exception as cashBackEx:
634
        info['showNetPrice'] = data['showNetPrice']
615
            traceback.print_exc()
-
 
616
            print "Error calculating cashback."
635
        get_mongo_connection().Catalog.Deals.update({'_id':item['_id']},{"$set":{'netPriceAfterCashBack':info['netPriceAfterCashBack']}})
617
            info['cash_back_type'] = 0
-
 
618
            info['cash_back'] = 0
-
 
619
        print "info is ",info
-
 
620
        temp.append(info)
636
        temp.append(info)
621
    if item is not None:
637
    if item is not None:
622
        try:
638
        try:
623
            thread = threading.Thread(target=recomputeDeal, args = (item,))
639
            thread = threading.Thread(target=recomputeDeal, args = (item,))
624
            thread.daemon = True
640
            thread.daemon = True
Line 639... Line 655...
639
        item[0]['dealFlag'] = 1
655
        item[0]['dealFlag'] = 1
640
        item[0]['dealType'] =manualDeals[0]['dealType']
656
        item[0]['dealType'] =manualDeals[0]['dealType']
641
        item[0]['dealUrl'] = manualDeals[0]['dealUrl']
657
        item[0]['dealUrl'] = manualDeals[0]['dealUrl']
642
    
658
    
643
    info = returnLatestPrice(item[0], item[0]['source_id'])
659
    info = returnLatestPrice(item[0], item[0]['source_id'])
644
    print info
-
 
645
    try:
-
 
646
        cashBack = getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'], mc, 'localhost')
660
    if item[0]['source_id'] != SOURCE_MAP.get('PAYTM.COM'):
647
        print "CashBack is ",cashBack
661
        data = calculateCashBack(item[0], info['available_price'])
648
        if not cashBack or cashBack.get('cash_back_status')!=1:
662
    else:
649
            info['cash_back_type'] = 0
663
        if info['codAvailable'] ==0:
650
            info['cash_back'] = 0
664
            data = calculateCashBack(item[0], info['gross_price'])
651
        else:
665
        else:
652
            if cashBack['cash_back_type'] in (1,2):
-
 
653
                info['cash_back_type'] = cashBack['cash_back_type']
666
            data = calculateCashBack(item[0], info['available_price'])  #No need, can be done in if with or clause.
654
                info['cash_back'] = float(cashBack['cash_back'])
-
 
655
            else:
667
    
656
                info['cash_back_type'] = 0
668
    info['cash_back'] = data['cash_back']
657
                info['cash_back'] = 0
669
    info['cash_back_type'] = data['cash_back_type']
658
    except Exception as cashBackEx:
670
    info['netPriceAfterCashBack'] = data['netPriceAfterCashBack']
659
        traceback.print_exc()
671
    info['showNetPrice'] = data['showNetPrice']
660
        print cashBackEx
-
 
661
        print "Error calculating cashback."
672
    get_mongo_connection().Catalog.Deals.update({'_id':item[0]['_id']},{"$set":{'netPriceAfterCashBack':info['netPriceAfterCashBack']}})
662
        info['cash_back_type'] = 0
-
 
663
        info['cash_back'] = 0
673
    print info
664
    try:
674
    try:
665
        thread = threading.Thread(target=recomputeDeal, args = (item[0],))
675
        thread = threading.Thread(target=recomputeDeal, args = (item[0],))
666
        thread.daemon = True
676
        thread.daemon = True
667
        thread.start()    
677
        thread.start()    
668
    except:
678
    except: