| Line 333... |
Line 333... |
| 333 |
def populateNegativeDeals():
|
333 |
def populateNegativeDeals():
|
| 334 |
negativeDeals = get_mongo_connection().Catalog.NegativeDeals.find().distinct('sku')
|
334 |
negativeDeals = get_mongo_connection().Catalog.NegativeDeals.find().distinct('sku')
|
| 335 |
mc.set("negative_deals", negativeDeals, 600)
|
335 |
mc.set("negative_deals", negativeDeals, 600)
|
| 336 |
|
336 |
|
| 337 |
def recomputeDeal(item):
|
337 |
def recomputeDeal(item):
|
| - |
|
338 |
|
| 338 |
"""Lets recompute deal for this bundle"""
|
339 |
"""Lets recompute deal for this bundle"""
|
| 339 |
print "Recomputing for bundleId",item.get('skuBundleId')
|
340 |
print "Recomputing for bundleId",item.get('skuBundleId')
|
| 340 |
skuBundleId = item['skuBundleId']
|
341 |
skuBundleId = item['skuBundleId']
|
| 341 |
|
342 |
|
| 342 |
similarItems = list(get_mongo_connection().Catalog.Deals.find({'skuBundleId':skuBundleId}).sort([('available_price',pymongo.ASCENDING)]))
|
343 |
similarItems = list(get_mongo_connection().Catalog.Deals.find({'skuBundleId':skuBundleId}).sort([('available_price',pymongo.ASCENDING)]))
|
| 343 |
bestPrice = float("inf")
|
344 |
bestPrice = float("inf")
|
| 344 |
bestOne = None
|
345 |
bestOne = None
|
| 345 |
bestSellerPoints = 0
|
346 |
bestSellerPoints = 0
|
| 346 |
toUpdate = []
|
347 |
toUpdate = []
|
| - |
|
348 |
prepaidBestPrice = float("inf")
|
| - |
|
349 |
prepaidBestOne = None
|
| - |
|
350 |
prepaidBestSellerPoints = 0
|
| 347 |
for similarItem in similarItems:
|
351 |
for similarItem in similarItems:
|
| 348 |
if similarItem['_id'] == item['_id']:
|
352 |
if similarItem['_id'] == item['_id']:
|
| 349 |
recomputePoints(item, similarItem)
|
353 |
recomputePoints(item, similarItem)
|
| - |
|
354 |
if similarItem['codAvailable'] ==1:
|
| 350 |
if mc.get("negative_deals") is None:
|
355 |
if mc.get("negative_deals") is None:
|
| 351 |
populateNegativeDeals()
|
356 |
populateNegativeDeals()
|
| 352 |
if similarItem['in_stock'] == 0 or similarItem['maxprice'] is None or similarItem['maxprice'] < similarItem['available_price'] or similarItem['_id'] in mc.get("negative_deals"):
|
357 |
if similarItem['in_stock'] == 0 or similarItem['maxprice'] is None or similarItem['maxprice'] < similarItem['available_price'] or similarItem['_id'] in mc.get("negative_deals"):
|
| 353 |
get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0 }})
|
358 |
get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
|
| 354 |
continue
|
359 |
continue
|
| 355 |
if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0:
|
360 |
if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0:
|
| 356 |
get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0 }})
|
361 |
get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
|
| 357 |
continue
|
362 |
continue
|
| 358 |
if similarItem['available_price'] < bestPrice:
|
363 |
if similarItem['available_price'] < bestPrice:
|
| 359 |
bestOne = similarItem
|
364 |
bestOne = similarItem
|
| 360 |
bestPrice = similarItem['available_price']
|
365 |
bestPrice = similarItem['available_price']
|
| 361 |
bestSellerPoints = similarItem['bestSellerPoints']
|
366 |
bestSellerPoints = similarItem['bestSellerPoints']
|
| 362 |
elif similarItem['available_price'] == bestPrice and bestSellerPoints < similarItem['bestSellerPoints']:
|
367 |
elif similarItem['available_price'] == bestPrice and bestSellerPoints < similarItem['bestSellerPoints']:
|
| 363 |
bestOne = similarItem
|
368 |
bestOne = similarItem
|
| 364 |
bestPrice = similarItem['available_price']
|
369 |
bestPrice = similarItem['available_price']
|
| 365 |
bestSellerPoints = similarItem['bestSellerPoints']
|
370 |
bestSellerPoints = similarItem['bestSellerPoints']
|
| - |
|
371 |
else:
|
| - |
|
372 |
pass
|
| 366 |
else:
|
373 |
else:
|
| - |
|
374 |
if mc.get("negative_deals") is None:
|
| - |
|
375 |
populateNegativeDeals()
|
| - |
|
376 |
if similarItem['in_stock'] == 0 or similarItem['maxprice'] is None or similarItem['maxprice'] < similarItem['available_price'] or similarItem['_id'] in mc.get("negative_deals"):
|
| - |
|
377 |
get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
|
| - |
|
378 |
continue
|
| - |
|
379 |
if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0:
|
| - |
|
380 |
get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
|
| - |
|
381 |
continue
|
| - |
|
382 |
if similarItem['available_price'] < prepaidBestPrice:
|
| - |
|
383 |
prepaidBestOne = similarItem
|
| - |
|
384 |
prepaidBestPrice = similarItem['available_price']
|
| - |
|
385 |
prepaidBestSellerPoints = similarItem['bestSellerPoints']
|
| - |
|
386 |
elif similarItem['available_price'] == prepaidBestPrice and prepaidBestSellerPoints < similarItem['bestSellerPoints']:
|
| - |
|
387 |
prepaidBestOne = similarItem
|
| - |
|
388 |
prepaidBestPrice = similarItem['available_price']
|
| - |
|
389 |
prepaidBestSellerPoints = similarItem['bestSellerPoints']
|
| - |
|
390 |
else:
|
| 367 |
pass
|
391 |
pass
|
| 368 |
if bestOne is not None:
|
392 |
if bestOne is not None and prepaidBestOne is not None:
|
| 369 |
for similarItem in similarItems:
|
393 |
for similarItem in similarItems:
|
| 370 |
toUpdate.append(similarItem['_id'])
|
394 |
toUpdate.append(similarItem['_id'])
|
| 371 |
toUpdate.remove(bestOne['_id'])
|
395 |
toUpdate.remove(bestOne['_id'])
|
| - |
|
396 |
toUpdate.remove(prepaidBestOne['_id'])
|
| 372 |
get_mongo_connection().Catalog.Deals.update({ '_id' : bestOne['_id'] }, {'$set':{'showDeal':1 }})
|
397 |
get_mongo_connection().Catalog.Deals.update({ '_id' : bestOne['_id'] }, {'$set':{'showDeal':1,'prepaidDeal':0 }})
|
| - |
|
398 |
get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
|
| 373 |
if len(toUpdate) > 0:
|
399 |
if len(toUpdate) > 0:
|
| 374 |
get_mongo_connection().Catalog.Deals.update({ '_id' : { "$in": toUpdate } }, {'$set':{'showDeal':0 }},upsert=False, multi=True)
|
400 |
get_mongo_connection().Catalog.Deals.update({ '_id' : { "$in": toUpdate } }, {'$set':{'showDeal':0,'prepaidDeal':0 }},upsert=False, multi=True)
|
| 375 |
|
401 |
|
| 376 |
print "Done with recomputing"
|
402 |
print "Done with recomputing"
|
| 377 |
|
403 |
|
| 378 |
def getLatestPrice(skuBundleId, source_id):
|
404 |
def getLatestPrice(skuBundleId, source_id):
|
| 379 |
temp = []
|
405 |
temp = []
|
| 380 |
itemIds = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':skuBundleId,'source_id' : source_id}))
|
406 |
itemIds = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':skuBundleId,'source_id' : source_id}))
|