Subversion Repositories SmartDukaan

Rev

Rev 100 | Rev 115 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 100 Rev 103
Line 9... Line 9...
9
from sqlalchemy.types import Integer
9
from sqlalchemy.types import Integer
10
from elixir.relationships import OneToMany, ManyToOne
10
from elixir.relationships import OneToMany, ManyToOne
11
import datetime
11
import datetime
12
 
12
 
13
 
13
 
-
 
14
 
14
class Category(Entity):
15
class Category(Entity):
15
    '''
16
    '''
16
    This class represents the catalog. 
17
    This class represents the catalog. 
17
    '''
18
    '''
18
    id = Field(Integer, primary_key=True)
19
    id = Field(Integer, primary_key=True)
19
    name = Field(String(30))
20
    name = Field(String(30))
20
    isRoot = Field(Integer)
21
    isRoot = Field(Integer)
21
    addedOn = Field(DateTime)
22
    addedOn = Field(DateTime)
-
 
23
    status = Field(Integer)
22
    items = OneToMany('Item')
24
    items = ManyToMany('Item')
23
    children = OneToMany('Category', inverse='parent')
25
    children = OneToMany('Category', inverse='parent')
24
    parent = ManyToOne('Category', inverse='children')
26
    parent = ManyToOne('Category', inverse='children')
-
 
27
 
25
   
28
   
26
    def __repr__(self):
29
    def __repr__(self):
27
        return "<id>%id </id>"%(self.id)
30
        return "<id>%id </id>"%(self.id)
28
 
31
 
29
 
32
 
30
class Vendor(Entity):
33
class Vendor(Entity):
31
    id = Field(Integer, primary_key=True)
34
    id = Field(Integer, primary_key=True)
32
    name = Field(String(30))
35
    name = Field(String(30))
-
 
36
    status = Field(Integer)
-
 
37
    addedOn = Field(datetime)
33
    warehouses = ManyToMany('Warehouse')
38
    warehouses = ManyToMany('Warehouse')
34
    def __repr__(self):
39
    def __repr__(self):
35
        return "<Vendor>%s</Vendor>" %(self.name)
40
        return "<Vendor>%s</Vendor>" %(self.name)
36
 
41
 
37
    
42
    
38
class Warehouse(Entity):
43
class Warehouse(Entity):
39
    id = Field(Integer, primary_key=True)
44
    id = Field(Integer, primary_key=True)
40
    location = Field(String(20))
45
    location = Field(String(20))
-
 
46
    status = Field(Integer)
-
 
47
    addedOn = Field(datetime)
41
    vendors = ManyToMany('Vendor')
48
    vendors = ManyToMany('Vendor')
42
    inventory = OneToMany('CurrentInventorySnapshot')
49
    inventory = OneToMany('CurrentInventorySnapshot')
43
    inventoryHistory = OneToMany('ItemInventoryHistory')
50
    inventoryHistory = OneToMany('ItemInventoryHistory')
44
    
51
    
45
    def __repr__(self):
52
    def __repr__(self):
Line 47... Line 54...
47
 
54
 
48
 
55
 
49
class Item(Entity):
56
class Item(Entity):
50
    id = Field(Integer, primary_key=True)
57
    id = Field(Integer, primary_key=True)
51
    name = Field(String(20))
58
    name = Field(String(20))
-
 
59
    price = Field(Float)
-
 
60
    addedOn = Field(datetime)
-
 
61
    status = Field(Integer)
-
 
62
    startDate = Field(datetime)
-
 
63
    retireDate = Field(datetime)
52
    currentInventory = OneToMany('CurrentInventorySnapshot')
64
    currentInventory = OneToMany('CurrentInventorySnapshot')
53
    inventoryHistory = OneToMany('ItemInventoryHistory')
65
    inventoryHistory = OneToMany('ItemInventoryHistory')
54
    category = ManyToOne("Category")
66
    category = ManyToMany("Category")
-
 
67
    iteminfo = OneToMany("ItemInfo")
-
 
68
    statusChangeLog = OneToMany("ItemChangeLog")
-
 
69
    
