Subversion Repositories SmartDukaan

Rev

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