Subversion Repositories SmartDukaan

Rev

Rev 15213 | Rev 15266 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
13829 kshitij.so 1
import urllib2
2
import simplejson as json
3
import pymongo
15253 kshitij.so 4
from dtr.utils.utils import to_java_date, getNlcPoints
13918 kshitij.so 5
from datetime import datetime, timedelta
13829 kshitij.so 6
from operator import itemgetter
7
from dtr.utils.AmazonPriceOnlyScraper import AmazonScraper
14309 kshitij.so 8
from dtr.utils import AmazonDealScraper
14121 kshitij.so 9
from dtr.utils import FlipkartScraper,NewFlipkartScraper
14324 kshitij.so 10
from dtr.storage.MemCache import MemCache
14334 kshitij.so 11
from functools import partial
12
import threading
14760 kshitij.so 13
from dtr.utils.utils import getCashBack
14794 kshitij.so 14
import traceback
15174 kshitij.so 15
from shop2020.config.client.ConfigClient import ConfigClient
13829 kshitij.so 16
 
15174 kshitij.so 17
config_client = ConfigClient()
18
host_memCache = config_client.get_property('mem_cache_host_dtr')
19
host = config_client.get_property('mongo_dtr_host')
14324 kshitij.so 20
 
15174 kshitij.so 21
mc = MemCache(host_memCache)
22
 
23
 
13829 kshitij.so 24
con = None
14205 kshitij.so 25
SOURCE_MAP = {'AMAZON':1,'FLIPKART':2,'SNAPDEAL':3,'SAHOLIC':4}
13829 kshitij.so 26
 
27
headers = { 
28
           'User-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
29
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
30
            'Accept-Language' : 'en-US,en;q=0.8',                     
31
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
32
        }
33
 
15174 kshitij.so 34
def get_mongo_connection(port=27017):
13829 kshitij.so 35
    global con
36
    if con is None:
37
        print "Establishing connection %s host and port %d" %(host,port)
38
        try:
39
            con = pymongo.MongoClient(host, port)
40
        except Exception, e:
41
            print e
42
            return None
43
    return con
44
 
14828 kshitij.so 45
def returnLatestPrice(data, source_id, ignoreLastUpdated = True):
13918 kshitij.so 46
    now = datetime.now()
13829 kshitij.so 47
    if source_id == 1:
48
        try:
13918 kshitij.so 49
            if data['identifier'] is None or len(data['identifier'].strip())==0:
13829 kshitij.so 50
                return {}
13918 kshitij.so 51
 
14577 kshitij.so 52
            if data['dealFlag'] ==1 and data['dealType'] ==1:
53
                data['marketPlaceUrl'] = "http://www.amazon.in/dp/%s"%(data['identifier'].strip())
54
 
13918 kshitij.so 55
            try:
14828 kshitij.so 56
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
13918 kshitij.so 57
                    print "sku id is already updated",data['_id'] 
13920 kshitij.so 58
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
13918 kshitij.so 59
            except:
60
                pass
61
 
62
 
13829 kshitij.so 63
            url = "http://www.amazon.in/gp/offer-listing/%s/ref=olp_sort_ps"%(data['identifier'])
64
            lowestPrice = 0.0
14309 kshitij.so 65
            try:
66
                if data['dealFlag'] ==1 and data['dealType'] ==1:
67
                    print "Inside deal"
68
                    deal_url = "http://www.amazon.in/dp/%s"%(data['identifier'].strip())
69
                    print deal_url
15213 kshitij.so 70
                    dealScraperAmazon = AmazonDealScraper.AmazonScraper(True)
14309 kshitij.so 71
                    lowestPrice = dealScraperAmazon.read(deal_url)
72
                    print lowestPrice
73
                    if lowestPrice == 0:
74
                        raise
75
                else:    
15213 kshitij.so 76
                    scraperAmazon = AmazonScraper(True)
14309 kshitij.so 77
                    lowestPrice = scraperAmazon.read(url)
78
            except Exception as e:
79
                print e
15213 kshitij.so 80
                scraperAmazon = AmazonScraper(True)
14309 kshitij.so 81
                lowestPrice = scraperAmazon.read(url)
13929 kshitij.so 82
            print "LowestPrice ",lowestPrice
13829 kshitij.so 83
            inStock = 0
84
            if lowestPrice > 0:
85
                inStock = 1
86
            if lowestPrice > 0:
