Subversion Repositories SmartDukaan

Rev

Rev 2277 | Rev 4016 | 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
2247 chandransh 7
import traceback
2185 rajveer 8
 
2133 chandransh 9
if __name__ == '__main__' and __package__ is None:
10
    import os
11
    sys.path.insert(0, os.getcwd())
12
 
13
from shop2020.model.v1.order.impl import DataAccessors, DataService
14
from shop2020.thriftpy.model.v1.order.ttypes import TransactionStatus
2186 rajveer 15
from shop2020.thriftpy.model.v1.user.ttypes import ShoppingCartException,\
16
    PromotionException
17
from shop2020.clients.UserClient import UserClient
18
from shop2020.clients.PromotionClient import PromotionClient
2133 chandransh 19
 
2185 rajveer 20
def reset_cart(transaction, userServiceClient):
21
    items = {}
22
    for order in transaction.orders:
23
        for line_item in order.lineitems:
24
            item_id = line_item.item_id
2240 chandransh 25
            if items.has_key(item_id):
26
                quantity = items[item_id] + line_item.quantity
27
            else:
2185 rajveer 28
                quantity = line_item.quantity
29
            items[item_id] = quantity
30
 
31
    print items
32
 
33
    try:
2240 chandransh 34
        userServiceClient.get_client().resetCart(transaction.shopping_cart_id, items);
2245 chandransh 35
    except ShoppingCartException, TException:
2185 rajveer 36
        print "Error while resetting the cart in the cart database"
2247 chandransh 37
        traceback.print_exc()
2185 rajveer 38
    except:
39
        print "Unexpected exception"
2247 chandransh 40
        traceback.print_exc()
2185 rajveer 41
 
42
def track_coupon_usage(transaction, userServiceClient):
43
    try:
2277 chandransh 44
        coupon_code = transaction.coupon_code
2185 rajveer 45
 
46
        if coupon_code is not None and coupon_code != '':
47
            PromotionClient().get_client().trackCouponUsage(coupon_code, transaction.id, transaction.customer_id);
48
    except ShoppingCartException:
49
        print "Error occurred in reading CardId for transaction"
2247 chandransh 50
        traceback.print_exc()
2185 rajveer 51
    except PromotionException:
52
        print "Promotion Exception: "
2247 chandransh 53
        traceback.print_exc()
2185 rajveer 54
    except TException:
55
        print "Transport from Promotion Service failed:"
2247 chandransh 56
        traceback.print_exc()
2185 rajveer 57
    except Exception:
58
        print "Unexpected exception:"
2247 chandransh 59
        traceback.print_exc()
2185 rajveer 60
 
2133 chandransh 61
def main():
62
    parser = optparse.OptionParser()
63
    parser.add_option("-t", "--txn-id", dest="txn_id",
64
                   type="int",
65
                   help="mark the transaction TXN_ID and all its orders as successful",
66
                   metavar="TXN_ID")
3243 chandransh 67
    parser.add_option("-c", "--cod", dest="cod",
68
                      action="store_true", default=False,
69
                      help="process the transaction as a COD transaction")
2133 chandransh 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)
3243 chandransh 77
    if(options.cod):
78
        DataAccessors.change_transaction_status(options.txn_id, TransactionStatus.COD_IN_PROCESS, "COD payment awaited")
79
    else:
80
        DataAccessors.change_transaction_status(options.txn_id, TransactionStatus.AUTHORIZED, "Payment received for the order")
81
 
2185 rajveer 82
    DataAccessors.enqueue_transaction_info_email(options.txn_id)
83
 
84
    user_service_client = UserClient()
85
    reset_cart(transaction, user_service_client)
86
    track_coupon_usage(transaction, user_service_client)
2133 chandransh 87
 
88
if __name__ == '__main__':
89
    main()