Subversion Repositories SmartDukaan

Rev

Rev 17181 | Rev 17295 | 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
15951 kshitij.so 4
from dtr.utils.utils import to_java_date, getNlcPoints, transformUrl
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
16410 kshitij.so 9
from dtr.utils import FlipkartScraper,NewFlipkartScraper, ShopCluesScraper, \
17013 manish.sha 10
PaytmOfferScraper, PaytmScraper, HomeShop18Scraper
14324 kshitij.so 11
from dtr.storage.MemCache import MemCache
14334 kshitij.so 12
from functools import partial
13
import threading
14760 kshitij.so 14
from dtr.utils.utils import getCashBack
14794 kshitij.so 15
import traceback
15174 kshitij.so 16
from shop2020.config.client.ConfigClient import ConfigClient
16065 kshitij.so 17
import chardet
16415 kshitij.so 18
from dtr.CouponMaster import addToPaytmMaster
13829 kshitij.so 19
 
15174 kshitij.so 20
config_client = ConfigClient()
21
host_memCache = config_client.get_property('mem_cache_host_dtr')
22
host = config_client.get_property('mongo_dtr_host')
14324 kshitij.so 23
 
15174 kshitij.so 24
mc = MemCache(host_memCache)
25
 
26
 
15902 kshitij.so 27
con  = None
17043 kshitij.so 28
SOURCE_MAP = {'AMAZON':1,'FLIPKART':2,'SNAPDEAL':3,'SAHOLIC':4, 'SHOPCLUES.COM':5,'PAYTM.COM':6,'HOMESHOP18':7}
13829 kshitij.so 29
 
30
headers = { 
31
           'User-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
32
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
33
            'Accept-Language' : 'en-US,en;q=0.8',                     
34
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
35
        }
36
 
15608 kshitij.so 37
 
15174 kshitij.so 38
def get_mongo_connection(port=27017):
13829 kshitij.so 39
    global con
40
    if con is None:
41
        print "Establishing connection %s host and port %d" %(host,port)
42
        try:
43
            con = pymongo.MongoClient(host, port)
44
        except Exception, e:
45
            print e
46
            return None
47
    return con
48
 
14828 kshitij.so 49
def returnLatestPrice(data, source_id, ignoreLastUpdated = True):
13918 kshitij.so 50
    now = datetime.now()
13829 kshitij.so 51
    if source_id == 1:
52
        try:
13918 kshitij.so 53
            if data['identifier'] is None or len(data['identifier'].strip())==0:
13829 kshitij.so 54
                return {}
13918 kshitij.so 55
 
16500 kshitij.so 56
            if data.get('ignorePricing') ==1:
57
                if data['dealFlag'] ==1 and data['dealType'] ==1:
16510 kshitij.so 58
                    data['marketPlaceUrl'] = data['dealUrl'].strip()
16117 kshitij.so 59
                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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
15615 kshitij.so 60
 
61
 
14577 kshitij.so 62
            if data['dealFlag'] ==1 and data['dealType'] ==1:
16510 kshitij.so 63
                data['marketPlaceUrl'] = data['dealUrl'].strip()
14577 kshitij.so 64
 
13918 kshitij.so 65
            try:
14828 kshitij.so 66
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
13918 kshitij.so 67
                    print "sku id is already updated",data['_id'] 
16117 kshitij.so 68
                    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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
13918 kshitij.so 69
            except:
70
                pass
71
 
72
 
15956 kshitij.so 73
            url = "http://www.amazon.in/gp/aw/ol/%s?o=New&op=1"%(data['identifier'])
13829 kshitij.so 74
            lowestPrice = 0.0
14309 kshitij.so 75
            try:
76
                if data['dealFlag'] ==1 and data['dealType'] ==1:
77
                    print "Inside deal"
16510 kshitij.so 78
                    deal_url = data['marketPlaceUrl']
14309 kshitij.so 79
                    print deal_url
15213 kshitij.so 80
                    dealScraperAmazon = AmazonDealScraper.AmazonScraper(True)
14309 kshitij.so 81
                    lowestPrice = dealScraperAmazon.read(deal_url)
82
                    print lowestPrice
83
                    if lowestPrice == 0:
84
                        raise
85
                else:    
15213 kshitij.so 86
                    scraperAmazon = AmazonScraper(True)
14309 kshitij.so 87
                    lowestPrice = scraperAmazon.read(url)
88
            except Exception as e:
89
                print e
15213 kshitij.so 90
                scraperAmazon = AmazonScraper(True)
14309 kshitij.so 91
                lowestPrice = scraperAmazon.read(url)
13929 kshitij.so 92
            print "LowestPrice ",lowestPrice
