Subversion Repositories SmartDukaan

Rev

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

Rev 16470 Rev 16506
Line 24... Line 24...
24
 
24
 
25
mc = MemCache(options.mongoHost)
25
mc = MemCache(options.mongoHost)
26
 
26
 
27
DataService.initialize(db_hostname=options.mongoHost)
27
DataService.initialize(db_hostname=options.mongoHost)
28
 
28
 
29
ignoreItems = []
-
 
30
SOURCE_MAP = {'AMAZON':1,'FLIPKART':2,'SNAPDEAL':3,'SAHOLIC':4, 'SHOPCLUES.COM':5,'PAYTM.COM':6}
29
SOURCE_MAP = {'AMAZON':1,'FLIPKART':2,'SNAPDEAL':3,'SAHOLIC':4, 'SHOPCLUES.COM':5,'PAYTM.COM':6}
31
 
30
 
32
def get_mongo_connection(host=options.mongoHost, port=27017):
31
def get_mongo_connection(host=options.mongoHost, port=27017):
33
    global con
32
    global con
34
    if con is None:
33
    if con is None:
Line 47... Line 46...
47
        paytmBestSellers = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':bestSeller['skuBundleId'],'source_id':6}))
46
        paytmBestSellers = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':bestSeller['skuBundleId'],'source_id':6}))
48
        for data in paytmBestSellers:
47
        for data in paytmBestSellers:
49
            if not toScrapMap.has_key(data['_id']):
48
            if not toScrapMap.has_key(data['_id']):
50
                data['dealFlag'] = 0
49
                data['dealFlag'] = 0
51
                data['dealType'] = 0
50
                data['dealType'] = 0
52
                data['dealPoints'] = 0
-
 
53
                data['manualDealThresholdPrice'] = None
-
 
54
                toScrapMap[data['_id']] = data
51
                toScrapMap[data['_id']] = data
55
    dealFlagged = list(get_mongo_connection().Catalog.Deals.find({'source_id':6,'showDeal':1,'totalPoints':{'$gt':-100}}))
52
    dealFlagged = list(get_mongo_connection().Catalog.Deals.find({'source_id':6,'showDeal':1,'totalPoints':{'$gt':-100}}))
56
    for deal in dealFlagged:
53
    for deal in dealFlagged:
57
        if not toScrapMap.has_key(deal['_id']):
54
        if not toScrapMap.has_key(deal['_id']):
58
            data = list(get_mongo_connection().Catalog.MasterData.find({'_id':deal['_id']}))
55
            data = list(get_mongo_connection().Catalog.MasterData.find({'_id':deal['_id']}))
59
            data[0]['dealFlag'] = 0
56
            data[0]['dealFlag'] = 0
60
            data[0]['dealType'] = 0
57
            data[0]['dealType'] = 0
61
            data[0]['dealPoints'] = 0
-
 
62
            data[0]['manualDealThresholdPrice'] = None
-
 
63
            toScrapMap[deal['_id']] = data[0]
58
            toScrapMap[deal['_id']] = data[0]
