Subversion Repositories SmartDukaan

Rev

Rev 13843 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
13828 kshitij.so 1
from elixir import * 
2
from shop2020.model.v1.catalog.impl import DataService
3
from shop2020.model.v1.catalog.impl.DataService import PrivateDeals, Item
4
from sqlalchemy.sql.functions import now
5
from datetime import datetime, timedelta
6
import pymongo
7
from dtr.utils.utils import to_java_date
8
 
9
dealsMap = {}
10
con = None
11
dealsCatalogIds = []
12
itemCatalogMap = {}
13
timestamp = datetime.now()
14
print to_java_date(timestamp)
15
 
16
DataService.initialize(db_hostname='localhost')
17
 
18
def get_mongo_connection(host='localhost', port=27017):
19
    global con
20
    if con is None:
21
        print "Establishing connection %s host and port %d" %(host,port)
22
        try:
23
            con = pymongo.MongoClient(host, port)
24
        except Exception, e:
25
            print e
26
            return None
27
    return con
28
 
29
def getPrivateDeals():
30
    global dealsMap
31
    dealsMap = dict()
32
    all_active_items_query =  session.query(PrivateDeals).filter(PrivateDeals.isActive==True).filter(now().between(PrivateDeals.startDate, PrivateDeals.endDate + timedelta(days=0)))
33
    all_active_private_deals = all_active_items_query.all()
34
    if all_active_private_deals is not None or all_active_private_deals!=[]:
35
        for active_private_deal in all_active_private_deals:
36
            item = Item.get_by(id = active_private_deal.item_id)
37
            if item.sellingPrice >  active_private_deal.dealPrice and item.status==3:
38
                dealsMap[active_private_deal.item_id] = active_private_deal
39
 
40
def getItemsToUpdate():
41
    global dealsCatalogIds
42
    global itemCatalogMap
43
    saholicCatalogIds = list(get_mongo_connection().Catalog.MasterData.find({'rank':{"$gt":0},'source_id':4}))
44
    for d in saholicCatalogIds:
45
        dealsCatalogIds.append(long(d['identifier']))
46
    items = Item.query.filter(Item.catalog_item_id.in_(dealsCatalogIds)).all()
47
    for item in items:
48
        temp = []
49
        if not itemCatalogMap.has_key(item.catalog_item_id):
50
            temp.append(item)
51
            print "****",type(item.catalog_item_id)
52
            itemCatalogMap[item.catalog_item_id] = temp
53
        else:
54
            val = itemCatalogMap.get(item.catalog_item_id)
55
            for l in val:
56
                temp.append(l)
57
            temp.append(item)
58
            itemCatalogMap[item.catalog_item_id] = temp
59
 
60
    for saholicCatalogId in saholicCatalogIds:
61
        d_items = itemCatalogMap.get(long(saholicCatalogId['identifier']))
62
        available_price = None
63
        for d_item in d_items: 
64
            if d_item.status == 3:
65
                in_stock =1
66
            else:
67
                in_stock = 0
68
                continue
69
            if dealsMap.get(d_item.id) is not None:
70
                available_price = dealsMap.get(d_item.id).dealPrice
71
            if (available_price !=None):
72
                break
73
        if (available_price is None):
74
            in_stock = 0
75
            for d_item in d_items:
76
                if d_item.status == 3:
77
                    available_price = d_item.sellingPrice
78
                    in_stock =1
79
                    break
80
        print long(saholicCatalogId['identifier'])
81
        print in_stock
82
        print available_price
83
        print dealsMap.get(d_item.id)
84
        print "++++++++++++++++++++++++++"
85
        if available_price > 0 or available_price is None:
86
            get_mongo_connection().Catalog.MasterData.update({'identifier':saholicCatalogId['identifier']}, {'$set' : {'available_price':available_price,'updatedOn':to_java_date(timestamp),'in_stock':in_stock}}, multi=True)
87
        else:
88
            get_mongo_connection().Catalog.MasterData.update({'identifier':saholicCatalogId['identifier']}, {'$set' : {'updatedOn':to_java_date(timestamp),'in_stock':in_stock}}, multi=True)
89
 
90
def main():
91
    getPrivateDeals()
92
    getItemsToUpdate()
93
 
94
if __name__=='__main__':
95
    main()