Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
19365 kshitij.so 1
from elixir import *
2
import datetime
3
from dtr.utils.utils import get_mongo_connection, to_java_date
4
from shop2020.model.v1.order.impl import DataService as OrderDataService
5
from shop2020.model.v1.catalog.impl import DataService as CatalogDataService 
6
from shop2020.model.v1.order.impl.DataService import Order, LineItem
7
from shop2020.model.v1.catalog.impl.DataService import Item
8
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus, OrderSource
9
 
10
dtrUserMap = {}
11
 
12
negative_items = []
13
negative_categories = [10013,10017]
14
 
15
pending_order_status = [2,3,4,5,6,7,8,13,9,10,16,17,81,80, 40]
16
 
17
startDate = datetime.datetime.strptime('01-04-2016 00:00:00', '%d-%m-%Y %H:%M:%S')
18
endDate = datetime.datetime.strptime('01-05-2016 00:00:00', '%d-%m-%Y %H:%M:%S')
19
run_time = to_java_date(datetime.datetime.now())
20
 
21
 
22
class UserOrderData:
23
    def __init__(self, dtr_user_id, delivered_order_value, pending_order_value):
24
        self.dtr_user_id = dtr_user_id
25
        self.delivered_order_value = delivered_order_value
26
        self.pending_order_value = pending_order_value
27
 
28
def fetchNegativeItems():
29
    global negative_items
30
    try:
31
        CatalogDataService.initialize('catalog', '192.168.190.114', False)
32
        itemIds = session.query(Item.id).filter(Item.category.in_(negative_categories)).all()
33
        negative_items = list(zip(*itemIds)[0])
34
    finally:
35
        session.close()
36
 
37
def main():
38
    all_users = get_mongo_connection().Catalog.PromoOffer.find({},{'user_id':1,'saholic_user_id':1})
39
    for user in all_users:
40
        dtrUserMap[user.get('saholic_user_id')] = UserOrderData(user.get('user_id'), 0, 0)
41
 
42
def fetchOrders():
43
    global dtrUserMap
44
    OrderDataService.initialize('transaction', '192.168.190.114', setup=False)
45
    try:
46
        for user_id in dtrUserMap.keys():
47
            delivered_orders  = session.query(Order.customer_id, LineItem.item_id, LineItem.total_price) \
48
            .join((LineItem,Order.id==LineItem.order_id)).filter(Order.customer_id==user_id).filter(Order.created_timestamp>startDate).filter(Order.created_timestamp<endDate).filter(Order.status==OrderStatus.DELIVERY_SUCCESS).filter(Order.source==OrderSource.WEBSITE).all()
49
            delivered_order_value = 0
50
            pending_order_value = 0
51
            for delivered_order in delivered_orders:
52
                if delivered_order[1] in negative_items:
53
                    continue
54
                delivered_order_value = delivered_order_value + delivered_order[2]
55
 
56
            pending_orders  = session.query(Order.customer_id, LineItem.item_id, LineItem.total_price) \
57
            .join((LineItem,Order.id==LineItem.order_id)).filter(Order.customer_id==user_id).filter(Order.created_timestamp>startDate).filter(Order.created_timestamp<endDate).filter(Order.status.in_(pending_order_status)).filter(Order.source==OrderSource.WEBSITE).all()
58
            for pending_order in pending_orders:
59
                if pending_order[1] in negative_items:
60
                    continue
61
                pending_order_value = pending_order_value + pending_order[2]
62
            user_order_obj = dtrUserMap.get(user_id)
63
            user_order_obj.delivered_order_value = delivered_order_value
64
            user_order_obj.pending_order_value = pending_order_value
65
    finally:
66
        session.close()
67
 
68
def commit():
69
    for k, v in dtrUserMap.iteritems():
70
        get_mongo_connection().Catalog.PromoOffer.update({'user_id':v.dtr_user_id},{"$set":{'pending_order_value':v.pending_order_value,'delivered_order_value':v.delivered_order_value,'last_run_timestamp': run_time}})
71
 
72
if __name__ == '__main__':
73
    main()
74
    fetchNegativeItems()
75
    fetchOrders()
76
    commit()
77