13971 kshitij.so 87
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'available_price':lowestPrice,'updatedOn':to_java_date(now),'priceUpdatedOn':to_java_date(now),'in_stock':inStock}}, multi=True)
14309 kshitij.so 88
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestPrice , 'in_stock':inStock,'dealType':data['dealType']}}, multi=True)
13829 kshitij.so 89
            else:
13929 kshitij.so 90
                lowestPrice = data['available_price']
13977 kshitij.so 91
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':0,'priceUpdatedOn':to_java_date(now)}}, multi=True)
14309 kshitij.so 92
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':0,'dealType':data['dealType']}}, multi=True)
13918 kshitij.so 93
 
13829 kshitij.so 94
            return {'_id':data['_id'],'available_price':lowestPrice,'in_stock':inStock,'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
14834 kshitij.so 95
        except Exception as e:
96
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
97
            print e
13920 kshitij.so 98
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':1,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
13829 kshitij.so 99
 
14203 kshitij.so 100
    elif source_id ==4:
14207 kshitij.so 101
 
14203 kshitij.so 102
        try:
14212 kshitij.so 103
            if data['identifier'] is None or len(data['identifier'].strip())==0:
104
                return {}
105
 
106
            try:
14828 kshitij.so 107
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
14212 kshitij.so 108
                    print "sku id is already updated",data['_id'] 
109
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':4,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
110
            except:
111
                pass
112
 
14840 kshitij.so 113
            url = "http://50.116.3.101:8080/mobileapi/dtr-pricing?id=%s"%(data['identifier'])
14212 kshitij.so 114
            lowestPrice = 0.0
115
            instock = 0
116
            req = urllib2.Request(url,headers=headers)
117
            response = urllib2.urlopen(req)
118
            json_input = response.read()
119
            response.close()
120
            priceInfo = json.loads(json_input)
121
            lowestPrice = priceInfo['response']['sellingPrice']
122
            if lowestPrice > 0:
123
                instock = 1
124
            if instock  == 1:
125
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'available_price':lowestPrice,'updatedOn':to_java_date(now),'priceUpdatedOn':to_java_date(now),'in_stock':instock}}, multi=True)
126
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestPrice , 'in_stock':instock}}, multi=True)
127
            else:
128
                lowestPrice = data['available_price']
129
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':instock,'priceUpdatedOn':to_java_date(now)}}, multi=True)
130
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':instock}}, multi=True)
131
 
132
            return {'_id':data['_id'],'available_price':lowestPrice,'in_stock':instock,'source_id':4,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
14834 kshitij.so 133
 
134
        except Exception as e:
135
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
136
            print e
14212 kshitij.so 137
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':4,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
14203 kshitij.so 138
 
14207 kshitij.so 139
 
13829 kshitij.so 140
    elif source_id ==3:
141
        try:
13918 kshitij.so 142
            if data['identifier'] is None or len(data['identifier'].strip())==0:
13829 kshitij.so 143
                return {}
13918 kshitij.so 144
 
145
            try:
14828 kshitij.so 146
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
13920 kshitij.so 147
                    print "sku id is already updated",data['_id']
148
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':3,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
13919 kshitij.so 149
 
150
            except Exception as e:
13920 kshitij.so 151
                print "Exception snapdeal"
13919 kshitij.so 152
                print e
13918 kshitij.so 153
 
15253 kshitij.so 154
            url="http://www.snapdeal.com/acors/json/gvbps?supc=%s&catId=175"%(data['identifier'])
13829 kshitij.so 155
            req = urllib2.Request(url,headers=headers)
156
            response = urllib2.urlopen(req)
14210 kshitij.so 157
            json_input = response.read()
14188 kshitij.so 158
            response.close()
13829 kshitij.so 159
            vendorInfo = json.loads(json_input)
160
            lowestOfferPrice = 0
161
            inStock = 0
15253 kshitij.so 162
            buyBoxPrice = 0
163
            isBuyBox = 1
13829 kshitij.so 164
            for vendor in vendorInfo:
15253 kshitij.so 165
                buyBoxPrice = float(vendor['sellingPrice'])
166
                try:
167
                    buyBoxStock = vendor['buyableInventory']
168
                except:
169
                    buyBoxStock = 0
170
                if buyBoxStock > 0 and buyBoxPrice > 0:
171
                    break
172
 
173
            sortedVendorsData = sorted(vendorInfo, key=itemgetter('sellingPrice'))
174
            for sortedVendorData in sortedVendorsData:
175
                lowestOfferPrice = float(sortedVendorData['sellingPrice'])
176
                try:
177
                    stock = sortedVendorData['buyableInventory']
178
                except:
179
                    stock = 0
13829 kshitij.so 180
                if stock > 0 and lowestOfferPrice > 0:
181
                    inStock = 1
182
                    break
183
 
184
            print lowestOfferPrice
185
            print inStock
186
            print "*************"
15253 kshitij.so 187
 
188
            if buyBoxPrice != lowestOfferPrice:
189
                isBuyBox = 0
190
 
13829 kshitij.so 191
            if inStock  == 1:
15253 kshitij.so 192
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'available_price':lowestOfferPrice,'updatedOn':to_java_date(now),'priceUpdatedOn':to_java_date(now),'in_stock':inStock,'buyBoxFlag':isBuyBox}}, multi=True)
13918 kshitij.so 193
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestOfferPrice , 'in_stock':inStock}}, multi=True)
13829 kshitij.so 194
            else:
