Subversion Repositories SmartDukaan

Rev

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

Rev 13911 Rev 13921
Line 3... Line 3...
3
from dtr.utils.utils import to_java_date
3
from dtr.utils.utils import to_java_date
4
from operator import itemgetter 
4
from operator import itemgetter 
5
 
5
 
6
con = None
6
con = None
7
cashBackMap = {}
7
cashBackMap = {}
-
 
8
itemCashBackMap = {}
8
 
9
 
9
def get_mongo_connection(host='localhost', port=27017):
10
def get_mongo_connection(host='localhost', port=27017):
10
    global con
11
    global con
11
    if con is None:
12
    if con is None:
12
        print "Establishing connection %s host and port %d" %(host,port)
13
        print "Establishing connection %s host and port %d" %(host,port)
Line 16... Line 17...
16
            print e
17
            print e
17
            return None
18
            return None
18
    return con
19
    return con
19
 
20
 
20
def populateCashBack():
21
def populateCashBack():
-
 
22
    print "Populating cashback"
21
    global cashBackMap
23
    global cashBackMap
-
 
24
    global itemCashBackMap
-
 
25
    cashBackMap = {}
-
 
26
    itemCashBackMap = {}
22
    cashBack = list(get_mongo_connection().Catalog.CategoryCashBack.find())
27
    cashBack = list(get_mongo_connection().Catalog.CategoryCashBack.find())
23
    for row in cashBack:
28
    for row in cashBack:
24
        if cashBackMap.has_key(row['source_id']):
29
        if cashBackMap.has_key(row['source_id']):
25
            temp_map = {}
30
            temp_map = {}
26
            temp_list = []
31
            temp_list = []
Line 34... Line 39...
34
            temp_map = {}
39
            temp_map = {}
35
            temp_list = []
40
            temp_list = []
36
            temp_map[row['category_id']] = row
41
            temp_map[row['category_id']] = row
37
            temp_list.append(temp_map)
42
            temp_list.append(temp_map)
38
            cashBackMap[row['source_id']] = temp_list
43
            cashBackMap[row['source_id']] = temp_list
39
    for x, y in cashBackMap.iteritems():
44
    itemCashBack = list(get_mongo_connection().Catalog.ItemCashBack.find())
40
        print x
45
    for row in itemCashBack:
41
        print y
46
        if not itemCashBackMap.has_key(row['skuId']):
42
        print "================="
47
            itemCashBackMap[row['skuId']] = row
43
    
-
 
44
 
48
 
45
def addCategoryDiscount(data):
49
def addCategoryDiscount(data):
46
    collection = get_mongo_connection().Dtr.CategoryDiscount
50
    collection = get_mongo_connection().Dtr.CategoryDiscount
47
    query = []
51
    query = []
48
    data['brand'] = data['brand'].strip().upper()
52
    data['brand'] = data['brand'].strip().upper()
Line 139... Line 143...
139
        return result
143
        return result
140
    else:
144
    else:
141
        return result
145
        return result
142
 
146
 
143
def getDeals(category_id, offset, limit, sort, direction):
147
def getDeals(category_id, offset, limit, sort, direction):
-
 
148
    if (not bool(cashBackMap)) or (not bool(itemCashBackMap)):
-
 
149
        populateCashBack()
144
    rank = 1
150
    rank = 1
145
    deals = {}
151
    deals = {}
146
    outer_query = []
152
    outer_query = []
147
    outer_query.append({"showDeal":1})
153
    outer_query.append({"showDeal":1})
148
    query = {}
154
    query = {}
Line 163... Line 169...
163
        else:
169
        else:
164
            data = list(get_mongo_connection().Catalog.Deals.find({"$and":outer_query}).sort([(sort,direct)]).skip(offset).limit(limit))
170
            data = list(get_mongo_connection().Catalog.Deals.find({"$and":outer_query}).sort([(sort,direct)]).skip(offset).limit(limit))
165
    for d in data:
171
    for d in data:
166
        item = list(get_mongo_connection().Catalog.MasterData.find({'_id':d['_id']}))
172
        item = list(get_mongo_connection().Catalog.MasterData.find({'_id':d['_id']}))
167
        if not deals.has_key(item[0]['identifier']):
173
        if not deals.has_key(item[0]['identifier']):
168
            item[0]['dealRank'] = rank 
174
            item[0]['dealRank'] = rank
-
 
175
            try:
-
 
176
                cashBack = __getCashBack(item[0]['_id'], item[0]['source_id'], item[0]['category_id'])
-
 
177
                if not cashBack or cashBack.get('cash_back_status')!=1:
