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