Subversion Repositories SmartDukaan

Rev

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

Rev 14671 Rev 14705
Line 12... Line 12...
12
from operator import itemgetter
12
from operator import itemgetter
13
import pymongo
13
import pymongo
14
import re
14
import re
15
 
15
 
16
con = None
16
con = None
17
cashBackMap = {}
-
 
18
itemCashBackMap = {}
-
 
19
 
17
 
20
DataService.initialize(db_hostname="localhost")
18
DataService.initialize(db_hostname="localhost")
21
mc = MemCache("127.0.0.1")
19
mc = MemCache("127.0.0.1")
22
 
20
 
23
SOURCE_MAP = {1:'AMAZON',2:'FLIPKART',3:'SNAPDEAL',4:'SAHOLIC'}
21
SOURCE_MAP = {1:'AMAZON',2:'FLIPKART',3:'SNAPDEAL',4:'SAHOLIC'}
Line 33... Line 31...
33
            return None
31
            return None
34
    return con
32
    return con
35
 
33
 
36
def populateCashBack():
34
def populateCashBack():
37
    print "Populating cashback"
35
    print "Populating cashback"
38
    global cashBackMap
-
 
39
    global itemCashBackMap
-
 
40
    cashBackMap = {}
36
    cashBackMap = {}
41
    itemCashBackMap = {}
37
    itemCashBackMap = {}
42
    cashBack = list(get_mongo_connection().Catalog.CategoryCashBack.find())
38
    cashBack = list(get_mongo_connection().Catalog.CategoryCashBack.find())
43
    for row in cashBack:
39
    for row in cashBack:
44
        temp_map = {}
40
        temp_map = {}
Line 56... Line 52...
56
            cashBackMap[row['source_id']] = temp_list
52
            cashBackMap[row['source_id']] = temp_list
57
    itemCashBack = list(get_mongo_connection().Catalog.ItemCashBack.find())
53
    itemCashBack = list(get_mongo_connection().Catalog.ItemCashBack.find())
58
    for row in itemCashBack:
54
    for row in itemCashBack:
59
        if not itemCashBackMap.has_key(row['skuId']):
55
        if not itemCashBackMap.has_key(row['skuId']):
60
            itemCashBackMap[row['skuId']] = row
56
            itemCashBackMap[row['skuId']] = row
-
 
57
    mc.set("item_cash_back", itemCashBackMap, 24 * 60 * 60)
-
 
58
    mc.set("category_cash_back", cashBackMap, 24 * 60 * 60)
61
 
59
 
62
def addCategoryDiscount(data):
60
def addCategoryDiscount(data):
63
    collection = get_mongo_connection().Catalog.CategoryDiscount
61
    collection = get_mongo_connection().Catalog.CategoryDiscount
64
    query = []
62
    query = []
65
    data['brand'] = data['brand'].strip().upper()
63
    data['brand'] = data['brand'].strip().upper()
Line 206... Line 204...
206
            else:
204
            else:
207
                data.pop('_id',None)
205
                data.pop('_id',None)
208
                collection.insert(data)
206
                collection.insert(data)
209
        get_mongo_connection().Catalog.MasterData.update({'skuBundleId':sku.get('skuBundleId')},{"$set":{'updatedOn':to_java_date(datetime.now())}},multi=True)
207
        get_mongo_connection().Catalog.MasterData.update({'skuBundleId':sku.get('skuBundleId')},{"$set":{'updatedOn':to_java_date(datetime.now())}},multi=True)
210
        return {1:"Data added successfully"}
208
        return {1:"Data added successfully"}
211
        
-
 
212
            
-
 
213
 
209
 
214
def getAllExceptionlNlcItems(offset, limit):
210
def getAllExceptionlNlcItems(offset, limit):
215
    data = []
211
    data = []
216
    collection = get_mongo_connection().Catalog.ExceptionalNlc
212
    collection = get_mongo_connection().Catalog.ExceptionalNlc
217
    cursor = collection.find().skip(offset).limit(limit)
213
    cursor = collection.find().skip(offset).limit(limit)
Line 431... Line 427...
431
    mc.set("featured_deals_category_"+str(0), all_category_fd, 3600)
427
    mc.set("featured_deals_category_"+str(0), all_category_fd, 3600)
432
    mc.set("featured_deals_category_"+str(3), mobile_fd, 3600)
428
    mc.set("featured_deals_category_"+str(3), mobile_fd, 3600)
433
    mc.set("featured_deals_category_"+str(5), tablet_fd, 3600)