13929 kshitij.so 195
                lowestOfferPrice = data['available_price']
15253 kshitij.so 196
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':inStock,'priceUpdatedOn':to_java_date(now),'buyBoxFlag':isBuyBox}}, multi=True)
13918 kshitij.so 197
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':inStock}}, multi=True)
198
 
13829 kshitij.so 199
            return {'_id':data['_id'],'available_price':lowestOfferPrice,'in_stock':inStock,'source_id':3,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
14834 kshitij.so 200
        except Exception as e:
201
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
202
            print e
13920 kshitij.so 203
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':3,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
13829 kshitij.so 204
 
205
    elif source_id == 2:
206
        try:
13918 kshitij.so 207
            if data['identifier'] is None or len(data['identifier'].strip())==0:
13829 kshitij.so 208
                return {}
13918 kshitij.so 209
 
210
            try:
14828 kshitij.so 211
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
13918 kshitij.so 212
                    print "sku id is already updated",data['_id']
13920 kshitij.so 213
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':2,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']} 
13918 kshitij.so 214
            except:
215
                pass
216
 
217
            lowestSp = 0
218
            inStock = 0
15253 kshitij.so 219
            buyBoxPrice = 0
220
            isBuyBox = 0
14189 kshitij.so 221
            scraperProductPage = NewFlipkartScraper.FlipkartProductPageScraper()
14121 kshitij.so 222
            try:
223
                if data['marketPlaceUrl']!="" or data['marketPlaceUrl'] !="http://www.flipkart.com/ps/%s"%(data['identifier']):
224
                    result = scraperProductPage.read(data['marketPlaceUrl'])
14124 kshitij.so 225
                    print result
14125 kshitij.so 226
                    if result.get('lowestSp')!=0:
227
                        lowestSp = result.get('lowestSp')
14121 kshitij.so 228
                        inStock = result.get('inStock')
15253 kshitij.so 229
                        buyBoxPrice = result.get('buyBoxPrice')
14121 kshitij.so 230
            except:
231
                print "Unable to scrape product page ",data['identifier']
232
            if lowestSp ==0:
233
                url = "http://www.flipkart.com/ps/%s"%(data['identifier'])
14189 kshitij.so 234
                scraperFk = FlipkartScraper.FlipkartScraper()
15253 kshitij.so 235
                vendorsData, buyBoxInfo = (scraperFk.read(url))
14121 kshitij.so 236
                sortedVendorsData = []
237
                sortedVendorsData = sorted(vendorsData, key=itemgetter('sellingPrice'))
238
                print "data",sortedVendorsData
239
                for vData in sortedVendorsData:
240
                    lowestSp = vData['sellingPrice']
241
                    break
242
                if lowestSp > 0:
243
                    inStock = 1
15253 kshitij.so 244
                buyBoxPrice = buyBoxInfo[0].get('sellingPrice')
13829 kshitij.so 245
            print lowestSp
246
            print inStock
15253 kshitij.so 247
            if buyBoxPrice is not None and buyBoxPrice == lowestSp:
248
                isBuyBox = 1
13829 kshitij.so 249
            if lowestSp > 0:
15253 kshitij.so 250
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'available_price':lowestSp,'updatedOn':to_java_date(now),'priceUpdatedOn':to_java_date(now),'in_stock':inStock,'buyBoxFlag':isBuyBox}}, multi=True)
13918 kshitij.so 251
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestSp , 'in_stock':inStock}}, multi=True)
13829 kshitij.so 252
            else:
13929 kshitij.so 253
                lowestSp = data['available_price']
15253 kshitij.so 254
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':inStock,'priceUpdatedOn':to_java_date(now),'buyBoxFlag':isBuyBox}}, multi=True)
13918 kshitij.so 255
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':inStock}}, multi=True)
256
 
