Subversion Repositories SmartDukaan

Rev

Rev 6903 | 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.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, LineItem,  TransactionStatus, Order


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 getTransaction(self, transaction_id):
        return self.client.getTransaction(transaction_id)
        
    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.statusDescription = "INIT phase"
    transaction.transactionStatus = TransactionStatus.INIT
    
    #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 = Order()
    
    order.lineitems = []
    line_item = LineItem()
    line_item.addedOn = to_java_date(datetime.datetime.now())
    line_item.unit_weight = 10
    line_item.total_weight = 10
    line_item.unit_price = 8
    line_item.total_price = 8
    order.lineitems.append(line_item)
    order.total_amount = 100.0
    
    transaction.orders = []
    transaction.orders.append(order)
    
    transaction_client.createTransaction(transaction)
    #transaction_client.createAlert(2, 1, "Not yet shipped")