13829 kshitij.so 93
            inStock = 0
94
            if lowestPrice > 0:
95
                inStock = 1
96
            if lowestPrice > 0:
13971 kshitij.so 97
                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)
16024 kshitij.so 98
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestPrice , 'in_stock':inStock,'dealType':data['dealType'],'codAvailable':data['codAvailable']}}, multi=True)
13829 kshitij.so 99
            else:
13929 kshitij.so 100
                lowestPrice = data['available_price']
13977 kshitij.so 101
                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)
16024 kshitij.so 102
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':0,'dealType':data['dealType'],'codAvailable':data['codAvailable']}}, multi=True)
13918 kshitij.so 103
 
16117 kshitij.so 104
            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'], 'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
14834 kshitij.so 105
        except Exception as e:
106
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
107
            print e
16117 kshitij.so 108
            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'], 'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
13829 kshitij.so 109
 
14203 kshitij.so 110
    elif source_id ==4:
14207 kshitij.so 111
 
14203 kshitij.so 112
        try:
14212 kshitij.so 113
            if data['identifier'] is None or len(data['identifier'].strip())==0:
114
                return {}
115
 
16500 kshitij.so 116
            if data.get('ignorePricing') ==1:
117
                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'], 'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
118
 
14212 kshitij.so 119
            try:
14828 kshitij.so 120
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
14212 kshitij.so 121
                    print "sku id is already updated",data['_id'] 
16117 kshitij.so 122
                    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'], 'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
14212 kshitij.so 123
            except:
124
                pass
125
 
14840 kshitij.so 126
            url = "http://50.116.3.101:8080/mobileapi/dtr-pricing?id=%s"%(data['identifier'])
14212 kshitij.so 127
            lowestPrice = 0.0
128
            instock = 0
129
            req = urllib2.Request(url,headers=headers)
130
            response = urllib2.urlopen(req)
131
            json_input = response.read()
132
            response.close()
133
            priceInfo = json.loads(json_input)
134
            lowestPrice = priceInfo['response']['sellingPrice']
135
            if lowestPrice > 0:
136
                instock = 1
137
            if instock  == 1:
138
                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)
16024 kshitij.so 139
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestPrice , 'in_stock':instock,'codAvailable':data['codAvailable']}}, multi=True)
14212 kshitij.so 140
            else:
141
                lowestPrice = data['available_price']
142
                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)
16024 kshitij.so 143
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':instock,'codAvailable':data['codAvailable']}}, multi=True)
14212 kshitij.so 144
 
16205 kshitij.so 145
            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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'],'tagline': data['tagline'], 'offer': data['offer']}
14834 kshitij.so 146
 
147
        except Exception as e:
148
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
149
            print e
16205 kshitij.so 150
            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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'],'tagline': data['tagline'], 'offer': data['offer']}
14203 kshitij.so 151
 
14207 kshitij.so 152
 
13829 kshitij.so 153
    elif source_id ==3:
154
        try:
13918 kshitij.so 155
            if data['identifier'] is None or len(data['identifier'].strip())==0:
13829 kshitij.so 156
                return {}
13918 kshitij.so 157
 
16500 kshitij.so 158
            if data.get('ignorePricing') ==1:
16206 kshitij.so 159
                print "Ignored items returning for %d"%(data['_id'])
16265 kshitij.so 160
                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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
16206 kshitij.so 161
 
13918 kshitij.so 162
            try:
14828 kshitij.so 163
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
13920 kshitij.so 164
                    print "sku id is already updated",data['_id']
16205 kshitij.so 165
                    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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'],'tagline': data['tagline'], 'offer': data['offer']}
13919 kshitij.so 166
 
167
            except Exception as e:
13920 kshitij.so 168
                print "Exception snapdeal"
13919 kshitij.so 169
                print e
13918 kshitij.so 170
 
15819 kshitij.so 171
            url="http://www.snapdeal.com/acors/json/v2/gvbps?supc=%s&catUrl=&bn=&catId=175&start=0&count=10000"%(data['identifier'])
13829 kshitij.so 172
            req = urllib2.Request(url,headers=headers)
173
            response = urllib2.urlopen(req)
16065 kshitij.so 174
            snapdeal_data = response.read()
175
            encoding =  chardet.detect(snapdeal_data)
176
            try:
177
                snapdeal_data = snapdeal_data.decode(encoding.get('encoding'))
178
            except:
179
                snapdeal_data = snapdeal_data.decode(encoding.get('latin-1'))
180
            vendorInfo = json.loads(snapdeal_data)
14188 kshitij.so 181
            response.close()
13829 kshitij.so 182
            lowestOfferPrice = 0
