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,\
609 chandransh 15
    get_item_by_vendor_id, 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,\
18
    reserve_item_in_warehouse, reduce_reservation_count
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
 
122 ashish 31
    def __init__(self):
32
        '''
33
        Constructor
34
        '''
35
        DataService.initialize()
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
    def getItemByVendorId(self, vendor_item_id):
176
        """
177
        Parameters:
178
        - catalog_item_id
179
        """
180
        log_entry(self, "item requested")
766 rajveer 181
        try:
182
            return to_t_item( get_item_by_vendor_id(vendor_item_id))
183
        finally:
184
            close_session()
483 rajveer 185
 
186
 
122 ashish 187
    def getAllItems(self, isActive):
188
        """
189
        Parameters:
190
         - isActive
191
        """
192
        log_entry(self, "all items requested")
766 rajveer 193
        try:
194
            items = get_all_items(isActive)
195
            ret_items = []
196
            for item in items:
197
                if item:
198
                    ret_items.append(to_t_item(item))
199
            return ret_items
200
        finally:
201
            close_session()
202
 
122 ashish 203
    def getAllItemsByStatus(self, itemStatus):
204
        """
205
        Parameters:
206
         - itemStatus
207
        """
208
        log_entry(self, "all items requested")
766 rajveer 209
        try:
210
            items = get_all_items_by_status(itemStatus)
211
            ret_items = []
212
            for item in items:
213
                if item:
214
                    ret_items.append(to_t_item(item))
215
            return ret_items
216
        finally:
217
            close_session()
122 ashish 218
 
219
    def getItemInventory(self, item_id):
220
        """
221
        Parameters:
222
        - item_id
223
        """
224
        log_entry(self, "item inventory requested")
766 rajveer 225
        try:
226
            inventory = get_item_inventoy(item_id)
227
            return to_t_item_inventory(inventory, item_id)
228
        finally:
229
            close_session()
122 ashish 230
 
635 rajveer 231
    def getItemInventoryByItemId(self, item_id):
232
        """
233
        Parameters:
234
         - item_id
235
        """
236
        log_entry(self, "item inventory requested")
766 rajveer 237
        try:
238
            inventory = get_item_inventory_by_item_id(item_id)
239
            return to_t_item_inventory(inventory, item_id)
240
        finally:
241
            close_session()
635 rajveer 242
 
243
    '''
379 ashish 244
    def getItemInventoryByCatalogId(self, item_id):
245
        """
246
        Parameters:
247
         - item_id
248
        """
383 ashish 249
        log_entry(self, "item inventory requested")
250
        inventory = get_item_inventory_by_catalog_id(item_id)
251
        return to_t_item_inventory(inventory, item_id)
635 rajveer 252
    '''
253
 
379 ashish 254
 
643 chandransh 255
    def getItemAvailabilityAtLocation(self, warehouse_loc, item_id):
256
        """
257
        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.
258
 
259
        Parameters:
260
         - warehouse_loc
261
         - item_id
262
        """
766 rajveer 263
        try:
264
            return get_item_availability_for_location(warehouse_loc, item_id)
265
        finally:
266
            close_session()
267
 
122 ashish 268
    def getItemAvailibilityAtWarehouse(self, warehouse_id, item_id):
269
        """
270
        Parameters:
271
         - warehouse_id
272
         - item_id
273
        """
274
        log_entry(self, "item availability at warehouse requested")
766 rajveer 275
        try:
276
            return get_item_availability_for_warehouse(warehouse_id, item_id)
277
        finally:
278
            close_session()
279
 
723 chandransh 280
    def markItemAsContentComplete(self, entityId):
281
        """
282
        Parameters:
283
         - entityId
284
        """
766 rajveer 285
        try:
286
            return mark_item_as_content_complete(entityId)
287
        finally:
288
            close_session()
289
 
122 ashish 290
    def getItemInventoryHistory(self, id, item_id, warehouse_id, from_date, to_date):
291
        """
292
        Parameters:
293
         - id
294
         - item_id
295
         - warehouse_id
296
         - from_date
297
         - to_date
298
        """
299
        pass
300
 
301
    def getAllWarehouses(self, isActive):
302
        """
303
        Parameters:
304
        - isActive
305
        """
766 rajveer 306
        try:
307
            if isActive:
308
                warehouses = get_all_warehouses_by_status(status.ACTIVE)
309
            else:
310
                warehouses = get_all_warehouses_by_status(None)
311
 
312
            ret_warehouses = []
313
 
314
            for warehouse in warehouses:
315
                ret_warehouses.append(to_t_warehouse(warehouse))
316
            return ret_warehouses
317
        finally:
318
            close_session()
319
 
122 ashish 320
    def getWarehouse(self, warehouse_id):
321
        """
322
        Parameters:
323
         - warehouse_id
324
        """
325
        log_entry(self, "get warehouse call")
766 rajveer 326
        try:
327
            warehouse = get_Warehouse(warehouse_id)
328
            if warehouse:
329
                return to_t_warehouse(warehouse)
330
            else:
331
                raise InventoryServiceException(101, "no such warehouse")
332
        finally:
333
            close_session()
334
 
122 ashish 335
    def getAllWarehousesForItem(self, item_id):
