Subversion Repositories SmartDukaan

Rev

Rev 19365 | Rev 19371 | Go to most recent revision | Details | Compare with Previous | 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
19370 kshitij.so 9
import shutil
19365 kshitij.so 10
 
11
dtrUserMap = {}
12
 
13
negative_items = []
14
negative_categories = [10013,10017]
15
 
16
pending_order_status = [2,3,4,5,6,7,8,13,9,10,16,17,81,80, 40]
17
 
18
startDate = datetime.datetime.strptime('01-04-2016 00:00:00', '%d-%m-%Y %H:%M:%S')
19
endDate = datetime.datetime.strptime('01-05-2016 00:00:00', '%d-%m-%Y %H:%M:%S')
20
run_time = to_java_date(datetime.datetime.now())
21
 
19370 kshitij.so 22
cache_path = "/var/www/dtrdashboard/app/tmp/cache/target/"
19365 kshitij.so 23
 
19370 kshitij.so 24
 
19365 kshitij.so 25
class UserOrderData:
26
    def __init__(self, dtr_user_id, delivered_order_value, pending_order_value):
27
        self.dtr_user_id = dtr_user_id
28
        self.delivered_order_value = delivered_order_value
29
        self.pending_order_value = pending_order_value
30
 
31
def fetchNegativeItems():
32
    global negative_items
33
    try:
34
        CatalogDataService.initialize('catalog', '192.168.190.114', False)
35
        itemIds = session.query(Item.id).filter(Item.category.in_(negative_categories)).all()
36
        negative_items = list(zip(*itemIds)[0])
37
    finally:
38
        session.close()
39
 
40
def main():
41
    all_users = get_mongo_connection().Catalog.PromoOffer.find({},{'user_id':1,'saholic_user_id':1})
42
    for user in all_users:
43
        dtrUserMap[user.get('saholic_user_id')] = UserOrderData(user.get('user_id'), 0, 0)
44
 
45
def fetchOrders():
46
    global dtrUserMap
47
    OrderDataService.initialize('transaction', '192.168.190.114', setup=False)
48
    try:
49
        for user_id in dtrUserMap.keys():
50
            delivered_orders  = session.query(Order.customer_id, LineItem.item_id, LineItem.total_price) \
51
            .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()
52
            delivered_order_value = 0
53
            pending_order_value = 0
54
            for delivered_order in delivered_orders:
55
                if delivered_order[1] in negative_items:
56
                    continue
57
                delivered_order_value = delivered_order_value + delivered_order[2]
58
 
59
            pending_orders  = session.query(Order.customer_id, LineItem.item_id, LineItem.total_price) \
60
            .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()
61
            for pending_order in pending_orders:
62
                if pending_order[1] in negative_items:
63
                    continue
64
                pending_order_value = pending_order_value + pending_order[2]
65
            user_order_obj = dtrUserMap.get(user_id)
66
            user_order_obj.delivered_order_value = delivered_order_value
67
            user_order_obj.pending_order_value = pending_order_value
68
    finally:
69
        session.close()
70
 
71
def commit():
72
    for k, v in dtrUserMap.iteritems():
73
        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}})
74
 
19370 kshitij.so 75
def removeCache():
76
    shutil.rmtree(cache_path)
77
 
19365 kshitij.so 78
if __name__ == '__main__':
79
    main()
80
    fetchNegativeItems()
81
    fetchOrders()
82
    commit()
19370 kshitij.so 83
    removeCache()
19365 kshitij.so 84