183
            inStock = 0
15253 kshitij.so 184
            buyBoxPrice = 0
185
            isBuyBox = 1
15819 kshitij.so 186
            try:
187
                buyBoxStock = vendorInfo['primaryVendor']['buyableInventory']
188
                if buyBoxStock >0:
189
                    buyBoxPrice = vendorInfo['primaryVendor']['sellingPrice']
190
            except:
191
                pass
16065 kshitij.so 192
            print "buy box stock ",buyBoxStock
193
            print "bux box price ",buyBoxPrice
15819 kshitij.so 194
            sortedVendorsData = sorted(vendorInfo['vendors'], key=itemgetter('sellingPrice'))
15253 kshitij.so 195
            for sortedVendorData in sortedVendorsData:
196
                lowestOfferPrice = float(sortedVendorData['sellingPrice'])
197
                try:
198
                    stock = sortedVendorData['buyableInventory']
199
                except:
200
                    stock = 0
13829 kshitij.so 201
                if stock > 0 and lowestOfferPrice > 0:
202
                    inStock = 1
203
                    break
204
 
205
            print lowestOfferPrice
206
            print inStock
207
            print "*************"
15253 kshitij.so 208
 
209
            if buyBoxPrice != lowestOfferPrice:
210
                isBuyBox = 0
211
 
13829 kshitij.so 212
            if inStock  == 1:
15253 kshitij.so 213
                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)
16024 kshitij.so 214
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestOfferPrice , 'in_stock':inStock,'codAvailable':data['codAvailable']}}, multi=True)
13829 kshitij.so 215
            else:
13929 kshitij.so 216
                lowestOfferPrice = data['available_price']
15253 kshitij.so 217
                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)
16024 kshitij.so 218
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':inStock,'codAvailable':data['codAvailable']}}, multi=True)
13918 kshitij.so 219
 
16117 kshitij.so 220
            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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
14834 kshitij.so 221
        except Exception as e:
15266 kshitij.so 222
            print traceback.print_exc()
14834 kshitij.so 223
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
224
            print e
16117 kshitij.so 225
            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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
13829 kshitij.so 226
 
227
    elif source_id == 2:
228
        try:
13918 kshitij.so 229
            if data['identifier'] is None or len(data['identifier'].strip())==0:
13829 kshitij.so 230
                return {}
13918 kshitij.so 231
 
16500 kshitij.so 232
            if data.get('ignorePricing') ==1:
15608 kshitij.so 233
                print "Ignored items returning for %d"%(data['_id'])
16117 kshitij.so 234
                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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
15608 kshitij.so 235
 
13918 kshitij.so 236
            try:
14828 kshitij.so 237
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
13918 kshitij.so 238
                    print "sku id is already updated",data['_id']
16117 kshitij.so 239
                    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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']} 
13918 kshitij.so 240
            except:
241
                pass
242
 
243
            lowestSp = 0
244
            inStock = 0
15253 kshitij.so 245
            buyBoxPrice = 0
246
            isBuyBox = 0
14189 kshitij.so 247
            scraperProductPage = NewFlipkartScraper.FlipkartProductPageScraper()
14121 kshitij.so 248
            try:
17262 kshitij.so 249
                result = scraperProductPage.read(data['identifier'])
250
                print result
251
                if result.get('lowestSp')!=0:
252
                    lowestSp = result.get('lowestSp')
253
                    inStock = result.get('inStock')
254
                    buyBoxPrice = result.get('buyBoxPrice')
14121 kshitij.so 255
            except:
256
                print "Unable to scrape product page ",data['identifier']
13829 kshitij.so 257
            print lowestSp
258
            print inStock
15253 kshitij.so 259
            if buyBoxPrice is not None and buyBoxPrice == lowestSp:
260
                isBuyBox = 1
13829 kshitij.so 261
            if lowestSp > 0:
15253 kshitij.so 262
                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)
16024 kshitij.so 263
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestSp , 'in_stock':inStock,'codAvailable':data['codAvailable']}}, multi=True)
13829 kshitij.so 264
            else:
13929 kshitij.so 265
                lowestSp = data['available_price']
15253 kshitij.so 266
                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)
16024 kshitij.so 267
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':inStock,'codAvailable':data['codAvailable']}}, multi=True)
13918 kshitij.so 268
 
16117 kshitij.so 269
            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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
14342 kshitij.so 270
 
14834 kshitij.so 271
        except Exception as e:
272
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
273
            print e
16117 kshitij.so 274
            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'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
15902 kshitij.so 275
 
276
    elif source_id == 5:
277
        try:
16500 kshitij.so 278
            if data.get('ignorePricing') ==1:
