Subversion Repositories SmartDukaan

Rev

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

Rev 626 Rev 635
Line 5... Line 5...
5
'''
5
'''
6
from elixir import *
6
from elixir import *
7
from shop2020.model.v1.catalog.impl import DataService
7
from shop2020.model.v1.catalog.impl import DataService
8
from shop2020.model.v1.catalog.impl.DataService import Item, \
8
from shop2020.model.v1.catalog.impl.DataService import Item, \
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot, ItemInfo,\
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot, ItemInfo,\
10
    ItemChangeLog, BestSellers
10
    ItemChangeLog, BestSellers, Category
11
from shop2020.thriftpy.model.v1.catalog.ttypes import \
11
from shop2020.thriftpy.model.v1.catalog.ttypes import \
12
    InventoryServiceException, status
12
    InventoryServiceException, status
13
from shop2020.model.v1.catalog.impl.Convertors import to_t_item
13
from shop2020.model.v1.catalog.impl.Convertors import to_t_item
14
import datetime
14
import datetime
15
from shop2020.utils.Utils import log_entry, to_py_date
15
from shop2020.utils.Utils import log_entry, to_py_date
Line 31... Line 31...
31
        #return all items
31
        #return all items
32
        return get_all_items(False)
32
        return get_all_items(False)
33
    else:
33
    else:
34
        return Item.query.filter_by(status=status).all()
34
        return Item.query.filter_by(status=status).all()
35
 
35
 
36
def get_Item(item_id):
36
def get_item(item_id):
37
    return Item.get_by(id=item_id)
37
    return Item.get_by(id=item_id)
38
 
38
 
39
def get_item_by_catalog_id(catalog_id):
39
def get_items_by_catalog_id(catalog_id):
40
    query = Item.query.filter_by(catalog_item_id=catalog_id)
40
    query = Item.query.filter_by(catalog_item_id=catalog_id)
41
    try:
41
    try:
42
        return query.one()
42
        items = query.all()
-
 
43
        return get_thrift_item_list(items)
43
    except:
44
    except:
44
        raise InventoryServiceException(109, "Item not found")
45
        raise InventoryServiceException(109, "Item not found")
45
        
46
        
46
def get_item_by_vendor_id(vendor_id):
47
def get_item_by_vendor_id(vendor_id):
47
    query = Item.query.filter_by(vendor_item_id=vendor_id)
48
    query = Item.query.filter_by(vendor_item_id=vendor_id)
Line 51... Line 52...
51
    except:
52
    except:
52
        raise InventoryServiceException(109, "Item not found")
53
        raise InventoryServiceException(109, "Item not found")
53
        
54
        
54
def is_active(item_id):
55
def is_active(item_id):
55
    try:
56
    try:
56
        item = get_item_by_catalog_id(item_id)
57
        item = get_item(item_id)
57
        return item.status == status.ACTIVE
58
        return item.status == status.ACTIVE
58
    except InventoryServiceException:
59
    except InventoryServiceException:
59
        return False
60
        return False
60
        
61
        
61
def get_Warehouse(warehouse_id):
62
def get_Warehouse(warehouse_id):
Line 66... Line 67...
66
        return Warehouse.query.all()
67
        return Warehouse.query.all()
67
    else:
68
    else:
68
        return Warehouse.query.filter_by(status=status)
69
        return Warehouse.query.filter_by(status=status)
69
 
70
 
70
def get_all_warehouses_for_item(item_id):
71
def get_all_warehouses_for_item(item_id):
71
    item = get_Item(item_id)
72
    item = get_item(item_id)
72
    if not item:
73
    if not item:
73
        raise InventoryServiceException(108, "Some unforeseen error while obtaining item")
74
        raise InventoryServiceException(108, "Some unforeseen error while obtaining item")
74
    return item.get_all_warehouses
75
    return item.get_all_warehouses
75
 
76
 
76
def get_all_items_for_warehouse(warehouse_id):
77
def get_all_items_for_warehouse(warehouse_id):
Line 104... Line 105...
104
        raise InventoryServiceException(108, "Bad item in request")
