Subversion Repositories SmartDukaan

Rev

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

#!/usr/bin/python

import optparse
import sys

from thrift.Thrift import TException
from shop2020.thriftpy.model.v1.user.ttypes import ShoppingCartException,\
    PromotionException
from shop2020.clients.UserClient import UserClient
from shop2020.clients.PromotionClient import PromotionClient

if __name__ == '__main__' and __package__ is None:
    import os
    sys.path.insert(0, os.getcwd())

from shop2020.model.v1.order.impl import DataAccessors, DataService
from shop2020.thriftpy.model.v1.order.ttypes import TransactionStatus

def reset_cart(transaction, userServiceClient):
    items = {}
    for order in transaction.orders:
        for line_item in order.lineitems:
            item_id = line_item.item_id
            quantity = items[item_id]
            if quantity is None:
                quantity = line_item.quantity
            else:
                quantity = quantity + line_item.quantity
            items[item_id] = quantity

    print items
    
    try:
        userServiceClient.getClient().resetCart(transaction.shopping_cart_id, items);
    except ShoppingCartException:
        print "Error while resetting the cart in the cart database"
        print sys.exc_info()
    except TException:
        print "Error while updating information in payment database."
        print sys.exc_info()
    except:
        print "Unexpected exception"
        print sys.exc_info()

def track_coupon_usage(transaction, userServiceClient):
    try:
        cart = userServiceClient.getClient().getCart(transaction.shopping_cart_id)
        coupon_code = cart.coupon_code
        
        if coupon_code is not None and coupon_code != '':
            PromotionClient().get_client().trackCouponUsage(coupon_code, transaction.id, transaction.customer_id);
    except ShoppingCartException:
        print "Error occurred in reading CardId for transaction"
        print sys.exc_info()
    except PromotionException:
        print "Promotion Exception: "
        print sys.exc_info()
    except TException:
        print "Transport from Promotion Service failed:"
        print sys.exc_info()
    except Exception:
        print "Unexpected exception:"
        print sys.exc_info()

def main():
    parser = optparse.OptionParser()
    parser.add_option("-t", "--txn-id", dest="txn_id",
                   type="int",
                   help="mark the transaction TXN_ID and all its orders as successful",
                   metavar="TXN_ID")
    (options, args) = parser.parse_args()
    if len(args) != 0:
        parser.error("You've supplied extra arguments. Are you sure you want to run this program?")
    if options.txn_id == None:
        parser.error("No Transaction id supplied")
    DataService.initialize(echoOn=True)
    transaction = DataAccessors.get_transaction(options.txn_id)
    DataAccessors.change_transaction_status(options.txn_id, TransactionStatus.IN_PROCESS, "Payment received for the order")
    DataAccessors.enqueue_transaction_info_email(options.txn_id)
    
    user_service_client = UserClient()
    reset_cart(transaction, user_service_client)
    track_coupon_usage(transaction, user_service_client)

if __name__ == '__main__':
    main()