Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
13028 kshitij.so 1
#!/usr/bin/python
2
 
3
from elixir import *
4
import optparse
5
import sys
6
if __name__ == '__main__' and __package__ is None:
7
    import os
8
    sys.path.insert(0, os.getcwd())
9
from datetime import timedelta, datetime
10
from shop2020.thriftpy.model.v1.order.ttypes import RechargeOrderStatus
11
from shop2020.model.v1.order.impl.DataAccessors import update_recharge_order_status,\
12
    update_recharge_transaction_status
13
from shop2020.model.v1.order.impl import DataService, RechargeService
14
from shop2020.model.v1.order.impl.DataService import RechargeTransaction
15
from shop2020.model.v1.order.impl.model.RechargeOrder import RechargeOrder
16
 
13029 kshitij.so 17
def processRechargeTransactions(deltaTime):
13086 kshitij.so 18
    #Lets first get all recharge unknown orders irrespective of recharge mode in delta minutes time window
13028 kshitij.so 19
    try:
13029 kshitij.so 20
        timeFilter = datetime.now() -timedelta(minutes=deltaTime)
13086 kshitij.so 21
        unknownOrders = RechargeTransaction.query.filter(RechargeTransaction.status.in_([RechargeOrderStatus.RECHARGE_UNKNOWN, RechargeOrderStatus.INIT])).filter(RechargeTransaction.transactionTime >=timeFilter).all()
13028 kshitij.so 22
        for unknownOrder in unknownOrders:
23
            try:
24
                status, description = RechargeService.checkTransactionStatus('', str(unknownOrder.id))
25
                print status, description
26
                if status:
27
                    update_recharge_transaction_status(unknownOrder.id, RechargeOrderStatus.RECHARGE_SUCCESSFUL)
28
                else:
29
                    update_recharge_transaction_status(unknownOrder.id, RechargeOrderStatus.RECHARGE_FAILED)
30
            except:
31
                print "Still unknown"
32
    finally:
33
        session.close()
34
 
35
    try:
13427 kshitij.so 36
        timeFilter = datetime.now() -timedelta(minutes=2,seconds=30)
37
        inprocessOrders = RechargeTransaction.query.filter(RechargeTransaction.status == RechargeOrderStatus.RECHARGE_IN_PROCESS).filter(RechargeTransaction.responseTime < timeFilter).all()
13028 kshitij.so 38
        #Lets mark all recharges in process in above time window as payment successful
39
        for inprocessOrder in inprocessOrders:
40
            inprocessOrder.status = RechargeOrderStatus.RECHARGE_UNKNOWN
41
            inprocessOrder.responseTime = datetime.now()
42
        session.commit()
43
 
44
        for inprocessOrder in inprocessOrders:
45
            try:
46
                status, description = RechargeService.checkTransactionStatus('', str(inprocessOrder.id))
47
                print status, description
48
                if status:
49
                    update_recharge_transaction_status(inprocessOrder.id, RechargeOrderStatus.RECHARGE_SUCCESSFUL)
50
                else:
51
                    update_recharge_transaction_status(inprocessOrder.id, RechargeOrderStatus.RECHARGE_FAILED)
52
            except:
53
                print "Still unknown"
54
    finally:
55
        session.close()
56
 
13029 kshitij.so 57
def processRechargeOrders(deltaTime):
13086 kshitij.so 58
    #Lets first get all payment successful orders irrespective of recharge mode in delta minutes time window
13028 kshitij.so 59
    try:
15367 kshitij.so 60
        paymentSuccessfulOrders = RechargeOrder.query.filter(RechargeOrder.status == RechargeOrderStatus.PAYMENT_SUCCESSFUL).all()
13028 kshitij.so 61
        for paymentSuccessfulOrder in paymentSuccessfulOrders:
62
            try:
63
                status, description = RechargeService.checkTransactionStatus('', str(paymentSuccessfulOrder.id))
64
                print status, description
65
                if status:
66
                    update_recharge_order_status(paymentSuccessfulOrder.id, RechargeOrderStatus.RECHARGE_SUCCESSFUL)
67
                else:
68
                    update_recharge_order_status(paymentSuccessfulOrder.id, RechargeOrderStatus.RECHARGE_FAILED)
69
            except:
70
                print "Still unknown"
71
    finally:
72
        session.close()
73
 
74
    try:
75
        timeFilter = datetime.now() -timedelta(minutes=5)
76
        unknownOrders = RechargeOrder.query.filter(RechargeOrder.status == RechargeOrderStatus.RECHARGE_UNKNOWN).filter(RechargeOrder.responseTimestamp < timeFilter).all()
77
        #Lets mark all recharges unknown in above time window as payment successful
78
        for unknownOrder in unknownOrders:
79
            unknownOrder.status = RechargeOrderStatus.PAYMENT_SUCCESSFUL
80
            unknownOrder.responseTimestamp = datetime.now()
81
        session.commit()
82
 
83
        for unknownOrder in unknownOrders:
84
            try:
85
                status, description = RechargeService.checkTransactionStatus('', str(unknownOrder.id))
86
                print status, description
87
                if status:
88
                    update_recharge_order_status(unknownOrder.id, RechargeOrderStatus.RECHARGE_SUCCESSFUL)
89
                else:
90
                    update_recharge_order_status(unknownOrder.id, RechargeOrderStatus.RECHARGE_FAILED)
91
            except:
92
                print "Still unknown"
93
    finally:
94
        session.close()
95
 
96
def main():
97
    parser = optparse.OptionParser()
98
    parser.add_option("-H", "--host", dest="hostname",
99
                      default="localhost",
100
                      type="string", help="The HOST where the DB server is running",
101
                      metavar="HOST")
13029 kshitij.so 102
    parser.add_option("-T", "--time", dest="time",
103
                      default=60,
104
                      type="int", help="Time in minutes to filter recharge orders/transaction",
105
                      metavar="TIME")
13028 kshitij.so 106
    (options, args) = parser.parse_args()
107
    if len(args) != 0:
108
        parser.error("You've supplied extra arguments. Are you sure you want to run this program?")
109
    DataService.initialize(db_hostname=options.hostname, echoOn=True)
13029 kshitij.so 110
    processRechargeOrders(options.time)
111
    processRechargeTransactions(options.time)
13028 kshitij.so 112
 
113
if __name__=='__main__':
114
    main()