105
        raise InventoryServiceException(108, "Bad item in request")
105
    
106
    
106
    if not item.id:
107
    if not item.id:
107
        raise InventoryServiceException(101, "Missing id for update")
108
        raise InventoryServiceException(101, "Missing id for update")
108
    
109
    
109
    ds_item = get_Item(item.id)
110
    ds_item = get_item(item.id)
110
    
111
    
111
    if not ds_item:
112
    if not ds_item:
112
        raise InventoryServiceException(101, "Item missing in our database")
113
        raise InventoryServiceException(101, "Item missing in our database")
113
    
114
    
114
    if item.manufacturerName:
115
    if item.manufacturerName:
Line 164... Line 165...
164
    return ds_item.id
165
    return ds_item.id
165
 
166
 
166
def add_item(item):
167
def add_item(item):
167
    if not item:
168
    if not item:
168
        raise InventoryServiceException(108, "Bad item in request")
169
        raise InventoryServiceException(108, "Bad item in request")
169
    if get_Item(item.id):
170
    if get_item(item.id):
170
        raise InventoryServiceException(101, "Item already exists")
171
        raise InventoryServiceException(101, "Item already exists")
171
 
172
 
172
    ds_item = Item()
173
    ds_item = Item()
173
    if item.id:
174
    if item.id:
174
        ds_item.id = item.id
175
        ds_item.id = item.id
Line 269... Line 270...
269
    inventory = Item.get_by(id=item_id).currentInventory
270
    inventory = Item.get_by(id=item_id).currentInventory
270
    if not inventory:
271
    if not inventory:
271
        raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
272
        raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
272
    return inventory
273
    return inventory
273
 
274
 
274
def get_item_inventory_by_catalog_id(item_id):
275
def get_item_inventory_by_item_id(item_id):
275
    inventory = Item.get_by(catalog_item_id=item_id).currentInventory
276
    inventory = Item.get_by(id=item_id).currentInventory
276
    if not inventory:
277
    if not inventory:
277
        raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
278
        raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
278
    return inventory
279
    return inventory
279
 
280
 
280
    
281
    
Line 288... Line 289...
288
    session.commit()
289
    session.commit()
289
    
290
    
290
def retire_item(item_id):
291
def retire_item(item_id):
291
    if not item_id:
292
    if not item_id:
292
        raise InventoryServiceException(101, "bad item id")
293
        raise InventoryServiceException(101, "bad item id")
293
    item = get_Item(item_id)
294
    item = get_item(item_id)
294
    if not item:
295
    if not item:
295
        raise InventoryServiceException(108, "item id not present")
296
        raise InventoryServiceException(108, "item id not present")
296
    item.status = status.PHASED_OUT
297
    item.status = status.PHASED_OUT
297
    item.retireDate = datetime.datetime.now()
298
    item.retireDate = datetime.datetime.now()
298
    session.commit()
299
    session.commit()
299
    
300
    
300
#need to implement threads based solution here
301
#need to implement threads based solution here
301
def start_item_on(item_id, timestamp):
302
def start_item_on(item_id, timestamp):
302
    if not item_id:
303
    if not item_id:
303
        raise InventoryServiceException(101, "bad item id")
304
        raise InventoryServiceException(101, "bad item id")
304
    item = get_Item(item_id)
305
    item = get_item(item_id)
305
    if not item:
306
    if not item:
306
        raise InventoryServiceException(108, "item id not present")
307
        raise InventoryServiceException(108, "item id not present")
307
    
308
    
308
    item.status = status.ACTIVE
309
    item.status = status.ACTIVE
309
    item.startDate = datetime.datetime.fromtimestamp(to_py_date(timestamp))
310
    item.startDate = datetime.datetime.fromtimestamp(to_py_date(timestamp))
Line 312... Line 313...
312
    
313
    
313
#need to implement threads here
314
#need to implement threads here
314
def retire_item_on(item_id, timestamp):
315
def retire_item_on(item_id, timestamp):
315
    if not item_id:
