Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
13107 kshitij.so 1
import pymongo
2
from datetime import datetime, timedelta, time, date
3
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFCWarehouseLocation
13108 kshitij.so 4
from shop2020.utils.Utils import to_java_date, to_py_date
13107 kshitij.so 5
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFbaSalesSnapshot
6
 
7
con = None
8
 
9
def get_mongo_connection(host='localhost', port=27017):
10
    global con
11
    if con is None:
12
        print "Establishing connection %s host and port %d" %(host,port)
13
        try:
14
            con = pymongo.MongoClient(host, port)
15
        except Exception, e:
16
            print e
17
            return None
18
    return con
19
 
20
def to_amazonFbaSaleSnapshot(saleSnapshot):
21
    amazonFbaSaleSnapshot = AmazonFbaSalesSnapshot(dateOfSale=0, item_id=0, totalOrderCount=0, amazonFbaInventory=0, isOutOfStock=False, salePrice=0, minFbaPrice=0, minMfnPrice=0, totalSale=0, promotionSale=0, promotionOrderCount=0, ourPrice=0, minFbaPriceSnapshotDate=0, minMfnPriceSnapshotDate=0, ourPriceSnapshotDate=0, salePriceSnapshotDate=0, fcLocation=None)
22
    if saleSnapshot is None:
23
        return amazonFbaSaleSnapshot
24
    amazonFbaSaleSnapshot.__dict__.update(saleSnapshot)
25
    return amazonFbaSaleSnapshot
26
 
27
def getAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation):
28
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
29
    list = []
30
    list.append({"dateOfSale": to_java_date(datetime.combine((datetime.now()-timedelta(days=1)).date(), time(00,00,00)))})
31
    list.append({"item_id":item_id})
32
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
33
    r = collection.find({"$and":list}).sort([('dateOfSale',pymongo.DESCENDING)]).limit(1)
34
    if r.count() > 0:
35
        return to_amazonFbaSaleSnapshot(r.next())
36
    else:
37
        return to_amazonFbaSaleSnapshot(None)
13108 kshitij.so 38
 
39
def getInStockAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation,outOfStockTime):
40
    fbasalessnapshot = []
41
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
42
    toDate = datetime.now()-timedelta(days = 1)
43
    fromDate = outOfStockTime
44
    list = []
45
    list.append({"item_id":item_id})
46
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
47
    query = {}
48
    query['$gt'] = fromDate 
49
    query['$lte'] = to_java_date(datetime.combine(toDate.date(), time(00,00,00)))
50
    list.append({"dateOfSale":query})
51
    cursor = collection.find({"$and":list}).sort([('dateOfSale',pymongo.ASCENDING)])
52
    totalSale = 0
53
    noOfDays = 0
54
    for sale in cursor:
55
        totalSale = totalSale + sale.get('totalOrderCount')
56
        noOfDays = noOfDays + 1 
57
    return totalSale, noOfDays 
58
 
13107 kshitij.so 59
 
60
def getAmazonFbaSalesSnapshotForDays(interval):
61
    fbasalessnapshot = []
62
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
63
    toDate = datetime.now()-timedelta(days = 1)
64
    fromDate = toDate-timedelta(days = interval)
65
    query = {}
66
    query['$gte'] = to_java_date(datetime.combine(fromDate.date(), time(00,00,00)))
67
    query['$lte'] = to_java_date(datetime.combine(toDate.date(), time(00,00,00)))
68
    cursor = collection.find({"dateOfSale":query}).sort([('dateOfSale',pymongo.ASCENDING)])
69
    for sale in cursor:
70
        fbasalessnapshot.append(to_amazonFbaSaleSnapshot(sale))
71
    return fbasalessnapshot
72
 
13108 kshitij.so 73
 
74
 
75
def getLastOutOfStock(item_id,fcLocation):
76
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
77
    list = []
78
    list.append({"item_id":item_id})
79
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
80
    list.append({"isOutOfStock":True})
81
    r = collection.find({"$and":list}).sort([('dateOfSale',pymongo.DESCENDING)]).limit(1)
82
    if r.count() > 0:
83
        lastOutOfStock = to_amazonFbaSaleSnapshot(r.next())
84
    else:
85
        lastOutOfStock = to_amazonFbaSaleSnapshot(None)
86
    if lastOutOfStock.dateOfSale == 0:
87
        return lastOutOfStock, 0, 0
88
    else:
89
        return lastOutOfStock, getInStockAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation,lastOutOfStock.dateOfSale)
90
 
91
 
13107 kshitij.so 92
def main():
13108 kshitij.so 93
    print getLastOutOfStock(174,2)
13107 kshitij.so 94
 
95
if __name__ == "__main__":
96
    main()