Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
13828 kshitij.so 1
import pysolr
14186 kshitij.so 2
import pymongo
13828 kshitij.so 3
import json
14186 kshitij.so 4
import os
14243 kshitij.so 5
import optparse
14245 kshitij.so 6
import shutil
13828 kshitij.so 7
 
8
con=None
9
 
14186 kshitij.so 10
filePath = '/tmp/autosuggest.json'
11
destFilePath = '/home/kshitij/'
12
 
13828 kshitij.so 13
categoryMap = {3:'Mobiles',5:'Tablets'}
14
SOURCE_MAP = {'AMAZON':1,'FLIPKART':2,'SNAPDEAL':3,'SAHOLIC':4}
15
xstr = lambda s: s or ""
16
 
14243 kshitij.so 17
parser = optparse.OptionParser()
18
parser.add_option("-m", "--m", dest="mongoHost",
19
                      default="localhost",
20
                      type="string", help="The HOST where the mongo server is running",
21
                      metavar="HOST")
14248 kshitij.so 22
parser.add_option("-s", "--s", dest="server",
23
                      default="localhost",
24
                      type="string", help="The HOST where the mongo server is running",
25
                      metavar="HOST")
14243 kshitij.so 26
 
27
(options, args) = parser.parse_args()
28
 
29
 
13828 kshitij.so 30
class __SkuInfo:
31
 
13931 kshitij.so 32
    def __init__(self, id, skuBundleId, brand, model_name, source_product_name, category_id, category, available_price, mrp, in_stock, \
13985 kshitij.so 33
                 source_id, store, title, thumbnail, priceUpdatedOn):
13828 kshitij.so 34
        self.id = id
35
        self.skuBundleId = skuBundleId
36
        self.brand = brand
37
        self.model_name = model_name
13931 kshitij.so 38
        self.source_product_name = source_product_name
13828 kshitij.so 39
        self.category_id = category_id
40
        self.category = category
41
        self.available_price = available_price
42
        self.mrp = mrp
43
        self.in_stock = in_stock
44
        self.source_id = source_id
45
        self.store = store
46
        self.title= title
47
        self.thumbnail = thumbnail
13985 kshitij.so 48
        self.priceUpdatedOn = priceUpdatedOn
13828 kshitij.so 49
 
50
 
51
solr = pysolr.Solr("http://104.200.25.40:8080/solr/", timeout=10)
52
 
53
def pushData():
54
    l = []
14186 kshitij.so 55
    catalogMap = {}
14243 kshitij.so 56
    items = get_mongo_connection(options.mongoHost).Catalog.MasterData.find({'source_id' : { "$in": SOURCE_MAP.values() } })
13828 kshitij.so 57
    print items.count()
58
    for item in items:
59
        title = xstr(item['brand'])+" "+xstr(item['model_name'])
14186 kshitij.so 60
        if not catalogMap.has_key(str(item['skuBundleId'])+" "+title):
14204 kshitij.so 61
            catalogMap[str(item['skuBundleId'])+" "+title] = [title]
13974 kshitij.so 62
        s_info = __SkuInfo(str(item['_id']),int(item['skuBundleId']),(item['brand']),(item['model_name']),(item['source_product_name']),int(item['category_id']),categoryMap.get(item['category_id']),float(item['available_price']),float(item['mrp']),item['in_stock'], \
13985 kshitij.so 63
                        int(item['source_id']),(item['source']),title,(item['thumbnail']), long(item['priceUpdatedOn']))
13828 kshitij.so 64
        l.append(s_info.__dict__)
65
    solr.add(l)
14186 kshitij.so 66
 
14204 kshitij.so 67
    autoSuggestList = []
68
    for v in catalogMap.itervalues():
14214 kshitij.so 69
        autoSuggestList.append({'val':v[0]})
14186 kshitij.so 70
    PATH = os.path.expanduser(filePath)
71
    if os.path.isfile(PATH):
72
        try:
73
            os.remove(os.path.expanduser(filePath))
74
        except OSError:
75
            pass
76
    output = open(filePath, 'ab+')
14204 kshitij.so 77
    json.dump(autoSuggestList, output)
14186 kshitij.so 78
    output.close()
14248 kshitij.so 79
    if options.server !='localhost':
14244 kshitij.so 80
        try:
14248 kshitij.so 81
            os.system("scp "+filePath +" root@"+options.server+":"+destFilePath)
14244 kshitij.so 82
        except:
14245 kshitij.so 83
            shutil.copy2(filePath, destFilePath)
14186 kshitij.so 84
 
85
 
13828 kshitij.so 86
 
87
def get_mongo_connection(host='localhost', port=27017):
88
    global con
89
    if con is None:
90
        print "Establishing connection %s host and port %d" %(host,port)
91
        try:
92
            con = pymongo.MongoClient(host, port)
93
        except Exception, e:
94
            print e
95
            return None
96
    return con
14186 kshitij.so 97
 
13828 kshitij.so 98
if __name__=='__main__':
14249 kshitij.so 99
    pushData()