Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
2133 chandransh 1
#!/usr/bin/python
2
 
3
import optparse
4
import sys
5
 
2185 rajveer 6
from thrift.Thrift import TException
7
 
2133 chandransh 8
if __name__ == '__main__' and __package__ is None:
9
    import os
10
    sys.path.insert(0, os.getcwd())
11
 
12
from shop2020.model.v1.order.impl import DataAccessors, DataService
13
from shop2020.thriftpy.model.v1.order.ttypes import TransactionStatus
2186 rajveer 14
from shop2020.thriftpy.model.v1.user.ttypes import ShoppingCartException,\
15
    PromotionException
16
from shop2020.clients.UserClient import UserClient
17
from shop2020.clients.PromotionClient import PromotionClient
2133 chandransh 18
 
2185 rajveer 19
def reset_cart(transaction, userServiceClient):
20
    items = {}
21
    for order in transaction.orders:
22
        for line_item in order.lineitems:
23
            item_id = line_item.item_id
2240 chandransh 24
            if items.has_key(item_id):
25
                quantity = items[item_id] + line_item.quantity
26
            else:
2185 rajveer 27
                quantity = line_item.quantity
28
            items[item_id] = quantity
29
 
30
    print items
31
 
32
    try:
2240 chandransh 33
        userServiceClient.get_client().resetCart(transaction.shopping_cart_id, items);
2185 rajveer 34
    except ShoppingCartException:
35
        print "Error while resetting the cart in the cart database"
36
        print sys.exc_info()
37
    except TException:
38
        print "Error while updating information in payment database."
39
        print sys.exc_info()
40
    except:
41
        print "Unexpected exception"
42
        print sys.exc_info()
43
 
44
def track_coupon_usage(transaction, userServiceClient):
45
    try:
2240 chandransh 46
        cart = userServiceClient.get_client().getCart(transaction.shopping_cart_id)
2185 rajveer 47
        coupon_code = cart.coupon_code
48
 
49
        if coupon_code is not None and coupon_code != '':
50
            PromotionClient().get_client().trackCouponUsage(coupon_code, transaction.id, transaction.customer_id);
51
    except ShoppingCartException:
52
        print "Error occurred in reading CardId for transaction"
53
        print sys.exc_info()
54
    except PromotionException:
55
        print "Promotion Exception: "
56
        print sys.exc_info()
57
    except TException:
58
        print "Transport from Promotion Service failed:"
59
        print sys.exc_info()
60
    except Exception:
61
        print "Unexpected exception:"
62
        print sys.exc_info()
63
 
2133 chandransh 64
def main():
65
    parser = optparse.OptionParser()
66
    parser.add_option("-t", "--txn-id", dest="txn_id",
67
                   type="int",
68
                   help="mark the transaction TXN_ID and all its orders as successful",
69
                   metavar="TXN_ID")
70
    (options, args) = parser.parse_args()
71
    if len(args) != 0:
72
        parser.error("You've supplied extra arguments. Are you sure you want to run this program?")
73
    if options.txn_id == None:
74
        parser.error("No Transaction id supplied")
75
    DataService.initialize(echoOn=True)
2185 rajveer 76
    transaction = DataAccessors.get_transaction(options.txn_id)
2133 chandransh 77
    DataAccessors.change_transaction_status(options.txn_id, TransactionStatus.IN_PROCESS, "Payment received for the order")
2185 rajveer 78
    DataAccessors.enqueue_transaction_info_email(options.txn_id)
79
 
80
    user_service_client = UserClient()
81
    reset_cart(transaction, user_service_client)
82
    track_coupon_usage(transaction, user_service_client)
2133 chandransh 83
 
84
if __name__ == '__main__':
85
    main()