336
        """
337
        Parameters:
338
         - item_id
339
        """
340
        log_entry(self, "getting all warehouses for item")
766 rajveer 341
        try:
342
            all_warehouses = get_all_warehouses_for_item(item_id)
343
            t_warehouses = []
344
            for warehouse in all_warehouses:
345
                t_warehouses.append(to_t_warehouse(warehouse))
346
            return t_warehouses
347
        finally:
348
            close_session()
349
 
122 ashish 350
    def getAllItemsForWarehouse(self, warehouse_id):
351
        """
352
        Parameters:
353
         - warehouse_id
354
        """
355
        log_entry(self, "getting all items for warehouse")
766 rajveer 356
        try:
357
            all_items = get_all_items_for_warehouse(warehouse_id)
358
            t_items = []
359
            for item in all_items:
360
                t_items.append(to_t_item(item))
361
            return t_items
362
        finally:
363
            close_session()
871 chandransh 364
 
365
    def reserveItemInWarehouse(self, itemId, warehouseId, quantity):
366
        """
367
        Increases the reservation count for an item in a warehouse. Should always succeed normally.
368
 
369
        Parameters:
370
         - itemId
371
         - warehouseId
372
        """
373
        log_entry(self, "reserveItemInWarehouse called")
374
        try:
375
            return reserve_item_in_warehouse(itemId, warehouseId, quantity)
376
        finally:
377
            close_session()
378
 
379
    def reduceReservationCount(self, itemId, warehouseId, quantity):
380
        """
381
        Decreases the reservation count for an item in a warehouse. Should always succeed normally.
382
 
383
        Parameters:
384
         - itemId
385
         - warehouseId
386
        """
387
        log_entry(self, "reduceReservationCount called")
388
        try:
389
            return reduce_reservation_count(itemId, warehouseId, quantity)
390
        finally:
391
            close_session()
766 rajveer 392
 
122 ashish 393
    def updateItem(self, item):
394
        """
395
        Parameters:
396
         - item
397
        """
398
        log_entry(self, "addItem called")
766 rajveer 399
        try:
400
            return update_item(item)
401
        finally:
402
            close_session()
403
 
626 chandransh 404
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 405
        try:
406
            if total_items is None:
407
                total_items = self.best_sellers_limit
408
            stop_index = start_index + total_items
409
            return get_best_sellers(start_index, stop_index, category)
410
        finally:
411
            close_session()
412
 
626 chandransh 413
    def getBestSellersCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 414
        """
415
        Parameters:
416
         - beginIndex
417
         - totalItems
418
        """
766 rajveer 419
        try:
420
            if total_items is None:
421
                total_items = self.best_sellers_limit
422
            stop_index = start_index + total_items
423
            return get_best_sellers_catalog_ids(start_index, stop_index,category)
424
        finally:
425
            close_session()
426
 
591 chandransh 427
    def getBestSellersCount(self, ):
766 rajveer 428
        try:
429
            return get_best_sellers_count(None)
430
        finally:
431
            close_session()
432
 
591 chandransh 433
    def getBestDeals(self,):
766 rajveer 434
        try:
435
            return get_best_deals()
436
        finally:
437
            close_session()
438
 
626 chandransh 439
    def getBestDealsCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 440
        """
441
        Parameters:
442
         - beginIndex
443
         - totalItems
444
        """
766 rajveer 445
        try:
446
            stop_index = start_index + total_items
447
            return get_best_deals_catalog_ids(start_index, stop_index, category)
448
        finally:
449
            close_session()
450
 
591 chandransh 451
    def getBestDealsCount(self, ):
766 rajveer 452
        try:
453
            return get_best_deals_count()
454
        finally:
455
            close_session()
456
 
591 chandransh 457
    def getLatestArrivals(self,):
766 rajveer 458
        try:
459
            return get_latest_arrivals(self.latest_arrivals_limit)
460
        finally:
461
            close_session()
462
 
626 chandransh 463
    def getLatestArrivalsCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 464
        """
465
        Parameters:
466
         - beginIndex
467
         - totalItems
468
        """
766 rajveer 469
        try:
470
            if start_index > self.latest_arrivals_limit:
471
                return []
472
            stop_index = start_index + total_items
473
            if stop_index > self.latest_arrivals_limit:
474
                stop_index = self.latest_arrivals_limit
787 vikas 475
            return get_latest_arrivals_catalog_ids(start_index, stop_index, category)
766 rajveer 476
        finally:
477
            close_session()
478
 
591 chandransh 479
    def getLatestArrivalsCount(self, ):
766 rajveer 480
        try:
481
            return get_latest_arrivals_count(self.latest_arrivals_limit)
482
        finally:
483
            close_session()
591 chandransh 484
 
635 rajveer 485
    def putCategoryObject(self, object):
486
        """
487
        Parameters:
488
         - object
489
        """
766 rajveer 490
        try:
491
            return put_category_object(object)
492
        finally:
493
            close_session()
494
 
635 rajveer 495
    def getCategoryObject(self, ):
766 rajveer 496
        try:
497
            return get_category_object()
498
        finally:
499
            close_session()
500
 
501
    def closeSession(self, ):
502
        close_session()