Subversion Repositories SmartDukaan

Rev

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

Rev 15975 Rev 16017
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}))