Rev 132 | Rev 304 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 29-Mar-2010@author: ashish'''from elixir import *from elixir.entity import Entityfrom elixir.fields import Fieldfrom sqlalchemy.types import Integerfrom elixir.relationships import OneToMany, ManyToOneimport datetime#===============================================================================# Different entities in the model#===============================================================================class Transaction(Entity):id = Field(Integer, primary_key=True, autoincrement=True)createdOn = Field(DateTime)expected_delivery_time = Field(DateTime)status = Field(Integer)status_message = Field(String(100))customer_id = Field(Integer)shopping_cart_id = Field(Integer)payments = OneToMany("Payment")shipments = OneToMany("Shipment")lineitems = OneToMany("LineItem")trails = OneToMany("TransactionTrail")class Payment(Entity):#using_options(auto_primarykey=False)id = Field(Integer, primary_key=True, autoincrement=True)payment_id = Field(Integer)merchant_tx_id = Field(String(30))bank_tx_id = Field(String(30))mode = Field(String(30))amount = Field(Float)status = Field(Integer)status_message = Field(String(100))start_time = Field(DateTime)finish_time = Field(DateTime)transaction = ManyToOne("Transaction")def __repr__(self):return "Payment: id %d"%(self.id)class Shipment(Entity):#using_options(auto_primarykey=False)id = Field(Integer, primary_key=True, autoincrement=True)address = Field(String(100))tracking_id = Field(String(100))status = Field(Integer)status_message = Field(String(100))shipment_time = Field(DateTime)delivery_time = Field(DateTime)declared_value = Field(Float)insurance_value = Field(Float)weight = Field(Float)airway_bill_no = Field(String(30))provider = Field(String(30))transaction = ManyToOne("Transaction")lineitems = OneToMany("LineItem")def __repr__(self):return "Shipment: id %d"%(self.id)class LineItem(Entity):#using_options(auto_primarykey=False)id = Field(Integer, primary_key=True, autoincrement=True)added_on = Field(DateTime)item_id = Field(Integer)additional_info = OneToMany("AdditionalInfo")transaction = ManyToOne("Transaction")billing = ManyToOne("Billing")shipment = ManyToOne("Shipment")item_info = OneToOne("ItemInfo")def __repr__(self):return "id %d item_id %d"%(self.id, self.item_id)class ItemInfo(Entity):id = Field(Integer, primary_key=True, autoincrement=True)price = Field(Float)weight = Field(Float)line_item = ManyToOne("LineItem")class AdditionalInfo(Entity):#using_options(auto_primarykey=False)id = Field(Integer, primary_key=True, autoincrement=True)key = Field(String(30))value = Field(String(100))line_item = ManyToOne("LineItem")def __repr__(self):return "Additonal info id %d key %s value %s" %(self.id, self.key, self.value)class Billing(Entity):#using_options(auto_primarykey=False)id = Field(Integer, primary_key=True, autoincrement=True)bill_number = Field(String(30))created_on = Field(DateTime)generated_by = Field(String(30))line_item = OneToMany("LineItem")def __repr__(self):return "Billing: billing id %d billno %s " % (self.id, self.bill_number)class TransactionTrail(Entity):#using_options(auto_primarykey=False)id = Field(Integer, primary_key=True, autoincrement=True)field_changed = Field(String(30))old_value = Field(String(30))new_value = Field(String(30))description = Field(String(100))timestamp = Field(DateTime)transaction = ManyToOne("Transaction")def initialize():metadata.bind = "sqlite:///Transactionsnew-elite.sqlite"metadata.bind.echo = Truesetup_all(True)if __name__=="__main__":initialize()