64
    manualDeals = list(get_mongo_connection().Catalog.ManualDeals.find({'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())},'source_id':6}))
59
    manualDeals = list(get_mongo_connection().Catalog.ManualDeals.find({'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())},'source_id':6}))
65
    for manualDeal in manualDeals:
60
    for manualDeal in manualDeals:
66
        if not toScrapMap.has_key(manualDeal['sku']):
61
        if not toScrapMap.has_key(manualDeal['sku']):
67
            data = list(get_mongo_connection().Catalog.MasterData.find({'_id':manualDeal['sku']}))
62
            data = list(get_mongo_connection().Catalog.MasterData.find({'_id':manualDeal['sku']}))
68
            if len(data) > 0:
63
            if len(data) > 0:
69
                data[0]['dealFlag'] = 1
64
                data[0]['dealFlag'] = 1
70
                data[0]['dealType'] = manualDeal['dealType']
65
                data[0]['dealType'] = manualDeal['dealType']
71
                data[0]['dealPoints'] = manualDeal['dealPoints']
-
 
72
                data[0]['manualDealThresholdPrice'] = manualDeal['dealThresholdPrice']
-
 
73
                toScrapMap[manualDeal['sku']] = data[0]
66
                toScrapMap[manualDeal['sku']] = data[0]
74
        else:
67
        else:
75
            data = toScrapMap.get(manualDeal['sku'])
68
            data = toScrapMap.get(manualDeal['sku'])
76
            data['dealFlag'] = 1
69
            data['dealFlag'] = 1
77
            data['dealType'] = manualDeal['dealType']
70
            data['dealType'] = manualDeal['dealType']
78
            data['dealPoints'] = manualDeal['dealPoints']
-
 
79
            data['manualDealThresholdPrice'] = manualDeal['dealThresholdPrice']
-
 
80
    for val in toScrapMap.values():
71
    for val in toScrapMap.values():
81
        scrapePaytm(val)
72
        scrapePaytm(val)
82
    print "joining threads at %s"%(str(datetime.now()))
73
    print "joining threads at %s"%(str(datetime.now()))
83
 
74
 
84
def scrapePaytm(data):
75
def scrapePaytm(data):
Line 86... Line 77...
86
        return
77
        return
87
    if data['identifier'] is None or len(data['identifier'].strip())==0:
78
    if data['identifier'] is None or len(data['identifier'].strip())==0:
88
        print "returning in valid identifier"
79
        print "returning in valid identifier"
89
        return
80
        return
90
    
81
    
91
    if data['_id'] in ignoreItems:
82
    if data.get('ignorePricing') ==1:
92
        print "Ignored items returning for %d"%(data['_id'])
83
        print "Ignored items returning for %d"%(data['_id'])
93
        return 
84
        return
-
 
85
    
94
        
86
        
95
    try:
87
    try:
96
        if data['priceUpdatedOn'] > to_java_date(datetime.now() - timedelta(minutes=5)):
88
        if data['priceUpdatedOn'] > to_java_date(datetime.now() - timedelta(minutes=5)):
97
            print "sku id is already updated %d" %(data['_id']) 
89
            print "sku id is already updated %d" %(data['_id']) 
98
            return
90
            return
Line 143... Line 135...
143
    try:
135
    try:
144
        recomputeDeal(data)
136
        recomputeDeal(data)
145
    except:
137
    except:
146
        print "Unable to compute deal for %s"%(data['skuBundleId'])
138
        print "Unable to compute deal for %s"%(data['skuBundleId'])
147
 
139
 
148
def recomputePoints(item, deal):
140
#def recomputePoints(item, deal):
149
    try:
141
#    try:
150
        if item.get('available_price') == deal['available_price']:
142
#        if item.get('available_price') == deal['available_price']:
151
            print "No need to compute points for %d , as price is still same" %(item['_id'])
143
#            print "No need to compute points for %d , as price is still same" %(item['_id'])
152
            return
144
#            return
153
        nlcPoints = getNlcPoints(item, deal['minNlc'], deal['maxNlc'], deal['available_price'])
145
#        nlcPoints = getNlcPoints(item, deal['minNlc'], deal['maxNlc'], deal['available_price'])
154
    except:
146
#    except:
155
        print traceback.print_exc()
147
#        print traceback.print_exc()
156
        nlcPoints = deal['nlcPoints']
148
#        nlcPoints = deal['nlcPoints']
-
 
149
#    
-
 
150
#    bundleDealPoints = list(get_mongo_connection().Catalog.DealPoints.find({'skuBundleId':item['skuBundleId'],'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())}}))
-
 
151
#    if len(bundleDealPoints) > 0:
157
    if item['manualDealThresholdPrice'] >= deal['available_price']:
152
#        item['manualDealThresholdPrice'] = bundleDealPoints[0]['dealThresholdPrice']
158
        dealPoints = item['dealPoints']
153
#        dealPoints = bundleDealPoints[0]['dealPoints']
159
    else:
154
#    else:
160
        dealPoints = 0
155
#        dealPoints = 0
-
 
156
#        item['manualDealThresholdPrice'] = None
-
 
157
#    
161
    get_mongo_connection().Catalog.Deals.update({'_id':deal['_id']},{"$set":{'totalPoints':deal['totalPoints'] - deal['nlcPoints'] + nlcPoints - deal['dealPoints'] +dealPoints , 'nlcPoints': nlcPoints, 'dealPoints': dealPoints, 'manualDealThresholdPrice': item['manualDealThresholdPrice']}})
158
#    get_mongo_connection().Catalog.Deals.update({'_id':deal['_id']},{"$set":{'totalPoints':deal['totalPoints'] - deal['nlcPoints'] + nlcPoints - deal['dealPoints'] +dealPoints , 'nlcPoints': nlcPoints, 'dealPoints': dealPoints, 'manualDealThresholdPrice': item['manualDealThresholdPrice']}})
162
 
159
 
163
def populateNegativeDeals():
160
def populateNegativeDeals():
164
    negativeDeals = get_mongo_connection().Catalog.NegativeDeals.find().distinct('sku')
161
    negativeDeals = get_mongo_connection().Catalog.NegativeDeals.find().distinct('sku')
165
    mc.set("negative_deals", negativeDeals, 600)  
162
    mc.set("negative_deals", negativeDeals, 600)  
166
 
163
 
Line 176... Line 173...
176
    toUpdate = []
173
    toUpdate = []
177
    prepaidBestPrice = float("inf")
174
    prepaidBestPrice = float("inf")
178
    prepaidBestOne = None
175
    prepaidBestOne = None
179
    prepaidBestSellerPoints = 0
176
    prepaidBestSellerPoints = 0
180
    for similarItem in similarItems:
177
    for similarItem in similarItems:
181
        if similarItem['_id'] == item['_id']:
-
 
182
            try:
-
 
183
                recomputePoints(item, similarItem)
-
 
184
            except:
-
 
185
                traceback.print_exc()
-
 
186
        if similarItem['codAvailable'] ==1:
178
        if similarItem['codAvailable'] ==1:
187
            if mc.get("negative_deals") is None:
179
            if mc.get("negative_deals") is None:
188
                populateNegativeDeals()
180
                populateNegativeDeals()
189
            if similarItem['in_stock'] == 0  or similarItem['_id'] in mc.get("negative_deals"):
181
            if similarItem['in_stock'] == 0  or similarItem['_id'] in mc.get("negative_deals"):
190
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
182
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})