316
    if not item_id:
316
        raise InventoryServiceException(101, "bad item id")
317
        raise InventoryServiceException(101, "bad item id")
317
    item = get_Item(item_id)
318
    item = get_item(item_id)
318
    if not item:
319
    if not item:
319
        raise InventoryServiceException(108, "item id not present")
320
        raise InventoryServiceException(108, "item id not present")
320
    
321
    
321
    item.status = status.PHASED_OUT
322
    item.status = status.PHASED_OUT
322
    item.retireDate = datetime.datetime.fromtimestamp(to_py_date(timestamp))
323
    item.retireDate = datetime.datetime.fromtimestamp(to_py_date(timestamp))
Line 332... Line 333...
332
    session.commit()
333
    session.commit()
333
    
334
    
334
def change_item_status(item_id, new_status):
335
def change_item_status(item_id, new_status):
335
    if not item_id:
336
    if not item_id:
336
        raise InventoryServiceException(101, "bad item id")
337
        raise InventoryServiceException(101, "bad item id")
337
    item = get_Item(item_id)
338
    item = get_item(item_id)
338
    if not item:
339
    if not item:
339
        raise InventoryServiceException(108, "item id not present")
340
        raise InventoryServiceException(108, "item id not present")
340
    
341
    
341
    item.status = new_status
342
    item.status = new_status
342
    add_status_change_log(item, new_status)
343
    add_status_change_log(item, new_status)
Line 349... Line 350...
349
        raise InventoryServiceException(101, "bad item_id")
350
        raise InventoryServiceException(101, "bad item_id")
350
    
351
    
351
    warehouse = get_Warehouse(warehouse_id)
352
    warehouse = get_Warehouse(warehouse_id)
352
    if not warehouse:
353
    if not warehouse:
353
        raise InventoryServiceException(108, "warehouse does not exist")
354
        raise InventoryServiceException(108, "warehouse does not exist")
354
    item = get_item_by_catalog_id(item_id)
355
    item = get_item(item_id)
355
 
356
 
356
    if not item:
357
    if not item:
357
            raise InventoryServiceException(108, "item does not exist")
358
            raise InventoryServiceException(108, "item does not exist")
358
        
359
        
359
    query = CurrentInventorySnapshot.query.filter_by(warehouse_id = warehouse_id)
360
    query = CurrentInventorySnapshot.query.filter_by(warehouse_id = warehouse_id)
Line 371... Line 372...
371
        return current_inventory_snapshot.availibility
372
        return current_inventory_snapshot.availibility
372
    """
373
    """
373
def get_warehouses_for_item(item_id):
374
def get_warehouses_for_item(item_id):
374
    if not item_id:
375
    if not item_id:
375
        raise InventoryServiceException(101, "bad item_id")
376
        raise InventoryServiceException(101, "bad item_id")
376
    item = get_Item(item_id)
377
    item = get_item(item_id)
377
    
378
    
378
    if not item:
379
    if not item:
379
        raise InventoryServiceException(101, "bad item")
380
        raise InventoryServiceException(101, "bad item")
380
    
381
    
381
    warehouses = item.currentInventory.warehouse
382
    warehouses = item.currentInventory.warehouse
Line 433... Line 434...
433
def get_thrift_item_list(items):
434
def get_thrift_item_list(items):
434
    ret_items = []
435
    ret_items = []
435
    for item in items:
436
    for item in items:
436
        if item:
437
        if item:
437
            ret_items.append(to_t_item(item))    
438
            ret_items.append(to_t_item(item))    
438
    return ret_items
-
 
439
439
    return ret_items
-
 
440
 
-
 
441
def put_category_object(object):
-
 
442
    category = Category.get_by(id=1)
-
 
443
    if category is None:
-
 
444
        category = Category()
-
 
445
    category.object = object    
-
 
446
    session.commit()
-
 
447
    return True
-
 
448
 
-
 
449
def get_category_object():
-
 
450
    return Category.get_by(id=1).object
-
 
451
440
452