Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
122 ashish 1
'''
2
Created on 27-Apr-2010
3
 
4
@author: ashish
5
'''
6
from shop2020.model.v1.catalog.impl import DataService
7
from shop2020.utils.Utils import log_entry
8
from shop2020.model.v1.catalog.impl.DataAcessors import add_item, add_warehouse,\
9
    update_inventory, retire_warehouse, retire_item, change_item_status,\
635 rajveer 10
    get_item, get_all_items, get_all_items_by_status, get_item_inventoy,\
643 chandransh 11
    get_item_availability_for_warehouse, get_item_availability_for_location, get_all_warehouses_by_status,\
122 ashish 12
    get_Warehouse, get_all_warehouses_for_item, get_all_items_for_warehouse,\
766 rajveer 13
    update_item, start_item_on, close_session, \
635 rajveer 14
    retire_item_on, get_item_inventory_by_item_id, get_items_by_catalog_id,\
1308 chandransh 15
    get_best_deals, get_best_deals_catalog_ids, get_best_deals_count, get_best_sellers, get_latest_arrivals, get_latest_arrivals_catalog_ids, get_latest_arrivals_count,\
635 rajveer 16
    is_active, get_best_sellers_catalog_ids, get_best_sellers_count, put_category_object,\
871 chandransh 17
    get_category_object, mark_item_as_content_complete,\
1155 rajveer 18
    reserve_item_in_warehouse, reduce_reservation_count, generate_new_entity_id
122 ashish 19
from shop2020.model.v1.catalog.impl.Convertors import to_t_item,\
20
    to_t_item_inventory, to_t_warehouse
21
from shop2020.thriftpy.model.v1.catalog.ttypes import status,\
22
    InventoryServiceException
599 chandransh 23
from shop2020.config.client.ConfigClient import ConfigClient
122 ashish 24
 
25
 
26
class InventoryServiceHandler:
27
    '''
28
    classdocs
29
    '''
599 chandransh 30
 
1249 chandransh 31
    def __init__(self, dbname='catalog'):
122 ashish 32
        '''
33
        Constructor
34
        '''
1249 chandransh 35
        DataService.initialize(dbname)
599 chandransh 36
        try:
621 chandransh 37
            config_client = ConfigClient()
38
            self.latest_arrivals_limit = int(config_client.get_property("LATEST_ARRIVALS_LIMIT"));
39
            self.best_sellers_limit = int(config_client.get_property("BEST_SELLERS_LIMIT"))
599 chandransh 40
        except:
621 chandransh 41
            self.latest_arrivals_limit = 50
42
            self.best_sellers_limit = 50
122 ashish 43
 
44
    #DONE
45
    def addItem(self, item):
46
        """
47
        Availability and inventory attributes
48
 
49
        Parameters:
50
         - item
51
        """
52
        log_entry(self, "addItem called")
785 rajveer 53
        try:
54
            return add_item(item)
55
        finally:
56
            close_session()
122 ashish 57
 
58
    def addWarehouse(self, warehouse):
59
        """
60
        Parameters:
61
         - warehouse
62
        """
63
        log_entry(self, "addWarehouse called")
785 rajveer 64
        try:
65
            return add_warehouse(warehouse)
66
        finally:
67
            close_session()
122 ashish 68
 
483 rajveer 69
 
70
    def updateInventory(self, warehouse_id, timestamp, availability):
122 ashish 71
        """
72
        Parameters:
73
         - warehouse_id
74
         - timestamp
483 rajveer 75
         - availability
122 ashish 76
        """
77
        log_entry(self, "update Inventory called")
785 rajveer 78
        try:
79
            return update_inventory(warehouse_id, timestamp, availability)
80
        finally:
81
            close_session()
82
 
83
 
635 rajveer 84
    def isActive(self, item_id):
563 chandransh 85
        """
86
        Parameters:
635 rajveer 87
         - item_id
563 chandransh 88
        """
785 rajveer 89
        try:
90
            return is_active(item_id)
91
        finally:
92
            close_session()
122 ashish 93
 
94
    def retireWarehouse(self, warehouse_id):
