Subversion Repositories SmartDukaan

Rev

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