15902 kshitij.so 279
                print "Ignored items returning for %d"%(data['_id'])
16117 kshitij.so 280
                return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':5,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
15902 kshitij.so 281
 
282
            try:
283
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
284
                    print "sku id is already updated",data['_id'] 
16117 kshitij.so 285
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':5,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
15902 kshitij.so 286
            except:
287
                pass
288
 
289
 
290
            url = data['marketPlaceUrl']
291
            lowestPrice = 0.0
292
            try:
293
                sc = ShopCluesScraper.ShopCluesScraper()
15951 kshitij.so 294
                url = transformUrl(url, 5)
15902 kshitij.so 295
                productInfo = sc.read(url)
296
            except Exception as e:
16177 kshitij.so 297
                traceback.print_exc()
16176 kshitij.so 298
                productInfo = {}
16022 kshitij.so 299
                productInfo['price'] = 0.0
300
                productInfo['inStock'] = 0
301
                productInfo['isCod'] = 0
16178 kshitij.so 302
                productInfo['coupon'] = ""
16022 kshitij.so 303
 
15902 kshitij.so 304
            print "LowestPrice ",productInfo['price']
305
            if productInfo['price'] > 0 and productInfo['inStock']==1:
306
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'available_price':productInfo['price'],'coupon':productInfo['coupon'],'codAvailable':productInfo['isCod'],'updatedOn':to_java_date(now),'priceUpdatedOn':to_java_date(now),'in_stock':productInfo['inStock']}})
16024 kshitij.so 307
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':productInfo['price'] , 'in_stock':productInfo['inStock'],'dealType':data['dealType'], 'rank':data['rank'],'codAvailable':productInfo['isCod']}})
15902 kshitij.so 308
            else:
309
                lowestPrice = data['available_price']
310
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':0,'priceUpdatedOn':to_java_date(now)}})
16024 kshitij.so 311
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':0,'dealType':data['dealType'],'rank':data['rank'],'codAvailable':productInfo['isCod']}})
15902 kshitij.so 312
 
16117 kshitij.so 313
            return {'_id':data['_id'],'available_price':productInfo['price'],'in_stock':productInfo['inStock'],'source_id':5,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'], 'coupon':productInfo['coupon'],'codAvailable':productInfo['isCod'], 'tagline': data['tagline'], 'offer': data['offer']}
15902 kshitij.so 314
        except Exception as e:
315
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
16177 kshitij.so 316
            traceback.print_exc()
16117 kshitij.so 317
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':5,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
16410 kshitij.so 318
 
319
    elif source_id == 6:
320
        try:
16500 kshitij.so 321
            if data.get('ignorePricing') ==1:
16410 kshitij.so 322
                print "Ignored items returning for %d"%(data['_id'])
16491 kshitij.so 323
                return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':6,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer'],'gross_price':data.get('gross_price')}
16410 kshitij.so 324
 
325
            try:
326
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
327
                    print "sku id is already updated",data['_id'] 
16491 kshitij.so 328
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':6,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer'],'gross_price':data.get('gross_price')}
16410 kshitij.so 329
            except:
330
                pass
331
 
332
            paytmScraper = PaytmScraper.PaytmScraper()
333
            url = "https://catalog.paytm.com/v1/mobile/product/%s"%(data['identifier'].strip())
334
            try:
335
                result = paytmScraper.read(url)
336
                effective_price = result.get('offerPrice')
16462 kshitij.so 337
                gross_price = effective_price
16410 kshitij.so 338
                coupon = ""
339
                try:
340
                    offers = PaytmOfferScraper.fetchOffers(result['offerUrl'])
16415 kshitij.so 341
                    try:
342
                        addToPaytmMaster(offers.get('codes'))
343
                    except:
344
                        print "Error in adding coupon"
345
                        traceback.print_exc()
16410 kshitij.so 346
                    bestOffer = {}
347
                    for offer_data in offers.get('codes'):
16415 kshitij.so 348
                        if effective_price > offer_data.get('effective_price'):
16410 kshitij.so 349
                            effective_price = offer_data.get('effective_price')
350
                            bestOffer = offer_data
351
                            coupon = bestOffer.get('code')
352
                except:
353
                    pass
16469 kshitij.so 354
 
355
                """Temp fix"""
356
                if len(coupon) > 0:
357
                    result['codAvailable'] = 0
358
 
16410 kshitij.so 359
                available_price = effective_price 
360
                if result['inStock']:
361
                    inStock = 1
16462 kshitij.so 362
                    get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'available_price':available_price,'updatedOn':to_java_date(datetime.now()),'priceUpdatedOn':to_java_date(datetime.now()),'in_stock':1,'buyBoxFlag':1,'codAvailable':result.get('codAvailable'),'coupon':coupon,'gross_price':gross_price}})
