| 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:
|