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