Subversion Repositories SmartDukaan

Rev

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

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