95
        """
96
        Parameters:
97
         - warehouse_id
98
        """
99
        log_entry(self, "retire warehouse called")
785 rajveer 100
        try:
101
            return retire_warehouse(warehouse_id)
102
        finally:
103
            close_session()
104
 
122 ashish 105
 
106
    def retireItem(self, item_id):
107
        """
108
        Parameters:
109
        - item_id
110
        """
111
        log_entry(self, "retire item called")
785 rajveer 112
        try:
113
            return retire_item(item_id)
114
        finally:
115
            close_session()
122 ashish 116
 
117
    def startItemOn(self, item_id, timestamp):
118
        """
119
        Parameters:
120
         - item_id
121
         - timestamp
122
        """
785 rajveer 123
        try:
124
            start_item_on(item_id, timestamp)
125
        finally:
126
            close_session()
122 ashish 127
 
128
    def retireItemOn(self, item_id, timestamp):
129
        """
130
        Parameters:
131
         - item_id
132
         - timestamp
133
        """
785 rajveer 134
        try:
135
            retire_item_on(item_id, timestamp)
136
        finally:
137
            close_session()
122 ashish 138
 
139
    def changeItemStatus(self, item_id, timestamp, newstatus):
140
        """
141
        Parameters:
142
         - item_id
143
         - timestamp
144
         - newstatus
145
        """
146
        log_entry(self, "change item status called")
785 rajveer 147
        try:
148
            return change_item_status(item_id, newstatus)
149
        finally:
150
            close_session()
122 ashish 151
 
785 rajveer 152
 
122 ashish 153
    def getItem(self, item_id):
154
        """
155
        Parameters:
156
         - item_id
157
        """
158
        log_entry(self, "item requested")
785 rajveer 159
        try:
160
            return to_t_item( get_item(item_id))
161
        finally:
162
            close_session()
379 ashish 163
 
635 rajveer 164
    def getItemsByCatalogId(self, catalog_item_id):
379 ashish 165
        """
166
        Parameters:
167
        - catalog_item_id
168
        """
386 ashish 169
        log_entry(self, "item requested")
766 rajveer 170
        try:
171
            return get_items_by_catalog_id(catalog_item_id)
172
        finally:
173
            close_session()
122 ashish 174
 
483 rajveer 175
 
122 ashish 176
    def getAllItems(self, isActive):
177
        """
178
        Parameters:
179
         - isActive
180
        """
181
        log_entry(self, "all items requested")
766 rajveer 182
        try:
183
            items = get_all_items(isActive)
184
            ret_items = []
185
            for item in items:
186
                if item:
187
                    ret_items.append(to_t_item(item))
188
            return ret_items
189
        finally:
190
            close_session()
191
 
122 ashish 192
    def getAllItemsByStatus(self, itemStatus):
193
        """
194
        Parameters:
195
         - itemStatus
196
        """
197
        log_entry(self, "all items requested")
766 rajveer 198
        try:
199
            items = get_all_items_by_status(itemStatus)
200
            ret_items = []
201
            for item in items:
202
                if item:
203
                    ret_items.append(to_t_item(item))
204
            return ret_items
205
        finally:
206
            close_session()
122 ashish 207
 
208
    def getItemInventory(self, item_id):
209
        """
210
        Parameters:
211
        - item_id
212
        """
213
        log_entry(self, "item inventory requested")
766 rajveer 214
        try:
215
            inventory = get_item_inventoy(item_id)
216
            return to_t_item_inventory(inventory, item_id)
217
        finally:
218
            close_session()
122 ashish 219
 
635 rajveer 220
    def getItemInventoryByItemId(self, item_id):
221
        """
222
        Parameters:
223
         - item_id
224
        """
225
        log_entry(self, "item inventory requested")
766 rajveer 226
        try:
227
            inventory = get_item_inventory_by_item_id(item_id)
228
            return to_t_item_inventory(inventory, item_id)
229
        finally:
230
            close_session()
635 rajveer 231
 