429
    mc.set("featured_deals_category_"+str(5), tablet_fd, 3600)
434
 
430
 
435
def getNewDeals(userId, category_id, offset, limit, sort, direction):
431
def getNewDeals(userId, category_id, offset, limit, sort, direction):
436
    if not bool(cashBackMap):
432
    if not bool(mc.get("category_cash_back")):
437
        populateCashBack()
433
        populateCashBack()
438
    
434
    
439
    try:
435
    try:
440
        if mc.get("featured_deals_category_"+str(category_id)) is None:
436
        if mc.get("featured_deals_category_"+str(category_id)) is None:
441
            __populateFeaturedDeals()
437
            __populateFeaturedDeals()
Line 470... Line 466...
470
            item[0]['dealRank'] = rank
466
            item[0]['dealRank'] = rank
471
            item[0]['persPoints'] = d['persPoints']
467
            item[0]['persPoints'] = d['persPoints']
472
            if d['dealType'] == 1 and d['source_id'] ==1:
468
            if d['dealType'] == 1 and d['source_id'] ==1:
473
                item[0]['marketPlaceUrl'] = "http://www.amazon.in/dp/%s"%(item[0]['identifier'].strip()) 
469
                item[0]['marketPlaceUrl'] = "http://www.amazon.in/dp/%s"%(item[0]['identifier'].strip()) 
474
            try:
470
            try:
475
                cashBack = __getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'])
471
                cashBack = getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'])
476
                if not cashBack or cashBack.get('cash_back_status')!=1:
472
                if not cashBack or cashBack.get('cash_back_status')!=1:
477
                    item[0]['cash_back_type'] = 0
473
                    item[0]['cash_back_type'] = 0
478
                    item[0]['cash_back'] = 0
474
                    item[0]['cash_back'] = 0
479
                else:
475
                else:
480
                    item[0]['cash_back_type'] = cashBack['cash_back_type']
476
                    item[0]['cash_back_type'] = cashBack['cash_back_type']
Line 485... Line 481...
485
                item[0]['cash_back'] = 0
481
                item[0]['cash_back'] = 0
486
            dealsMap[item[0]['identifier']] = item[0]
482
            dealsMap[item[0]['identifier']] = item[0]
487
            
483
            
488
            rank +=1
484
            rank +=1
489
    return sorted(dealsMap.values(), key=itemgetter('dealRank'))
485
    return sorted(dealsMap.values(), key=itemgetter('dealRank'))
490
        
-
 
491
 
486
 
492
def getDeals(userId, category_id, offset, limit, sort, direction):
487
def getDeals(userId, category_id, offset, limit, sort, direction):
493
    if not bool(cashBackMap):
488
    if not bool(mc.get("category_cash_back")):
494
        populateCashBack()
489
        populateCashBack()
495
    rank = 1
490
    rank = 1
496
    deals = {}
491
    deals = {}
497
    outer_query = []
492
    outer_query = []
498
    outer_query.append({"showDeal":1})
493
    outer_query.append({"showDeal":1})
Line 516... Line 511...
516
    for d in data:
511
    for d in data:
517
        item = list(get_mongo_connection().Catalog.MasterData.find({'_id':d['_id']}))
512
        item = list(get_mongo_connection().Catalog.MasterData.find({'_id':d['_id']}))
518
        if not deals.has_key(item[0]['identifier']):
513
        if not deals.has_key(item[0]['identifier']):
519
            item[0]['dealRank'] = rank
514
            item[0]['dealRank'] = rank
520
            try:
515
            try:
521
                cashBack = __getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'])
516
                cashBack = getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'])
522
                if not cashBack or cashBack.get('cash_back_status')!=1:
517
                if not cashBack or cashBack.get('cash_back_status')!=1:
523
                    item[0]['cash_back_type'] = 0
518
                    item[0]['cash_back_type'] = 0
524
                    item[0]['cash_back'] = 0
519
                    item[0]['cash_back'] = 0
525
                else:
520
                else:
526
                    item[0]['cash_back_type'] = cashBack['cash_back_type']
521
                    item[0]['cash_back_type'] = cashBack['cash_back_type']
Line 533... Line 528...
533
            
528
            
534
            rank +=1
529
            rank +=1
535
    return sorted(deals.values(), key=itemgetter('dealRank'))
530
    return sorted(deals.values(), key=itemgetter('dealRank'))
536
 
531
 
537
def getItem(skuId):
532
def getItem(skuId):
538
    if not bool(cashBackMap):
