Rev 100 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 22-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 datetimeclass Category(Entity):'''This class represents the catalog.'''# id = Field(Integer)name = Field(String(30))isRoot = Field(Integer)addedOn = Field(DateTime)items = OneToMany('Item')children = OneToMany('Category', inverse='parent')parent = ManyToOne('Category', inverse='children')def __repr__(self):return "<id>%id </id>"%(self.id)class Vendor(Entity):id = Field(Integer)name = Field(String(30))warehouses = ManyToMany('Warehouse')def __repr__(self):return "<Vendor>%s</Vendor>" %(self.name)class Warehouse(Entity):id = Field(Integer)location = Field(String(20))vendors = ManyToMany('Vendor')inventory = OneToMany('CurrentInventorySnapshot')inventoryHistory = OneToMany('ItemInventoryHistory')def __repr__(self):return "<warehouse>%s</warehouse>" %(self.location)class Item(Entity):id = Field(Integer)name = Field(String(20))currentInventory = OneToMany('CurrentInventorySnapshot')inventoryHistory = OneToMany('ItemInventoryHistory')category = ManyToOne("Category")def __repr__(self):return "<Item>%s</item>" % (self.name)def get_total_inventory(self):if self.currentInventory:i = 0for entry in self.currentInventory:i += entry.availabilityreturn ielse:return 0;def get_all_warehouses(self):warehouses = []for warehouse in self.currentInventory.warehouse:warehouses.append(warehouse)return warehousesclass CurrentInventorySnapshot(Entity):id = Field(Integer)checkedOn = Field(DateTime, default=datetime.datetime)availibility = Field(Integer)item = ManyToOne("Item")warehouse = ManyToOne("Warehouse")def __repr__(self):return "<current inventory><availability> %s </availability><time>%s</time><item>%s</item><warehouse>%s</warehouse></current inventory>" %(self.availibility, self.checkedOn, self.item, self.warehouse)#===============================================================================# This is just a placeholder, will be using naveen's code for this.#===============================================================================class ItemAttribs(Entity):id = Field(Integer)def __repr__(self):passclass ItemInventoryHistory(Entity):id = Field(Integer)timestamp = Field(DateTime, default=datetime.datetime.now())availibility = Field(Integer)item = ManyToOne("Item")warehouse = ManyToOne("Warehouse")def __repr__(self):passdef initialize():metadata.bind = "sqlite:///movies.sqlite"metadata.bind.echo = Truesetup_all(True)