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