55
    def __repr__(self):
70
    def __repr__(self):
56
        return "<Item>%s</item>" % (self.name)
71
        return "<Item>%s</item>" % (self.name)
57
    
72
    
-
 
73
    @property
58
    def get_total_inventory(self):
74
    def get_total_inventory(self):
59
        if self.currentInventory:
75
        if self.currentInventory:
60
            i = 0
76
            i = 0
61
            for entry in self.currentInventory:
77
            for entry in self.currentInventory:
62
                i += entry.availability
78
                i += entry.availability
63
            return i
79
            return i
64
        
80
        
65
        else:
81
        else:
66
            return 0;
82
            return 0;
67
        
83
    
-
 
84
    @property    
68
    def get_all_warehouses(self):
85
    def get_all_warehouses(self):
69
        warehouses = []
86
        warehouses = []
70
        for warehouse in self.currentInventory.warehouse:
87
        for warehouse in self.currentInventory.warehouse:
71
            warehouses.append(warehouse)
88
            warehouses.append(warehouse)
72
        return warehouses
89
        return warehouses
73
    
90
    
-
 
91
class ItemInfo(Entity):
-
 
92
    key = Field(String(30))
-
 
93
    value = Field(String(100))
-
 
94
    item = ManyToOne("Item")
-
 
95
    
-
 
96
    def __repr__(self):
-
 
97
        return "<ItemInfo><key>%s</key><value>%s</value></ItemInfo>" % (self.key, self.value)
74
 
98
 
75
class CurrentInventorySnapshot(Entity):
99
class CurrentInventorySnapshot(Entity):
76
    id = Field(Integer, primary_key=True)
100
    id = Field(Integer, primary_key=True)
77
    checkedOn = Field(DateTime, default=datetime.datetime)
101
    checkedOn = Field(DateTime, default=datetime.datetime)
78
    availibility = Field(Integer)
102
    availibility = Field(Integer)
Line 84... Line 108...
84
 
108
 
85
#===============================================================================
109
#===============================================================================
86
# This is just a placeholder, will be using naveen's code for this.
110
# This is just a placeholder, will be using naveen's code for this.
87
#===============================================================================
111
#===============================================================================
88
    
112
    
89
class ItemAttribs(Entity):
-
 
90
    id = Field(Integer, primary_key=True)
-
 
91
    def __repr__(self):
-
 
92
        pass
-
 
93
    
-
 
94
 
-
 
95
class ItemInventoryHistory(Entity):
113
class ItemInventoryHistory(Entity):
96
    id = Field(Integer, primary_key=True)    
114
    id = Field(Integer, primary_key=True)    
97
    timestamp = Field(DateTime, default=datetime.datetime.now())
115
    timestamp = Field(DateTime, default=datetime.datetime.now())
98
    availibility = Field(Integer)
116
    availibility = Field(Integer)
99
    item = ManyToOne("Item")
117
    item = ManyToOne("Item")
100
    warehouse = ManyToOne("Warehouse")
118
    warehouse = ManyToOne("Warehouse")
101
    
119
    
102
    def __repr__(self):
120
    def __repr__(self):
103
        pass
121
        pass
-
 
122
 
-
 
123
class ItemChangeLog(Entity):
-
 
124
    id = Field(Integer, primary_key=True)
-
 
125
    old_status = Field(Integer)
-
 
126
    new_status = Field(Integer)
-
 
127
    timestamp = Field(datetime)
-
 
128
    item = ManyToOne("Item")
104
    
129
    
-
 
130
    def __repr__(self):
-
 
131
        return "<Log><id>%d</id><item>%d</item><old_status>%d</old_status><new_status>%d</new_status></Log>" %(self.id,self.item.id, self.old_status, self.new_status)    
-
 
132
 
105
 
133
 
106
def initialize():
134
def initialize():
107
    metadata.bind = "sqlite:///catalog.sqlite"
135
    metadata.bind = "sqlite:///catalog.sqlite"
108
    metadata.bind.echo = True
136
    metadata.bind.echo = True
109
    
-
 
110
    setup_all(True)
137
    setup_all(True)