232
    '''
379 ashish 233
    def getItemInventoryByCatalogId(self, item_id):
234
        """
235
        Parameters:
236
         - item_id
237
        """
383 ashish 238
        log_entry(self, "item inventory requested")
239
        inventory = get_item_inventory_by_catalog_id(item_id)
240
        return to_t_item_inventory(inventory, item_id)
635 rajveer 241
    '''
242
 
379 ashish 243
 
643 chandransh 244
    def getItemAvailabilityAtLocation(self, warehouse_loc, item_id):
245
        """
246
        Returns the id of the warehouse with the largest inventory of the item and the inventory size. The size of list will always be 2.
247
 
248
        Parameters:
249
         - warehouse_loc
250
         - item_id
251
        """
766 rajveer 252
        try:
253
            return get_item_availability_for_location(warehouse_loc, item_id)
254
        finally:
255
            close_session()
256
 
122 ashish 257
    def getItemAvailibilityAtWarehouse(self, warehouse_id, item_id):
258
        """
259
        Parameters:
260
         - warehouse_id
261
         - item_id
262
        """
263
        log_entry(self, "item availability at warehouse requested")
766 rajveer 264
        try:
265
            return get_item_availability_for_warehouse(warehouse_id, item_id)
266
        finally:
267
            close_session()
268
 
723 chandransh 269
    def markItemAsContentComplete(self, entityId):
270
        """
271
        Parameters:
272
         - entityId
273
        """
766 rajveer 274
        try:
275
            return mark_item_as_content_complete(entityId)
276
        finally:
277
            close_session()
278
 
122 ashish 279
    def getItemInventoryHistory(self, id, item_id, warehouse_id, from_date, to_date):
280
        """
281
        Parameters:
282
         - id
283
         - item_id
284
         - warehouse_id
285
         - from_date
286
         - to_date
287
        """
288
        pass
289
 
290
    def getAllWarehouses(self, isActive):
291
        """
292
        Parameters:
293
        - isActive
294
        """
766 rajveer 295
        try:
296
            if isActive:
297
                warehouses = get_all_warehouses_by_status(status.ACTIVE)
298
            else:
299
                warehouses = get_all_warehouses_by_status(None)
300
 
301
            ret_warehouses = []
302
 
303
            for warehouse in warehouses:
304
                ret_warehouses.append(to_t_warehouse(warehouse))
305
            return ret_warehouses
306
        finally:
307
            close_session()
308
 
122 ashish 309
    def getWarehouse(self, warehouse_id):
310
        """
311
        Parameters:
312
         - warehouse_id
313
        """
314
        log_entry(self, "get warehouse call")
766 rajveer 315
        try:
316
            warehouse = get_Warehouse(warehouse_id)
317
            if warehouse:
318
                return to_t_warehouse(warehouse)
319
            else:
320
                raise InventoryServiceException(101, "no such warehouse")
321
        finally:
322
            close_session()
323
 
122 ashish 324
    def getAllWarehousesForItem(self, item_id):
325
        """
326
        Parameters:
327
         - item_id
328
        """
329
        log_entry(self, "getting all warehouses for item")
766 rajveer 330
        try:
331
            all_warehouses = get_all_warehouses_for_item(item_id)
332
            t_warehouses = []
333
            for warehouse in all_warehouses:
334
                t_warehouses.append(to_t_warehouse(warehouse))
335
            return t_warehouses
336
        finally:
337
            close_session()
338
 
122 ashish 339
    def getAllItemsForWarehouse(self, warehouse_id):
340
        """
341
        Parameters:
342
         - warehouse_id
343
        """
344
        log_entry(self, "getting all items for warehouse")
766 rajveer 345
        try:
346
            all_items = get_all_items_for_warehouse(warehouse_id)
347
            t_items = []
348
            for item in all_items:
349
                t_items.append(to_t_item(item))
350
            return t_items
351
        finally:
352
            close_session()
871 chandransh 353
 
354
    def reserveItemInWarehouse(self, itemId, warehouseId, quantity):
355
        """
356
        Increases the reservation count for an item in a warehouse. Should always succeed normally.
357
 
358
        Parameters:
359
         - itemId
360
         - warehouseId
361
        """
362
        log_entry(self, "reserveItemInWarehouse called")