363
                    get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':available_price , 'in_stock':1,'codAvailable':result.get('codAvailable'),'gross_price':gross_price}})
16410 kshitij.so 364
                else:
365
                    inStock = 0
16415 kshitij.so 366
                    get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(datetime.now()),'in_stock':0,'priceUpdatedOn':to_java_date(datetime.now()),'buyBoxFlag':1,'codAvailable':result.get('codAvailable'),'coupon':coupon}})
367
                    get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':0,'codAvailable':result.get('codAvailable')}})
16410 kshitij.so 368
 
369
            except:
370
                inStock = 0
371
                get_mongo_connection().Catalog.MasterData.update({'_id':data['_id']}, {'$set' : {'updatedOn':to_java_date(datetime.now()),'in_stock':0,'priceUpdatedOn':to_java_date(datetime.now()),'buyBoxFlag':1}})
372
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':0}})
373
 
374
 
16462 kshitij.so 375
            return {'_id':data['_id'],'available_price':available_price,'in_stock':inStock,'source_id':6,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'], 'coupon':coupon,'codAvailable':result['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer'],'gross_price':gross_price}
16410 kshitij.so 376
        except Exception as e:
377
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
378
            traceback.print_exc()
16462 kshitij.so 379
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':6,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer'],'gross_price':data.get('gross_price')}
17013 manish.sha 380
 
381
    elif source_id ==7:
382
        try:
383
            if data['identifier'] is None or len(data['identifier'].strip())==0:
384
                return {}
385
 
386
            if data.get('ignorePricing') ==1:
387
                print "Ignored items returning for %d"%(data['_id'])
388
                return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':7,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
389
 
390
            try:
391
                if ignoreLastUpdated and data['priceUpdatedOn'] > to_java_date(now - timedelta(minutes=5)):
392
                    print "sku id is already updated",data['_id']
393
                    return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':7,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'],'tagline': data['tagline'], 'offer': data['offer']}
394
 
395
            except Exception as e:
396
                print "Exception snapdeal"
397
                print e
398
 
399
            response = None
400
 
401
            try:
17043 kshitij.so 402
                scraper = HomeShop18Scraper.HomeShop18Scraper()
17013 manish.sha 403
                response = scraper.read('http://m.homeshop18.com/product.mobi?productId=%s'%(str(data['identifier'])))
404
            except Exception as e:
405
                print e
17043 kshitij.so 406
                scraper = HomeShop18Scraper.HomeShop18Scraper()
17013 manish.sha 407
                response = scraper.read('http://m.homeshop18.com/product.mobi?productId=%s'%(str(data['identifier'])))
408
 
409
            lowestOfferPrice = 0
410
            inStock = 0
411
 
412
            if response is not None:
17043 kshitij.so 413
                lowestOfferPrice = float(response['price']+response['shippingCharge'])
17013 manish.sha 414
                inStock = response['inStock']          
415
 
416
            print lowestOfferPrice
417
            print inStock
418
            print "*************"
419
 
17036 kshitij.so 420
            if lowestOfferPrice ==0:
421
                inStock = 0
17013 manish.sha 422
 
17036 kshitij.so 423
 
17013 manish.sha 424
            if inStock  == 1:
17036 kshitij.so 425
                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)
17013 manish.sha 426
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'available_price':lowestOfferPrice , 'in_stock':inStock,'codAvailable':data['codAvailable']}}, multi=True)
427
            else:
428
                lowestOfferPrice = data['available_price']
17036 kshitij.so 429
                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)
17013 manish.sha 430
                get_mongo_connection().Catalog.Deals.update({'_id':data['_id']}, {'$set' : {'in_stock':inStock,'codAvailable':data['codAvailable']}}, multi=True)
431
 