-
 
178
                    item[0]['cashBackAmount'] = 0.0
-
 
179
                else:
-
 
180
                    if cashBack.get('cash_back_type') ==1:
-
 
181
                        cashBackAmount = round(item[0]['available_price'] * (cashBack.get('cash_back'))/100)
-
 
182
                    else:
-
 
183
                        cashBackAmount = round(cashBack.get('cash_back'))
-
 
184
                    item[0]['cashBackAmount'] = cashBackAmount
-
 
185
            except:
-
 
186
                print "Error in adding cashback to deals"
-
 
187
                item[0]['cashBackAmount'] = 0.0
169
            deals[item[0]['identifier']] = item[0]
188
            deals[item[0]['identifier']] = item[0]
-
 
189
            
170
            rank +=1
190
            rank +=1
171
    return sorted(deals.values(), key=itemgetter('dealRank'))
191
    return sorted(deals.values(), key=itemgetter('dealRank'))
172
 
192
 
173
def getItem(skuId):
193
def getItem(skuId):
174
    try:
194
    try:
175
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'_id':int(skuId)}))
195
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'_id':int(skuId)}))
176
        return skuData
196
        return skuData
177
    except:
197
    except:
178
        return [{}]
198
        return [{}]
179
 
199
 
-
 
200
def __getCashBack(skuId, source_id, category_id):
-
 
201
    itemCashBack = itemCashBackMap.get(skuId)
-
 
202
    if itemCashBack is not None:
-
 
203
        return itemCashBack
-
 
204
 
-
 
205
    sourceCashBack = cashBackMap.get(source_id)
-
 
206
    if sourceCashBack is not None and len(sourceCashBack) > 0:
-
 
207
        for cashBack in sourceCashBack:
-
 
208
            if cashBack.get(category_id) is None:
-
 
209
                continue
-
 
210
            else:
-
 
211
                return cashBack.get(category_id)
-
 
212
    else:
-
 
213
        return {}
-
 
214
 
180
def getCashBackDetails(identifier, source_id):
215
def getCashBackDetails(identifier, source_id):
-
 
216
    if (not bool(cashBackMap)) or (not bool(itemCashBackMap)):
-
 
217
        populateCashBack()
-
 
218
        
181
    """Need to add item level cashback, no data available right now."""
219
    """Need to add item level cashback, no data available right now."""
182
    
220
    
183
    if source_id in (1,2,4):
221
    if source_id in (1,2,4,5):
184
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'identifier':identifier.strip(), 'source_id':source_id}))
222
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'identifier':identifier.strip(), 'source_id':source_id}))
185
    elif source_id == 3:
223
    elif source_id == 3:
186
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'secondaryIdentifier':identifier.strip(), 'source_id':source_id}))
224
        skuData = list(get_mongo_connection().Catalog.MasterData.find({'secondaryIdentifier':identifier.strip(), 'source_id':source_id}))
187
    else:
225
    else:
188
        return {}
226
        return {}
189
    if len(skuData) > 0:
227
    if len(skuData) > 0:
-
 
228
        
190
        cashback = list(get_mongo_connection().Catalog.CategoryCashBack.find({'category_id':skuData[0]['category_id'], 'source_id':source_id}))
229
        itemCashBack = itemCashBackMap.get(skuData[0]['_id'])
191
        if len(cashback) > 0:
230
        if itemCashBack is not None:
192
            return cashback[0]
231
            return itemCashBack
-
 
232
    
-
 
233
        sourceCashBack = cashBackMap.get(source_id)
-
 
234
        if sourceCashBack is not None and len(sourceCashBack) > 0:
-
 
235
            for cashBack in sourceCashBack:
-
 
236
                if cashBack.get(skuData[0]['category_id']) is None:
-
 
237
                    continue
-
 
238
                else:
-
 
239
                    return cashBack.get(skuData[0]['category_id'])
193
        else:
240
        else:
194
            return {} 
241
            return {} 
195
    else:
242
    else:
196
        return {}
243
        return {}
197
    
244
    
198
    
245
    
199
    
246
    
200
 
247
 
201
def main():
248
def main():
202
    print getDeals(0, 0, 20, "available_price", 1)
249
    for x in getDeals(0, 0, 20, None, -1):
-
 
250
        print x['source_id']
-
 
251
        print x['category_id']
-
 
252
        print x['available_price']
-
 
253
        print x['cashBackAmount']
-
 
254
        print "===================="
-
 
255
    
203
    
256
    
204
if __name__=='__main__':
257
if __name__=='__main__':
205
    main()
258
    main()
206
259