533
    if not bool(mc.get("category_cash_back")):
539
        populateCashBack()
534
        populateCashBack()
540
    try:
535
    try:
541
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'_id':int(skuId)}))
536
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'_id':int(skuId)}))
542
        for sku in skuData:
537
        for sku in skuData:
543
            try:
538
            try:
544
                cashBack = __getCashBack(sku['_id'], sku['source_id'], sku['category_id'])
539
                cashBack = getCashBack(sku['_id'], sku['source_id'], sku['category_id'])
545
                if not cashBack or cashBack.get('cash_back_status')!=1:
540
                if not cashBack or cashBack.get('cash_back_status')!=1:
546
                    sku['cash_back_type'] = 0
541
                    sku['cash_back_type'] = 0
547
                    sku['cash_back'] = 0
542
                    sku['cash_back'] = 0
548
                else:
543
                else:
549
                    sku['cash_back_type'] = cashBack['cash_back_type']
544
                    sku['cash_back_type'] = cashBack['cash_back_type']
Line 558... Line 553...
558
            sku['status'] = int(sku['status'])
553
            sku['status'] = int(sku['status'])
559
        return skuData
554
        return skuData
560
    except:
555
    except:
561
        return [{}]
556
        return [{}]
562
 
557
 
563
def __getCashBack(skuId, source_id, category_id):
558
def getCashBack(skuId, source_id, category_id):
-
 
559
    if not bool(mc.get("category_cash_back")):
-
 
560
        populateCashBack()
-
 
561
    itemCashBackMap = mc.get("item_cash_back")
564
    itemCashBack = itemCashBackMap.get(skuId)
562
    itemCashBack = itemCashBackMap.get(skuId)
565
    if itemCashBack is not None:
563
    if itemCashBack is not None:
566
        return itemCashBack
564
        return itemCashBack
567
 
-
 
-
 
565
    cashBackMap = mc.get("category_cash_back")
568
    sourceCashBack = cashBackMap.get(source_id)
566
    sourceCashBack = cashBackMap.get(source_id)
569
    if sourceCashBack is not None and len(sourceCashBack) > 0:
567
    if sourceCashBack is not None and len(sourceCashBack) > 0:
570
        for cashBack in sourceCashBack:
568
        for cashBack in sourceCashBack:
571
            if cashBack.get(category_id) is None:
569
            if cashBack.get(category_id) is None:
572
                continue
570
                continue
Line 574... Line 572...
574
                return cashBack.get(category_id)
572
                return cashBack.get(category_id)
575
    else:
573
    else:
576
        return {}
574
        return {}
577
 
575
 
578
def getCashBackDetails(identifier, source_id):
576
def getCashBackDetails(identifier, source_id):
579
    if not bool(cashBackMap):
577
    if not bool(mc.get("category_cash_back")):
580
        populateCashBack()
578
        populateCashBack()
581
        
579
        
582
    """Need to add item level cashback, no data available right now."""
580
    """Need to add item level cashback, no data available right now."""
583
    
581
    
584
    if source_id in (1,2,4,5):
582
    if source_id in (1,2,4,5):
Line 586... Line 584...
586
    elif source_id == 3:
584
    elif source_id == 3:
587
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'secondaryIdentifier':identifier.strip(), 'source_id':source_id}))
585
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'secondaryIdentifier':identifier.strip(), 'source_id':source_id}))
588
    else:
586
    else:
589
        return {}
587
        return {}
590
    if len(skuData) > 0:
588
    if len(skuData) > 0:
591
        
589
        itemCashBackMap = mc.get("item_cash_back")
592
        itemCashBack = itemCashBackMap.get(skuData[0]['_id'])
590
        itemCashBack = itemCashBackMap.get(skuData[0]['_id'])
593
        if itemCashBack is not None:
591
        if itemCashBack is not None:
594
            return itemCashBack
592
            return itemCashBack
595
    
593
        cashBackMap = mc.get("category_cash_back")
596
        sourceCashBack = cashBackMap.get(source_id)
594
        sourceCashBack = cashBackMap.get(source_id)
597
        if sourceCashBack is not None and len(sourceCashBack) > 0:
595
        if sourceCashBack is not None and len(sourceCashBack) > 0:
598
            for cashBack in sourceCashBack:
596
            for cashBack in sourceCashBack:
599
                if cashBack.get(skuData[0]['category_id']) is None:
597
                if cashBack.get(skuData[0]['category_id']) is None:
600
                    continue
598
                    continue