432
            return {'_id':data['_id'],'available_price':lowestOfferPrice,'in_stock':inStock,'source_id':7,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
433
        except Exception as e:
434
            print traceback.print_exc()
435
            print "Exception for _id %d and source %s"%(data['_id'], source_id)
436
            print e
437
            return {'_id':data['_id'],'available_price':data['available_price'],'in_stock':data['in_stock'],'source_id':7,'source_product_name':data['source_product_name'],'marketPlaceUrl':data['marketPlaceUrl'],'thumbnail':data['thumbnail'],'coupon':data['coupon'], 'codAvailable':data['codAvailable'], 'tagline': data['tagline'], 'offer': data['offer']}
15902 kshitij.so 438
 
13829 kshitij.so 439
    else:
440
        return {}
15902 kshitij.so 441
 
442
 
13918 kshitij.so 443
 
16498 kshitij.so 444
def recomputePoints(deal):
15253 kshitij.so 445
    try:
16498 kshitij.so 446
        nlcPoints = getNlcPoints(deal)
15253 kshitij.so 447
    except:
16498 kshitij.so 448
        traceback.print_exc()
15253 kshitij.so 449
        nlcPoints = deal['nlcPoints']
16498 kshitij.so 450
 
451
    bundleDealPoints = list(get_mongo_connection().Catalog.DealPoints.find({'skuBundleId':deal['skuBundleId'],'startDate':{'$lte':to_java_date(datetime.now())},'endDate':{'$gte':to_java_date(datetime.now())}}))
452
    if len(bundleDealPoints) > 0:
453
        manualDealThresholdPrice = bundleDealPoints[0]['dealThresholdPrice']
454
        dealPoints = bundleDealPoints[0]['dealPoints']
15253 kshitij.so 455
    else:
456
        dealPoints = 0
16498 kshitij.so 457
        manualDealThresholdPrice = None
16508 kshitij.so 458
 
459
    if deal['available_price'] > manualDealThresholdPrice:
460
        dealPoints = 0
461
 
16498 kshitij.so 462
 
463
    if dealPoints != deal['dealPoints'] or manualDealThresholdPrice != deal['manualDealThresholdPrice'] or nlcPoints != deal['nlcPoints']:
464
        get_mongo_connection().Catalog.Deals.update({'_id':deal['_id']},{"$set":{'totalPoints':deal['totalPoints'] - deal['nlcPoints'] + nlcPoints - deal['dealPoints'] +dealPoints , 'nlcPoints': nlcPoints, 'dealPoints': dealPoints, 'manualDealThresholdPrice': manualDealThresholdPrice}})
15253 kshitij.so 465
 
15266 kshitij.so 466
 
467
def populateNegativeDeals():
468
    negativeDeals = get_mongo_connection().Catalog.NegativeDeals.find().distinct('sku')
469
    mc.set("negative_deals", negativeDeals, 600)
470
 
471
def recomputeDeal(item):
16017 kshitij.so 472
 
13918 kshitij.so 473
    """Lets recompute deal for this bundle"""
15266 kshitij.so 474
    print "Recomputing for bundleId",item.get('skuBundleId')
475
    skuBundleId = item['skuBundleId']
13829 kshitij.so 476
 
13918 kshitij.so 477
    similarItems = list(get_mongo_connection().Catalog.Deals.find({'skuBundleId':skuBundleId}).sort([('available_price',pymongo.ASCENDING)]))
478
    bestPrice = float("inf")
479
    bestOne = None
480
    bestSellerPoints = 0
481
    toUpdate = []
16017 kshitij.so 482
    prepaidBestPrice = float("inf")
483
    prepaidBestOne = None
484
    prepaidBestSellerPoints = 0
13918 kshitij.so 485
    for similarItem in similarItems:
16498 kshitij.so 486
        try:
487
            recomputePoints(similarItem)
488
        except:
489
            traceback.print_exc()
16017 kshitij.so 490
        if similarItem['codAvailable'] ==1:
491
            if mc.get("negative_deals") is None:
492
                populateNegativeDeals()
16172 kshitij.so 493
            if similarItem['in_stock'] == 0  or similarItem['_id'] in mc.get("negative_deals"):
16017 kshitij.so 494
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
495
                continue
496
            if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0:
497
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
498
                continue
499
            if similarItem['available_price'] < bestPrice:
500
                bestOne = similarItem
501
                bestPrice = similarItem['available_price']
502
                bestSellerPoints = similarItem['bestSellerPoints']
503
            elif similarItem['available_price'] == bestPrice and bestSellerPoints < similarItem['bestSellerPoints']:
504
                bestOne = similarItem
505
                bestPrice = similarItem['available_price']
506
                bestSellerPoints = similarItem['bestSellerPoints']
507
            else:
508
                pass
13918 kshitij.so 509
        else:
16017 kshitij.so 510
            if mc.get("negative_deals") is None:
511
                populateNegativeDeals()
16172 kshitij.so 512
            if similarItem['in_stock'] == 0  or similarItem['_id'] in mc.get("negative_deals"):
16017 kshitij.so 513
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0, 'prepaidDeal':0 }})
514
                continue
515
            if similarItem['source_id'] == SOURCE_MAP.get('SHOPCLUES.COM') and similarItem['rank']==0:
516
                get_mongo_connection().Catalog.Deals.update({ '_id' : similarItem['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':0 }})
517
                continue
