Subversion Repositories SmartDukaan

Rev

Rev 132 | Rev 304 | 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):
132 ashish 21
 
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)
132 ashish 28
    shopping_cart_id = Field(Integer)
104 ashish 29
    payments = OneToMany("Payment")
30
    shipments = OneToMany("Shipment")
31
    lineitems = OneToMany("LineItem")
32
    trails = OneToMany("TransactionTrail")
194 ashish 33
 
104 ashish 34
 
35
 
36
class Payment(Entity):
115 ashish 37
    #using_options(auto_primarykey=False)
132 ashish 38
    id = Field(Integer, primary_key=True, autoincrement=True)
39
    payment_id = Field(Integer)
104 ashish 40
    merchant_tx_id = Field(String(30))
41
    bank_tx_id = Field(String(30))
132 ashish 42
    mode = Field(String(30))
104 ashish 43
    amount = Field(Float)
44
    status = Field(Integer)
45
    status_message = Field(String(100))
46
    start_time = Field(DateTime)
47
    finish_time = Field(DateTime)
48
    transaction = ManyToOne("Transaction")
49
 
50
    def __repr__(self):
51
        return "Payment: id %d"%(self.id)
52
 
53
 
54
class Shipment(Entity):
115 ashish 55
    #using_options(auto_primarykey=False)
132 ashish 56
    id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 57
    address = Field(String(100))
58
    tracking_id = Field(String(100))
59
    status = Field(Integer)
60
    status_message = Field(String(100))
61
    shipment_time = Field(DateTime)
62
    delivery_time = Field(DateTime)
63
    declared_value = Field(Float)
64
    insurance_value = Field(Float)
65
    weight = Field(Float)
66
    airway_bill_no = Field(String(30))
67
    provider = Field(String(30))
68
    transaction = ManyToOne("Transaction")
69
    lineitems = OneToMany("LineItem")
70
 
71
    def __repr__(self):
72
        return "Shipment: id %d"%(self.id)
73
 
74
 
75
class LineItem(Entity):
115 ashish 76
    #using_options(auto_primarykey=False)
132 ashish 77
    id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 78
    added_on = Field(DateTime)
79
    item_id = Field(Integer)
80
    additional_info = OneToMany("AdditionalInfo")
81
    transaction = ManyToOne("Transaction")
115 ashish 82
    billing = ManyToOne("Billing")
104 ashish 83
    shipment = ManyToOne("Shipment")
132 ashish 84
    item_info = OneToOne("ItemInfo")
104 ashish 85
    def __repr__(self):
86
        return "id %d item_id %d"%(self.id, self.item_id)
87
 
132 ashish 88
class ItemInfo(Entity):
89
    id = Field(Integer, primary_key=True, autoincrement=True)
90
    price = Field(Float)
91
    weight = Field(Float)
92
    line_item = ManyToOne("LineItem")
104 ashish 93
 
94
class AdditionalInfo(Entity):
115 ashish 95
    #using_options(auto_primarykey=False)
132 ashish 96
    id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 97
    key = Field(String(30))
98
    value = Field(String(100))
99
    line_item = ManyToOne("LineItem")
100
 
101
    def __repr__(self):
102
        return "Additonal info id %d key %s value %s" %(self.id, self.key, self.value)
103
 
104
 
105
class Billing(Entity):
115 ashish 106
    #using_options(auto_primarykey=False)
132 ashish 107
    id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 108
    bill_number = Field(String(30))
109
    created_on = Field(DateTime)
110
    generated_by = Field(String(30))
115 ashish 111
    line_item = OneToMany("LineItem")
104 ashish 112
 
132 ashish 113
 
104 ashish 114
    def __repr__(self):
115
        return "Billing: billing id %d billno %s " % (self.id, self.bill_number)
116
 
117
class TransactionTrail(Entity):
115 ashish 118
    #using_options(auto_primarykey=False)
132 ashish 119
    id = Field(Integer, primary_key=True, autoincrement=True)
104 ashish 120
    field_changed = Field(String(30))
121
    old_value = Field(String(30))
122
    new_value = Field(String(30))
123
    description = Field(String(100))
124
    timestamp = Field(DateTime)
125
    transaction = ManyToOne("Transaction")
126
 
127
 
128
def initialize():
194 ashish 129
    metadata.bind = "sqlite:///Transactionsnew-elite.sqlite"
104 ashish 130
    metadata.bind.echo = True
131
    setup_all(True)
132
 
133
 
134
if __name__=="__main__":
135
    initialize()