Rev 103 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on 23-Mar-2010@author: ashish'''from elixir import *from shop2020.model.v1.catalog.impl import DataServicefrom shop2020.model.v1.catalog.impl.DataService import Category, Item, Vendor,\Warehouse, ItemInventoryHistory, CurrentInventorySnapshotfrom shop2020.thriftpy.model.v1.catalog.ttypes import Category as TCategory,\CatalogServiceExceptionfrom shop2020.thriftpy.model.v1.catalog.ttypes import Item as TItemfrom shop2020.thriftpy.model.v1.catalog.ttypes import Vendor as TVendorfrom shop2020.thriftpy.model.v1.catalog.ttypes import Warehouse as TWarehouseimport datetimedef initialize():DataService.initialize()def is_category_present(id_key):category = Category.get_by(id=id_key)if category:return Truereturn Falsedef get_category(id_key):category = Category.get_by(id=id_key)return categorydef get_all_categories():return Category.query.all()def get_all_items_for_category(category_id):category = Category.get_by(id=category_id)if not category:raise CatalogServiceException(108, "Some unforeseen error while obtaining")return category.itemsdef get_Item(item_id):return Item.get_by(id=item_id)def get_Vendor(vendor_id):return Vendor.get_by(id=vendor_id)def get_Warehouse(warehouse_id):return Warehouse.get_by(id=warehouse_id)def get_all_warehouses_for_item(item_id):item = get_Item(item_id)if not item:raise CatalogServiceException(108, "Some unforeseen error while obtaining item")return item.get_all_warehousesdef add_warehouse(warehouse):warehouse = TWarehouse()ds_warehouse = Warehouse()ds_warehouse.id = warehouse.idds_warehouse.location = warehouse.locationsession.commit()def add_vendor(vendor):ds_vendor = Vendor()if not vendor:raise CatalogServiceException(108, "Bad vendor in request")ds_vendor.id = vendor.idds_vendor.name = vendor.namesession.commit()def add_category(category):try:ds_category = Category()ds_category.id = category.idds_category.name = category.nameds_category.addedOn = datetime.datetime.now()ds_category.isRoot = category.isTopLevelif category.parent_id:ds_category.parent= Category.get_by(id=category.parent_id)if category.childCategories:for child in category.childCategories:ds_category.children.append(get_category(child))#save the category nowsession.commit()return Trueexcept:return Falsedef add_item_to_category(id, item):category = get_category(id)if not category:raise CatalogServiceException(101, "no such category exists")if not item:raise CatalogServiceException(104, "bad item")try:ds_item = Item()ds_item.category = categoryds_item.id = item.idds_item.name = item.namesession.commit()return Trueexcept:return Falsedef update_inventory(item_id, warehouse_id, quantity, timestamp):item = get_Item(item_id)warehouse = get_Warehouse(warehouse_id)time = datetime.datetime.fromtimestamp(timestamp)if not item:raise CatalogServiceException(106, "Item not found, how did you get this?")if not warehouse:raise CatalogServiceException(107, "Warehouse? Where?")try:item_inventory_history = ItemInventoryHistory()item_inventory_history.warehouse = warehouseitem_inventory_history.item = itemitem_inventory_history.timestamp = timeitem_inventory_history.availability = quantitycurrent_inventory_snapshot = CurrentInventorySnapshot.get_by(item=item, warehouse=warehouse)current_inventory_snapshot.availibility = quantitycurrent_inventory_snapshot.checkedOn = timesession.commit()except:raise CatalogServiceException(108, "Some unforeseen error while updating inventory")def get_item_inventoy(item_id):inventory = Item.get_by(id=item_id).currentInventoryif not inventory:raise CatalogServiceException(108, "Some unforeseen error while updating inventory")return inventorydef get_item_attributes(item_id):pass