363
        try:
364
            return reserve_item_in_warehouse(itemId, warehouseId, quantity)
365
        finally:
366
            close_session()
367
 
368
    def reduceReservationCount(self, itemId, warehouseId, quantity):
369
        """
370
        Decreases the reservation count for an item in a warehouse. Should always succeed normally.
371
 
372
        Parameters:
373
         - itemId
374
         - warehouseId
375
        """
376
        log_entry(self, "reduceReservationCount called")
377
        try:
378
            return reduce_reservation_count(itemId, warehouseId, quantity)
379
        finally:
380
            close_session()
766 rajveer 381
 
122 ashish 382
    def updateItem(self, item):
383
        """
384
        Parameters:
385
         - item
386
        """
387
        log_entry(self, "addItem called")
766 rajveer 388
        try:
389
            return update_item(item)
390
        finally:
391
            close_session()
392
 
626 chandransh 393
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 394
        try:
395
            if total_items is None:
396
                total_items = self.best_sellers_limit
397
            stop_index = start_index + total_items
398
            return get_best_sellers(start_index, stop_index, category)
399
        finally:
400
            close_session()
401
 
626 chandransh 402
    def getBestSellersCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 403
        """
404
        Parameters:
405
         - beginIndex
406
         - totalItems
407
        """
766 rajveer 408
        try:
409
            if total_items is None:
410
                total_items = self.best_sellers_limit
411
            stop_index = start_index + total_items
412
            return get_best_sellers_catalog_ids(start_index, stop_index,category)
413
        finally:
414
            close_session()
415
 
591 chandransh 416
    def getBestSellersCount(self, ):
766 rajveer 417
        try:
418
            return get_best_sellers_count(None)
419
        finally:
420
            close_session()
421
 
591 chandransh 422
    def getBestDeals(self,):
766 rajveer 423
        try:
424
            return get_best_deals()
425
        finally:
426
            close_session()
427
 
626 chandransh 428
    def getBestDealsCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 429
        """
430
        Parameters:
431
         - beginIndex
432
         - totalItems
433
        """
766 rajveer 434
        try:
435
            stop_index = start_index + total_items
436
            return get_best_deals_catalog_ids(start_index, stop_index, category)
437
        finally:
438
            close_session()
439
 
591 chandransh 440
    def getBestDealsCount(self, ):
766 rajveer 441
        try:
442
            return get_best_deals_count()
443
        finally:
444
            close_session()
445
 
591 chandransh 446
    def getLatestArrivals(self,):
766 rajveer 447
        try:
448
            return get_latest_arrivals(self.latest_arrivals_limit)
449
        finally:
450
            close_session()
451
 
626 chandransh 452
    def getLatestArrivalsCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 453
        """
454
        Parameters:
455
         - beginIndex
456
         - totalItems
457
        """
766 rajveer 458
        try:
459
            if start_index > self.latest_arrivals_limit:
460
                return []
461
            stop_index = start_index + total_items
462
            if stop_index > self.latest_arrivals_limit:
463
                stop_index = self.latest_arrivals_limit
787 vikas 464
            return get_latest_arrivals_catalog_ids(start_index, stop_index, category)
766 rajveer 465
        finally:
466
            close_session()
467
 
591 chandransh 468
    def getLatestArrivalsCount(self, ):
766 rajveer 469
        try:
470
            return get_latest_arrivals_count(self.latest_arrivals_limit)
471
        finally:
472
            close_session()
591 chandransh 473
 
1155 rajveer 474
    def generateNewEntityID(self, ):
475
        try:
476
            return generate_new_entity_id()
477
        finally:
478
            close_session()
479
 
635 rajveer 480
    def putCategoryObject(self, object):
481
        """
482
        Parameters:
483
         - object
484
        """
766 rajveer 485
        try:
486
            return put_category_object(object)
487
        finally:
488
            close_session()
489
 
635 rajveer 490
    def getCategoryObject(self, ):
766 rajveer 491
        try:
492
            return get_category_object()
493
        finally:
494
            close_session()
495
 
496
    def closeSession(self, ):
497
        close_session()