Subversion Repositories SmartDukaan

Rev

Rev 104 | Rev 132 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
104 ashish 1
'''
2
Created on 29-Mar-2010
3
 
4
@author: ashish
5
'''
6
 
7
from elixir import *
8
from elixir.entity import Entity
9
from elixir.fields import Field
10
from sqlalchemy.types import Integer
11
from elixir.relationships import OneToMany, ManyToOne
12
import datetime
13
 
14
 
15
 
16
#===============================================================================
17
# Different entities in the model
18
#===============================================================================
19
 
20
class Transaction(Entity):
115 ashish 21
    #using_options(auto_primarykey=False)
22
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 23
    createdOn = Field(DateTime)
24
    expected_delivery_time = Field(DateTime)
25
    status = Field(Integer)
26
    status_message = Field(String(100))
27
    customer_id = Field(Integer)
28
    payments = OneToMany("Payment")
29
    shipments = OneToMany("Shipment")
30
    lineitems = OneToMany("LineItem")
31
    trails = OneToMany("TransactionTrail")
32
    def __repr__(self):
33
        return "Transaction: id %d" % (self.id)
34
 
35
 
36
class Payment(Entity):
115 ashish 37
    #using_options(auto_primarykey=False)
38
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 39
    merchant_tx_id = Field(String(30))
40
    bank_tx_id = Field(String(30))
41
    amount = Field(Float)
42
    status = Field(Integer)
43
    status_message = Field(String(100))
44
    start_time = Field(DateTime)
45
    finish_time = Field(DateTime)
46
    transaction = ManyToOne("Transaction")
47
 
48
    def __repr__(self):
49
        return "Payment: id %d"%(self.id)
50
 
51
 
52
class Shipment(Entity):
115 ashish 53
    #using_options(auto_primarykey=False)
54
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 55
    address = Field(String(100))
56
    tracking_id = Field(String(100))
57
    status = Field(Integer)
58
    status_message = Field(String(100))
59
    shipment_time = Field(DateTime)
60
    delivery_time = Field(DateTime)
61
    declared_value = Field(Float)
62
    insurance_value = Field(Float)
63
    weight = Field(Float)
64
    airway_bill_no = Field(String(30))
65
    provider = Field(String(30))
66
    transaction = ManyToOne("Transaction")
67
    lineitems = OneToMany("LineItem")
68
 
69
    def __repr__(self):
70
        return "Shipment: id %d"%(self.id)
71
 
72
 
73
class LineItem(Entity):
115 ashish 74
    #using_options(auto_primarykey=False)
75
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 76
    added_on = Field(DateTime)
77
    item_id = Field(Integer)
78
    additional_info = OneToMany("AdditionalInfo")
79
    transaction = ManyToOne("Transaction")
115 ashish 80
    billing = ManyToOne("Billing")
104 ashish 81
    shipment = ManyToOne("Shipment")
82
 
83
    def __repr__(self):
84
        return "id %d item_id %d"%(self.id, self.item_id)
85
 
86
 
87
class AdditionalInfo(Entity):
115 ashish 88
    #using_options(auto_primarykey=False)
89
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 90
    key = Field(String(30))
91
    value = Field(String(100))
92
    line_item = ManyToOne("LineItem")
93
 
94
    def __repr__(self):
95
        return "Additonal info id %d key %s value %s" %(self.id, self.key, self.value)
96
 
97
 
98
class Billing(Entity):
115 ashish 99
    #using_options(auto_primarykey=False)
100
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 101
    bill_number = Field(String(30))
102
    created_on = Field(DateTime)
103
    generated_by = Field(String(30))
115 ashish 104
    line_item = OneToMany("LineItem")
105
    #lineitem = OneToOne("LineItem")
104 ashish 106
 
107
    def __repr__(self):
108
        return "Billing: billing id %d billno %s " % (self.id, self.bill_number)
109
 
110
class TransactionTrail(Entity):
115 ashish 111
    #using_options(auto_primarykey=False)
112
    #id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 113
    field_changed = Field(String(30))
114
    old_value = Field(String(30))
115
    new_value = Field(String(30))
116
    description = Field(String(100))
117
    timestamp = Field(DateTime)
118
    transaction = ManyToOne("Transaction")
119
 
120
 
121
def initialize():
122
    metadata.bind = "sqlite:///Order.sqlite"
123
    metadata.bind.echo = True
124
    setup_all(True)
125
 
126
 
127
if __name__=="__main__":
128
    initialize()