13829 kshitij.so 257
            return {'_id':data['_id'],'available_price':lowestSp,'in_stock':inStock,'source_id':2,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
14342 kshitij.so 258
 
14834 kshitij.so 259
        except Exception as e:
260
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
261
            print e
13920 kshitij.so 262
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':2,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail']}
13829 kshitij.so 263
    else:
264
        return {}
13918 kshitij.so 265
 
14324 kshitij.so 266
 
267
def populateNegativeDeals():
268
    negativeDeals = get_mongo_connection().Catalog.NegativeDeals.find().distinct('sku')
269
    mc.set("negative_deals", negativeDeals, 600)
270
 
15253 kshitij.so 271
def recomputePoints(item, deal):
272
    try:
273
        nlcPoints = getNlcPoints(item, deal['minNlc'], deal['maxNlc'], deal['available_price'])
274
    except:
275
        print traceback.print_exc()
276
        nlcPoints = deal['nlcPoints']
277
    if item['manualDealThresholdPrice'] >= deal['available_price']:
278
        dealPoints = item['dealPoints']
279
    else:
280
        dealPoints = 0
281
    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']}})
282
 
13918 kshitij.so 283
def recomputeDeal(skuBundleId):
284
    """Lets recompute deal for this bundle"""
285
    print "Recomputing for bundleId",skuBundleId
13829 kshitij.so 286
 
13918 kshitij.so 287
    similarItems = list(get_mongo_connection().Catalog.Deals.find({'skuBundleId':skuBundleId}).sort([('available_price',pymongo.ASCENDING)]))
288
    bestPrice = float("inf")
289
    bestOne = None
290
    bestSellerPoints = 0
291
    toUpdate = []
292
    for similarItem in similarItems:
14332 kshitij.so 293
        if mc.get("negative_deals") is None:
14324 kshitij.so 294
            populateNegativeDeals()
14332 kshitij.so 295
        if similarItem['in_stock'] == 0 or similarItem['maxprice'] is None or similarItem['maxprice'] < similarItem['available_price'] or similarItem['_id'] in mc.get("negative_deals"):
13918 kshitij.so 296
            get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0 }})
297
            continue
298
        if similarItem['available_price'] < bestPrice:
299
            bestOne = similarItem
300
            bestPrice = similarItem['available_price']
301
            bestSellerPoints = similarItem['bestSellerPoints']
302
        elif similarItem['available_price'] == bestPrice and bestSellerPoints < similarItem['bestSellerPoints']:
303
            bestOne = similarItem
304
            bestPrice = similarItem['available_price']
305
            bestSellerPoints = similarItem['bestSellerPoints']
306
        else:
307
            pass
308
    if bestOne is not None:
309
        for similarItem in similarItems:
310
            toUpdate.append(similarItem['_id'])
311
        toUpdate.remove(bestOne['_id'])
312
        get_mongo_connection().Catalog.Deals.update({ '_id' : bestOne['_id'] }, {'$set':{'showDeal':1 }})
313
    if len(toUpdate) > 0:
314
        get_mongo_connection().Catalog.Deals.update({ '_id' : { "$in": toUpdate } }, {'$set':{'showDeal':0 }},upsert=False, multi=True)
14342 kshitij.so 315
 
316
    print "Done with recomputing"
13829 kshitij.so 317
 
318
def getLatestPrice(skuBundleId, source_id):
319
    temp = []
320
    itemIds = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':skuBundleId,'source_id' : source_id}))
321
    for item in itemIds:
14309 kshitij.so 322
        item['dealFlag'] = 0
323
        item['dealType'] = 0
15187 kshitij.so 324
        if item['source_id'] ==3:
325
            item['marketPlaceUrl'] = item['marketPlaceUrl']+'?supc='+item.get('identifier')
