Subversion Repositories SmartDukaan

Rev

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

'''
Created on 25-Mar-2010

@author: ashish
'''
import urlparse
from shop2020.thriftpy.config.ttypes import ConfigException
from thrift.transport import TSocket
from thrift.transport.TTransport import TFramedTransport
from thrift.protocol.TBinaryProtocol import TBinaryProtocol
from shop2020.thriftpy.config import Configuration
from shop2020.thriftpy.model.v1.catalog import InventoryService
from shop2020.thriftpy.model.v1.catalog.ttypes import Item, status, Warehouse
from shop2020.config.client.ConfigClient import ConfigClient
import datetime
from shop2020.utils.Utils import to_java_date
from shop2020.thriftpy.model.v1.order import TransactionService
from shop2020.thriftpy.model.v1.order.ttypes import Transaction, PaymentInfo,\
    Payment, PaymentStatus, OrderInfo, LineItem, Item, TransactionStatus,\
    ShipmentInfo, Shipment, ShipmentStatus


class TransactionClient:
    file_path = '/tmp/config.properties'
    
    def __init__(self):
        config_client = ConfigClient()
        self.host = config_client.get_property("transaction_service_server_host")
        self.port = config_client.get_property("transaction_service_server_port")
        
        self.start_client()
    
    
    def start_client(self):
        try:
            self.transport = TSocket.TSocket(self.host, self.port)
            self.transport = TFramedTransport(self.transport)
            self.protocol = TBinaryProtocol(self.transport)
            self.client = TransactionService.Client(self.protocol)
            self.transport.open()
        except:
            raise ConfigException(101, 'unable to load the client')
    
    def createTransaction(self, transaction):
        self.client.createTransaction(transaction)
        
    def createAlert(self, transaction_id, type, comment):
        self.client.setAlert(transaction_id, False, type, comment)
    
    def get_client(self):
        return self.client
    
if __name__ == '__main__':
    transaction_client = TransactionClient()
    
    transaction = Transaction()
    transaction.shoppingCartid = 2
    transaction.customer_id = 4
    transaction.createdOn = to_java_date(datetime.datetime.now())
    transaction.expectedDeliveryTime = to_java_date(datetime.datetime.now())
    payment_info = PaymentInfo()
    payment_info.payments
    payment_info.payments = {}
    payment = Payment()
    payment.merchant_tx_id = "123"
    payment.bank_tx_id = "ICIC0001"
    payment.mode = "CARD"
    payment.amount = 23.5
    payment.status = PaymentStatus.SUCCESS
    payment.submissionTimestamp = to_java_date(datetime.datetime.now())
    payment.completionTimestamp = to_java_date(datetime.datetime.now())
    payment.description = "Sample payment"
    payment_info.payments[to_java_date(datetime.datetime.now())] = payment
    transaction.paymentInfo = payment_info
    order_info = OrderInfo()
    order_info.lineitems = []
    line_item = LineItem()
    line_item.addedOn = to_java_date(datetime.datetime.now())
    line_item.item = Item()
    line_item.item.id = 23
    line_item.item.price = 2.40
    line_item.item.weight = 2.42
    order_info.lineitems.append(line_item)
    transaction.orderInfo = order_info
    transaction.statusDescription = "INIT phase"
    transaction.transactionStatus = TransactionStatus.INIT
    shipping_info = ShipmentInfo()
    shipping_info.shipments = []
    shipment = Shipment()
    shipment.weight = 2.42
    shipment.lineitems = order_info.lineitems;
    shipment.insurance = 2;
    shipment.value = 2.40
    shipment.status = ShipmentStatus.YET_TO_SHIP
    shipment.address = "Ashish\nD-15-15,Ardee City,\nSector-52\nGurgaon\nHaryana\n122003"
    shipping_info.shipments.append(shipment)
    transaction.shipmentInfo = shipping_info
    
    transaction_client.createTransaction(transaction)
    
    transaction_client.createAlert(2, 1, "Not yet shipped")
    
    transaction_client.get_client().setExtraInfo(2, 3, "E 71", "Black", "Nokia")