Rev 2133 | Rev 2186 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/pythonimport optparseimport sysfrom thrift.Thrift import TExceptionfrom shop2020.thriftpy.model.v1.user.ttypes import ShoppingCartException,\PromotionExceptionfrom shop2020.clients.UserClient import UserClientfrom shop2020.clients.PromotionClient import PromotionClientif __name__ == '__main__' and __package__ is None:import ossys.path.insert(0, os.getcwd())from shop2020.model.v1.order.impl import DataAccessors, DataServicefrom shop2020.thriftpy.model.v1.order.ttypes import TransactionStatusdef reset_cart(transaction, userServiceClient):items = {}for order in transaction.orders:for line_item in order.lineitems:item_id = line_item.item_idquantity = items[item_id]if quantity is None:quantity = line_item.quantityelse:quantity = quantity + line_item.quantityitems[item_id] = quantityprint itemstry: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_codeif 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()