14309 kshitij.so 326
        manualDeals = list(get_mongo_connection().Catalog.ManualDeals.find({'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())},'source_id':source_id, 'sku':item['_id']}))
327
        if len(manualDeals) > 0:
328
            item['dealFlag'] = 1
14760 kshitij.so 329
            item['dealType'] =manualDeals[0]['dealType']
330
        info = returnLatestPrice(item, source_id)
14794 kshitij.so 331
        print info
14760 kshitij.so 332
        try:
333
            cashBack = getCashBack(item['_id'], item['source_id'], item['category_id'], mc, 'localhost')
14794 kshitij.so 334
            print "CashBack is ",cashBack
14760 kshitij.so 335
            if not cashBack or cashBack.get('cash_back_status')!=1:
14801 kshitij.so 336
                info['cash_back_type'] = 0
337
                info['cash_back'] = 0
14760 kshitij.so 338
            else:
339
                if cashBack['cash_back_type'] in (1,2):
340
                    info['cash_back_type'] = cashBack['cash_back_type']
341
                    info['cash_back'] = float(cashBack['cash_back'])
342
                else:
14801 kshitij.so 343
                    info['cash_back_type'] = 0
344
                    info['cash_back'] = 0
14760 kshitij.so 345
        except Exception as cashBackEx:
14794 kshitij.so 346
            traceback.print_exc()
14760 kshitij.so 347
            print "Error calculating cashback."
348
            info['cash_back_type'] = 0
349
            info['cash_back'] = 0
14794 kshitij.so 350
        print "info is ",info
14760 kshitij.so 351
        temp.append(info)
14367 kshitij.so 352
    try:
353
        thread = threading.Thread(target=recomputeDeal, args = (skuBundleId,))
354
        thread.daemon = True
355
        thread.start()    
356
    except:
357
        print "Unable to compute deal for ",skuBundleId
13829 kshitij.so 358
    return temp
359
 
13864 kshitij.so 360
def getLatestPriceById(id):
361
    item = list(get_mongo_connection().Catalog.MasterData.find({'_id':id}))
14309 kshitij.so 362
    item[0]['dealFlag'] = 0
363
    item[0]['dealType'] = 0
364
    manualDeals = list(get_mongo_connection().Catalog.ManualDeals.find({'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())},'source_id':item[0]['source_id'], 'sku':item[0]['_id']}))
365
    if len(manualDeals) > 0:
366
        item[0]['dealFlag'] = 1
367
        item[0]['dealType'] =manualDeals[0]['dealType'] 
14367 kshitij.so 368
 
14431 kshitij.so 369
    info = returnLatestPrice(item[0], item[0]['source_id'])
14794 kshitij.so 370
    print info
14367 kshitij.so 371
    try:
14794 kshitij.so 372
        cashBack = getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'], mc, 'localhost')
373
        print "CashBack is ",cashBack
14760 kshitij.so 374
        if not cashBack or cashBack.get('cash_back_status')!=1:
14801 kshitij.so 375
            info['cash_back_type'] = 0
376
            info['cash_back'] = 0
14760 kshitij.so 377
        else:
378
            if cashBack['cash_back_type'] in (1,2):
379
                info['cash_back_type'] = cashBack['cash_back_type']
380
                info['cash_back'] = float(cashBack['cash_back'])
381
            else:
14801 kshitij.so 382
                info['cash_back_type'] = 0
383
                info['cash_back'] = 0
14760 kshitij.so 384
    except Exception as cashBackEx:
14794 kshitij.so 385
        traceback.print_exc()
14760 kshitij.so 386
        print cashBackEx
387
        print "Error calculating cashback."
388
        info['cash_back_type'] = 0
389
        info['cash_back'] = 0
390
    try:
14367 kshitij.so 391
        thread = threading.Thread(target=recomputeDeal, args = (item[0]['skuBundleId'],))
392
        thread.daemon = True
393
        thread.start()    
394
    except:
395
        print "Unable to compute deal for ",item[0]['skuBundleId']
14431 kshitij.so 396
    return info
13829 kshitij.so 397
 
14828 kshitij.so 398
def updatePriceForNotificationBundles(skuBundleId):
14833 kshitij.so 399
    itemIds = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':skuBundleId,'priceUpdatedOn':{'$lte':to_java_date(datetime.now() - timedelta(minutes=3))},'source_id':{"$in":SOURCE_MAP.values()}}))
14828 kshitij.so 400
    for item in itemIds:
14833 kshitij.so 401
        print item['_id']
14828 kshitij.so 402
        item['dealFlag'] = 0
403
        item['dealType'] = 0
404
        manualDeals = list(get_mongo_connection().Catalog.ManualDeals.find({'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())},'source_id':item['source_id'], 'sku':item['_id']}))
405
        if len(manualDeals) > 0:
406
            item['dealFlag'] = 1
407
            item['dealType'] =manualDeals[0]['dealType']
408
        info = returnLatestPrice(item, item['source_id'],False)
409
        print info
410
 
13829 kshitij.so 411
def main():
14834 kshitij.so 412
    print "retuned %s"%(str(getLatestPrice(2313, 4)))
13829 kshitij.so 413
 
414
if __name__=='__main__':
13971 kshitij.so 415
    main()
416