16869 kshitij.so 518
            if similarItem['source_id'] == SOURCE_MAP.get('PAYTM.COM'):
519
                similarItem['available_price'] = similarItem['gross_price']
16017 kshitij.so 520
            if similarItem['available_price'] < prepaidBestPrice:
521
                prepaidBestOne = similarItem
522
                prepaidBestPrice = similarItem['available_price']
523
                prepaidBestSellerPoints = similarItem['bestSellerPoints']
524
            elif similarItem['available_price'] == prepaidBestPrice and prepaidBestSellerPoints < similarItem['bestSellerPoints']:
525
                prepaidBestOne = similarItem
526
                prepaidBestPrice = similarItem['available_price']
527
                prepaidBestSellerPoints = similarItem['bestSellerPoints']
528
            else:
529
                pass
16024 kshitij.so 530
    print "bestOne ", bestOne
531
    print "prepaid best one",  prepaidBestOne
532
    if bestOne is not None or prepaidBestOne is not None:
13918 kshitij.so 533
        for similarItem in similarItems:
534
            toUpdate.append(similarItem['_id'])
16023 kshitij.so 535
        if bestOne is not None:
536
            toUpdate.remove(bestOne['_id'])
537
            get_mongo_connection().Catalog.Deals.update({ '_id' : bestOne['_id'] }, {'$set':{'showDeal':1,'prepaidDeal':0 }})
538
        if prepaidBestOne is not None:
16069 kshitij.so 539
            if bestOne is not None:
540
                if prepaidBestOne['available_price'] < bestOne['available_price']: 
541
                    toUpdate.remove(prepaidBestOne['_id'])
542
                    get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
16072 kshitij.so 543
            else:
544
                toUpdate.remove(prepaidBestOne['_id'])
545
                get_mongo_connection().Catalog.Deals.update({ '_id' : prepaidBestOne['_id'] }, {'$set':{'showDeal':0,'prepaidDeal':1 }})
13918 kshitij.so 546
    if len(toUpdate) > 0:
16017 kshitij.so 547
        get_mongo_connection().Catalog.Deals.update({ '_id' : { "$in": toUpdate } }, {'$set':{'showDeal':0,'prepaidDeal':0 }},upsert=False, multi=True)
548
 
14342 kshitij.so 549
    print "Done with recomputing"
13829 kshitij.so 550
 
551
def getLatestPrice(skuBundleId, source_id):
552
    temp = []
553
    itemIds = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':skuBundleId,'source_id' : source_id}))
16026 kshitij.so 554
    item = None
13829 kshitij.so 555
    for item in itemIds:
14309 kshitij.so 556
        item['dealFlag'] = 0
557
        item['dealType'] = 0
16510 kshitij.so 558
        item['dealUrl'] = ""
15912 kshitij.so 559
        if item['source_id'] ==5 and item['rank'] == 0:
560
            continue
15187 kshitij.so 561
        if item['source_id'] ==3:
562
            item['marketPlaceUrl'] = item['marketPlaceUrl']+'?supc='+item.get('identifier')
14309 kshitij.so 563
        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']}))
564
        if len(manualDeals) > 0:
565
            item['dealFlag'] = 1
14760 kshitij.so 566
            item['dealType'] =manualDeals[0]['dealType']
16510 kshitij.so 567
            item['dealUrl'] = manualDeals[0]['dealUrl']
14760 kshitij.so 568
        info = returnLatestPrice(item, source_id)
14794 kshitij.so 569
        print info
14760 kshitij.so 570
        try:
571
            cashBack = getCashBack(item['_id'], item['source_id'], item['category_id'], mc, 'localhost')
14794 kshitij.so 572
            print "CashBack is ",cashBack
14760 kshitij.so 573
            if not cashBack or cashBack.get('cash_back_status')!=1:
14801 kshitij.so 574
                info['cash_back_type'] = 0
575
                info['cash_back'] = 0
14760 kshitij.so 576
            else:
577
                if cashBack['cash_back_type'] in (1,2):
17181 kshitij.so 578
 
579
                    if cashBack.get('maxCashBack') is not None:
580
 
581
                        if cashBack.get('cash_back_type') ==1 and (float(cashBack.get('cash_back'))*info['available_price'])/100 > cashBack.get('maxCashBack'):
582
                            cashBack['cash_back_type'] = 2
583
                            cashBack['cash_back'] = cashBack['maxCashBack']
584
                        elif cashBack.get('cash_back_type') ==2 and cashBack.get('cash_back') > cashBack.get('maxCashBack'):
585
                            cashBack['cash_back'] = cashBack['maxCashBack']
586
                        else:
587
                            pass
588
 
589
 
590
 
