Subversion Repositories SmartDukaan

Rev

Rev 103 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
94 ashish 1
'''
2
Created on 23-Mar-2010
3
 
4
@author: ashish
5
'''
6
from elixir import *
7
from shop2020.model.v1.catalog.impl import DataService
8
from shop2020.model.v1.catalog.impl.DataService import Category, Item, Vendor,\
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot
10
from shop2020.thriftpy.model.v1.catalog.ttypes import Category as TCategory,\
11
    CatalogServiceException
12
from shop2020.thriftpy.model.v1.catalog.ttypes import Item as TItem
13
from shop2020.thriftpy.model.v1.catalog.ttypes import Vendor as TVendor
14
from shop2020.thriftpy.model.v1.catalog.ttypes import Warehouse as TWarehouse
15
import datetime
16
 
17
 
18
def initialize():
19
    DataService.initialize()
20
 
21
def is_category_present(id_key):
22
    category = Category.get_by(id=id_key)
23
    if category:
24
        return True    
25
    return False
26
 
27
def get_category(id_key):
28
    category = Category.get_by(id=id_key)
29
    return category
30
 
31
def get_all_categories():
32
    return Category.query.all()
33
 
34
def get_all_items_for_category(category_id):
35
    category = Category.get_by(id=category_id)
36
    if not category:
37
        raise CatalogServiceException(108, "Some unforeseen error while obtaining")
38
    return category.items
39
 
40
def get_Item(item_id):
41
    return Item.get_by(id=item_id)
42
 
43
def get_Vendor(vendor_id):
44
    return Vendor.get_by(id=vendor_id)
45
 
46
def get_Warehouse(warehouse_id):
47
    return Warehouse.get_by(id=warehouse_id)
48
 
49
def get_all_warehouses_for_item(item_id):
50
    item = get_Item(item_id)
51
    if not item:
52
        raise CatalogServiceException(108, "Some unforeseen error while obtaining item")
53
    return item.get_all_warehouses
54
 
55
def add_warehouse(warehouse):
56
    warehouse = TWarehouse()
57
    ds_warehouse = Warehouse()
58
    ds_warehouse.id = warehouse.id
59
    ds_warehouse.location = warehouse.location
60
    session.commit()
61
 
62
def add_vendor(vendor):
63
    ds_vendor = Vendor()
64
    if not vendor:
65
        raise CatalogServiceException(108, "Bad vendor in request")
66
    ds_vendor.id = vendor.id
67
    ds_vendor.name = vendor.name
68
    session.commit()
69
 
70
def add_category(category):
71
    try: 
72
        ds_category = Category()
73
 
74
        ds_category.id = category.id
75
        ds_category.name = category.name
76
        ds_category.addedOn = datetime.datetime.now()
77
        ds_category.isRoot = category.isTopLevel
78
        if category.parent_id:
79
            ds_category.parent= Category.get_by(id=category.parent_id)
80
 
81
        if category.childCategories:
82
            for child in category.childCategories:
83
                ds_category.children.append(get_category(child))
84
        #save the category now
85
        session.commit()
86
        return True
87
    except:
88
        return False
89
 
90
def add_item_to_category(id, item):
91
    category = get_category(id)
92
    if not category:
93
        raise CatalogServiceException(101, "no such category exists")
94
    if not item:
95
        raise CatalogServiceException(104, "bad item")
96
    try:
97
        ds_item = Item()
98
        ds_item.category = category
99
        ds_item.id = item.id
100
        ds_item.name = item.name
101
        session.commit()
102
        return True
103
    except:
104
        return False
105
 
106
def update_inventory(item_id, warehouse_id, quantity, timestamp):
107
    item = get_Item(item_id)
108
    warehouse = get_Warehouse(warehouse_id) 
109
    time = datetime.datetime.fromtimestamp(timestamp)
110
 
111
    if not item:
112
        raise CatalogServiceException(106, "Item not found, how did you get this?")
113
    if not warehouse:
114
        raise CatalogServiceException(107, "Warehouse? Where?")
115
    try:
116
        item_inventory_history = ItemInventoryHistory()
117
        item_inventory_history.warehouse = warehouse
118
        item_inventory_history.item = item
119
        item_inventory_history.timestamp = time
120
        item_inventory_history.availability = quantity
121
 
122
        current_inventory_snapshot = CurrentInventorySnapshot.get_by(item=item, warehouse=warehouse)
123
        current_inventory_snapshot.availibility = quantity
124
        current_inventory_snapshot.checkedOn = time
125
        session.commit()
126
    except:
127
        raise CatalogServiceException(108, "Some unforeseen error while updating inventory")
128
 
129
def get_item_inventoy(item_id):
130
 
131
    inventory = Item.get_by(id=item_id).currentInventory
132
    if not inventory:
133
        raise CatalogServiceException(108, "Some unforeseen error while updating inventory")
134
    return inventory
135
 
136
def get_item_attributes(item_id):
137
    pass
138