14760 kshitij.so 591
                    info['cash_back_type'] = cashBack['cash_back_type']
592
                    info['cash_back'] = float(cashBack['cash_back'])
593
                else:
14801 kshitij.so 594
                    info['cash_back_type'] = 0
595
                    info['cash_back'] = 0
14760 kshitij.so 596
        except Exception as cashBackEx:
14794 kshitij.so 597
            traceback.print_exc()
14760 kshitij.so 598
            print "Error calculating cashback."
599
            info['cash_back_type'] = 0
600
            info['cash_back'] = 0
14794 kshitij.so 601
        print "info is ",info
14760 kshitij.so 602
        temp.append(info)
16026 kshitij.so 603
    if item is not None:
604
        try:
605
            thread = threading.Thread(target=recomputeDeal, args = (item,))
606
            thread.daemon = True
607
            thread.start()    
608
        except:
609
            print traceback.print_exc()
610
            print "Unable to compute deal for ",skuBundleId
13829 kshitij.so 611
    return temp
612
 
13864 kshitij.so 613
def getLatestPriceById(id):
614
    item = list(get_mongo_connection().Catalog.MasterData.find({'_id':id}))
14309 kshitij.so 615
    item[0]['dealFlag'] = 0
616
    item[0]['dealType'] = 0
16510 kshitij.so 617
    item[0]['dealUrl'] = ""
618
 
14309 kshitij.so 619
    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']}))
620
    if len(manualDeals) > 0:
621
        item[0]['dealFlag'] = 1
15266 kshitij.so 622
        item[0]['dealType'] =manualDeals[0]['dealType']
16510 kshitij.so 623
        item[0]['dealUrl'] = manualDeals[0]['dealUrl']
14367 kshitij.so 624
 
14431 kshitij.so 625
    info = returnLatestPrice(item[0], item[0]['source_id'])
14794 kshitij.so 626
    print info
14367 kshitij.so 627
    try:
14794 kshitij.so 628
        cashBack = getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'], mc, 'localhost')
629
        print "CashBack is ",cashBack
14760 kshitij.so 630
        if not cashBack or cashBack.get('cash_back_status')!=1:
14801 kshitij.so 631
            info['cash_back_type'] = 0
632
            info['cash_back'] = 0
14760 kshitij.so 633
        else:
634
            if cashBack['cash_back_type'] in (1,2):
635
                info['cash_back_type'] = cashBack['cash_back_type']
636
                info['cash_back'] = float(cashBack['cash_back'])
637
            else:
14801 kshitij.so 638
                info['cash_back_type'] = 0
639
                info['cash_back'] = 0
14760 kshitij.so 640
    except Exception as cashBackEx:
14794 kshitij.so 641
        traceback.print_exc()
14760 kshitij.so 642
        print cashBackEx
643
        print "Error calculating cashback."
644
        info['cash_back_type'] = 0
645
        info['cash_back'] = 0
646
    try:
15273 kshitij.so 647
        thread = threading.Thread(target=recomputeDeal, args = (item[0],))
14367 kshitij.so 648
        thread.daemon = True
649
        thread.start()    
650
    except:
651
        print "Unable to compute deal for ",item[0]['skuBundleId']
14431 kshitij.so 652
    return info
13829 kshitij.so 653
 
14828 kshitij.so 654
def updatePriceForNotificationBundles(skuBundleId):
15266 kshitij.so 655
    itemIds = list(get_mongo_connection().Catalog.MasterData.find({'skuBundleId':skuBundleId,'priceUpdatedOn':{'$lte':to_java_date(datetime.now() - timedelta(minutes=2))},'source_id':{"$in":SOURCE_MAP.values()}}))
14828 kshitij.so 656
    for item in itemIds:
14833 kshitij.so 657
        print item['_id']
14828 kshitij.so 658
        item['dealFlag'] = 0
659
        item['dealType'] = 0
16510 kshitij.so 660
        item['dealUrl'] = ""
14828 kshitij.so 661
        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']}))
662
        if len(manualDeals) > 0:
663
            item['dealFlag'] = 1
664
            item['dealType'] =manualDeals[0]['dealType']
16510 kshitij.so 665
            item['dealUrl'] = manualDeals[0]['dealUrl']
14828 kshitij.so 666
        info = returnLatestPrice(item, item['source_id'],False)
667
        print info
668
 
13829 kshitij.so 669
def main():
15956 kshitij.so 670
    print datetime.now()
17262 kshitij.so 671
    print "retuned %s"%(str(getLatestPriceById(7)))
15956 kshitij.so 672
    print datetime.now()
13829 kshitij.so 673
if __name__=='__main__':
13971 kshitij.so 674
    main()
675