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,\
2116 ankur.sing 19
    get_all_item_pricing, add_vendor_pricing, \
2035 rajveer 20
    get_item_pricing, get_category, get_all_categories, add_category,\
2116 ankur.sing 21
    get_item_status_description, get_all_vendors, check_vendor_item_mapping,\
2286 ankur.sing 22
    get_item_mappings, add_vendor_item_mapping, check_similar_item,\
2809 rajveer 23
    change_risky_flag, get_items_by_vendor_category, get_risky_items,\
3086 rajveer 24
    get_similar_items_catalog_ids, add_product_notification,\
3348 varun.gupt 25
    send_product_notifications, update_inventory_history,\
26
    get_all_brands_by_category
122 ashish 27
from shop2020.model.v1.catalog.impl.Convertors import to_t_item,\
2065 ankur.sing 28
    to_t_item_inventory, to_t_warehouse, to_t_vendor_item_pricing, to_t_category,\
2116 ankur.sing 29
    to_t_vendor, to_t_vendor_item_mapping
122 ashish 30
from shop2020.thriftpy.model.v1.catalog.ttypes import status,\
31
    InventoryServiceException
599 chandransh 32
from shop2020.config.client.ConfigClient import ConfigClient
122 ashish 33
 
34
 
35
class InventoryServiceHandler:
36
    '''
37
    classdocs
38
    '''
599 chandransh 39
 
3187 rajveer 40
    def __init__(self, dbname='catalog', db_hostname='localhost'):
122 ashish 41
        '''
42
        Constructor
43
        '''
3187 rajveer 44
        DataService.initialize(dbname, db_hostname)
599 chandransh 45
        try:
621 chandransh 46
            config_client = ConfigClient()
47
            self.latest_arrivals_limit = int(config_client.get_property("LATEST_ARRIVALS_LIMIT"));
48
            self.best_sellers_limit = int(config_client.get_property("BEST_SELLERS_LIMIT"))
599 chandransh 49
        except:
621 chandransh 50
            self.latest_arrivals_limit = 50
51
            self.best_sellers_limit = 50
122 ashish 52
 
53
    #DONE
54
    def addItem(self, item):
55
        """
56
        Availability and inventory attributes
57
 
58
        Parameters:
59
         - item
60
        """
61
        log_entry(self, "addItem called")
785 rajveer 62
        try:
63
            return add_item(item)
64
        finally:
65
            close_session()
122 ashish 66
 
67
    def addWarehouse(self, warehouse):
68
        """
69
        Parameters:
70
         - warehouse
71
        """
72
        log_entry(self, "addWarehouse called")
785 rajveer 73
        try:
74
            return add_warehouse(warehouse)
75
        finally:
76
            close_session()
122 ashish 77
 
3325 chandransh 78
    def updateInventoryHistory(self, warehouse_id, timestamp, availability):
79
        """
80
        Stores the incremental warehouse updates of items.
81
 
82
        Parameters:
83
         - warehouse_id
84
         - timestamp
85
         - availability
86
        """
87
        try:
88
            return update_inventory_history(warehouse_id, timestamp, availability)
89
        finally:
90
            close_session()
483 rajveer 91
 
92
    def updateInventory(self, warehouse_id, timestamp, availability):
122 ashish 93
        """
94
        Parameters:
95
         - warehouse_id
96
         - timestamp
483 rajveer 97
         - availability
122 ashish 98
        """
99
        log_entry(self, "update Inventory called")
785 rajveer 100
        try:
101
            return update_inventory(warehouse_id, timestamp, availability)
102
        finally:
103
            close_session()
104
 
105
 
635 rajveer 106
    def isActive(self, item_id):
563 chandransh 107
        """
108
        Parameters:
635 rajveer 109
         - item_id
563 chandransh 110
        """
785 rajveer 111
        try:
112
            return is_active(item_id)
113
        finally:
114
            close_session()
122 ashish 115
 
2035 rajveer 116
    def getItemStatusDescription(self, itemId):
117
        """
118
        Parameters:
119
         - itemId
120
        """
121
        try:
122
            return get_item_status_description(itemId)
123
        finally:
124
            close_session()
125
 
122 ashish 126
    def retireWarehouse(self, warehouse_id):
127
        """
128
        Parameters:
129
         - warehouse_id
130
        """
131
        log_entry(self, "retire warehouse called")
785 rajveer 132
        try:
133
            return retire_warehouse(warehouse_id)
134
        finally:
135
            close_session()
136
 
122 ashish 137
 
138
    def retireItem(self, item_id):
139
        """
140
        Parameters:
141
        - item_id
142
        """
143
        log_entry(self, "retire item called")
785 rajveer 144
        try:
145
            return retire_item(item_id)
146
        finally:
147
            close_session()
122 ashish 148
 
149
    def startItemOn(self, item_id, timestamp):
150
        """
151
        Parameters:
152
         - item_id
153
         - timestamp
154
        """
785 rajveer 155
        try:
156
            start_item_on(item_id, timestamp)
157
        finally:
158
            close_session()
122 ashish 159
 
160
    def retireItemOn(self, item_id, timestamp):
161
        """
162
        Parameters:
163
         - item_id
164
         - timestamp
165
        """
785 rajveer 166
        try:
167
            retire_item_on(item_id, timestamp)
168
        finally:
169
            close_session()
122 ashish 170
 
171
    def changeItemStatus(self, item_id, timestamp, newstatus):
172
        """
173
        Parameters:
174
         - item_id
175
         - timestamp
176
         - newstatus
177
        """
178
        log_entry(self, "change item status called")
785 rajveer 179
        try:
180
            return change_item_status(item_id, newstatus)
181
        finally:
182
            close_session()
122 ashish 183
 
785 rajveer 184
 
122 ashish 185
    def getItem(self, item_id):
186
        """
187
        Parameters:
188
         - item_id
189
        """
190
        log_entry(self, "item requested")
785 rajveer 191
        try:
2065 ankur.sing 192
            item = to_t_item( get_item(item_id))
193
            return item
785 rajveer 194
        finally:
195
            close_session()
379 ashish 196
 
635 rajveer 197
    def getItemsByCatalogId(self, catalog_item_id):
379 ashish 198
        """
199
        Parameters:
200
        - catalog_item_id
201
        """
386 ashish 202
        log_entry(self, "item requested")
766 rajveer 203
        try:
204
            return get_items_by_catalog_id(catalog_item_id)
205
        finally:
206
            close_session()
122 ashish 207
 
483 rajveer 208
 
122 ashish 209
    def getAllItems(self, isActive):
210
        """
211
        Parameters:
212
         - isActive
213
        """
214
        log_entry(self, "all items requested")
766 rajveer 215
        try:
216
            items = get_all_items(isActive)
217
            ret_items = []
218
            for item in items:
219
                if item:
220
                    ret_items.append(to_t_item(item))
221
            return ret_items
222
        finally:
223
            close_session()
224
 
122 ashish 225
    def getAllItemsByStatus(self, itemStatus):
226
        """
227
        Parameters:
228
         - itemStatus
229
        """
230
        log_entry(self, "all items requested")
766 rajveer 231
        try:
232
            items = get_all_items_by_status(itemStatus)
233
            ret_items = []
234
            for item in items:
235
                if item:
236
                    ret_items.append(to_t_item(item))
237
            return ret_items
238
        finally:
239
            close_session()
122 ashish 240
 
241
    def getItemInventory(self, item_id):
242
        """
243
        Parameters:
244
        - item_id
245
        """
246
        log_entry(self, "item inventory requested")
766 rajveer 247
        try:
248
            inventory = get_item_inventoy(item_id)
249
            return to_t_item_inventory(inventory, item_id)
250
        finally:
251
            close_session()
122 ashish 252
 
635 rajveer 253
    def getItemInventoryByItemId(self, item_id):
254
        """
255
        Parameters:
256
         - item_id
257
        """
258
        log_entry(self, "item inventory requested")
766 rajveer 259
        try:
260
            inventory = get_item_inventory_by_item_id(item_id)
261
            return to_t_item_inventory(inventory, item_id)
262
        finally:
263
            close_session()
635 rajveer 264
 
3348 varun.gupt 265
    def getAllBrandsByCategory(self, categoryId):
266
        """
267
        Parameters:
268
         - categoryId
269
        """
270
        try:
271
            return get_all_brands_by_category(categoryId)
272
        finally:
273
            close_session()
274
 
635 rajveer 275
    '''
379 ashish 276
    def getItemInventoryByCatalogId(self, item_id):
277
        """
278
        Parameters:
279
         - item_id
280
        """
383 ashish 281
        log_entry(self, "item inventory requested")
282
        inventory = get_item_inventory_by_catalog_id(item_id)
283
        return to_t_item_inventory(inventory, item_id)
635 rajveer 284
    '''
285
 
379 ashish 286
 
643 chandransh 287
    def getItemAvailabilityAtLocation(self, warehouse_loc, item_id):
288
        """
3355 chandransh 289
        Determines the warehouse that should be used to fulfil an order for the given item.
290
        It first checks all the warehouses which are in the logistics location given by the
291
        warehouse_loc parameter. If none of the warehouses there have any inventory, then the
292
        preferred warehouse for the item is used.
643 chandransh 293
 
3355 chandransh 294
        Returns an ordered list of size 4 with following elements in the given order:
295
        1. Logistics location of the warehouse which was finally picked up to ship the order.
296
        2. Id of the warehouse which was finally picked up.
297
        3. Inventory size in the selected warehouse.
298
        4. Expected delay added by the category manager.
299
 
643 chandransh 300
        Parameters:
301
         - warehouse_loc
302
         - item_id
303
        """
766 rajveer 304
        try:
305
            return get_item_availability_for_location(warehouse_loc, item_id)
306
        finally:
307
            close_session()
308
 
122 ashish 309
    def getItemAvailibilityAtWarehouse(self, warehouse_id, item_id):
310
        """
311
        Parameters:
312
         - warehouse_id
313
         - item_id
314
        """
315
        log_entry(self, "item availability at warehouse requested")
766 rajveer 316
        try:
317
            return get_item_availability_for_warehouse(warehouse_id, item_id)
318
        finally:
319
            close_session()
320
 
2080 rajveer 321
    def markItemAsContentComplete(self, entityId, category, brand, modelName, modelNumber):
322
        """
323
        Parameters:
324
         - entityId
325
         - category
326
         - brand
327
         - modelName
328
         - modelNumber
329
        """
330
        try:
331
            return mark_item_as_content_complete(entityId, category, brand, modelName, modelNumber)
332
        finally:
333
            close_session()
2075 rajveer 334
 
335
 
122 ashish 336
    def getItemInventoryHistory(self, id, item_id, warehouse_id, from_date, to_date):
337
        """
338
        Parameters:
339
         - id
340
         - item_id
341
         - warehouse_id
342
         - from_date
343
         - to_date
344
        """
345
        pass
346
 
347
    def getAllWarehouses(self, isActive):
348
        """
349
        Parameters:
350
        - isActive
351
        """
766 rajveer 352
        try:
353
            if isActive:
354
                warehouses = get_all_warehouses_by_status(status.ACTIVE)
355
            else:
356
                warehouses = get_all_warehouses_by_status(None)
357
 
358
            ret_warehouses = []
359
 
360
            for warehouse in warehouses:
361
                ret_warehouses.append(to_t_warehouse(warehouse))
362
            return ret_warehouses
363
        finally:
364
            close_session()
365
 
122 ashish 366
    def getWarehouse(self, warehouse_id):
367
        """
368
        Parameters:
369
         - warehouse_id
370
        """
371
        log_entry(self, "get warehouse call")
766 rajveer 372
        try:
373
            warehouse = get_Warehouse(warehouse_id)
374
            if warehouse:
375
                return to_t_warehouse(warehouse)
376
            else:
377
                raise InventoryServiceException(101, "no such warehouse")
378
        finally:
379
            close_session()
380
 
122 ashish 381
    def getAllWarehousesForItem(self, item_id):
382
        """
383
        Parameters:
384
         - item_id
385
        """
386
        log_entry(self, "getting all warehouses for item")
766 rajveer 387
        try:
388
            all_warehouses = get_all_warehouses_for_item(item_id)
389
            t_warehouses = []
390
            for warehouse in all_warehouses:
391
                t_warehouses.append(to_t_warehouse(warehouse))
392
            return t_warehouses
393
        finally:
394
            close_session()
395
 
122 ashish 396
    def getAllItemsForWarehouse(self, warehouse_id):
397
        """
398
        Parameters:
399
         - warehouse_id
400
        """
401
        log_entry(self, "getting all items for warehouse")
766 rajveer 402
        try:
403
            all_items = get_all_items_for_warehouse(warehouse_id)
404
            t_items = []
405
            for item in all_items:
406
                t_items.append(to_t_item(item))
407
            return t_items
408
        finally:
409
            close_session()
871 chandransh 410
 
411
    def reserveItemInWarehouse(self, itemId, warehouseId, quantity):
412
        """
413
        Increases the reservation count for an item in a warehouse. Should always succeed normally.
414
 
415
        Parameters:
416
         - itemId
417
         - warehouseId
418
        """
419
        log_entry(self, "reserveItemInWarehouse called")
420
        try:
421
            return reserve_item_in_warehouse(itemId, warehouseId, quantity)
422
        finally:
423
            close_session()
424
 
425
    def reduceReservationCount(self, itemId, warehouseId, quantity):
426
        """
427
        Decreases the reservation count for an item in a warehouse. Should always succeed normally.
428
 
429
        Parameters:
430
         - itemId
431
         - warehouseId
432
        """
433
        log_entry(self, "reduceReservationCount called")
434
        try:
435
            return reduce_reservation_count(itemId, warehouseId, quantity)
436
        finally:
437
            close_session()
766 rajveer 438
 
122 ashish 439
    def updateItem(self, item):
440
        """
441
        Parameters:
442
         - item
443
        """
444
        log_entry(self, "addItem called")
766 rajveer 445
        try:
446
            return update_item(item)
447
        finally:
448
            close_session()
449
 
626 chandransh 450
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 451
        try:
452
            if total_items is None:
453
                total_items = self.best_sellers_limit
454
            stop_index = start_index + total_items
455
            return get_best_sellers(start_index, stop_index, category)
456
        finally:
457
            close_session()
458
 
1926 rajveer 459
    def getBestSellersCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 460
        """
461
        Parameters:
462
         - beginIndex
463
         - totalItems
464
        """
766 rajveer 465
        try:
466
            if total_items is None:
467
                total_items = self.best_sellers_limit
468
            stop_index = start_index + total_items
1926 rajveer 469
            return get_best_sellers_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 470
        finally:
471
            close_session()
472
 
591 chandransh 473
    def getBestSellersCount(self, ):
766 rajveer 474
        try:
2093 chandransh 475
            return get_best_sellers_count()
766 rajveer 476
        finally:
477
            close_session()
478
 
591 chandransh 479
    def getBestDeals(self,):
766 rajveer 480
        try:
481
            return get_best_deals()
482
        finally:
483
            close_session()
484
 
1926 rajveer 485
    def getBestDealsCatalogIds(self, start_index, total_items, brand,category=-1):
548 rajveer 486
        """
487
        Parameters:
488
         - beginIndex
489
         - totalItems
490
        """
766 rajveer 491
        try:
492
            stop_index = start_index + total_items
1926 rajveer 493
            return get_best_deals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 494
        finally:
495
            close_session()
496
 
591 chandransh 497
    def getBestDealsCount(self, ):
766 rajveer 498
        try:
499
            return get_best_deals_count()
500
        finally:
501
            close_session()
502
 
591 chandransh 503
    def getLatestArrivals(self,):
766 rajveer 504
        try:
505
            return get_latest_arrivals(self.latest_arrivals_limit)
506
        finally:
507
            close_session()
2975 chandransh 508
 
509
    def getLatestArrivalsCatalogIds(self, beginIndex, totalItems, brand, categories):
548 rajveer 510
        """
2975 chandransh 511
        Returns the list of catalog ids of latest arrivals in the given categories of the given brand.
512
        To ignore the categories, pass the list as empty. To ignore brand, pass it as null.
513
 
548 rajveer 514
        Parameters:
515
         - beginIndex
516
         - totalItems
2975 chandransh 517
         - brand
518
         - categories
548 rajveer 519
        """
766 rajveer 520
        try:
2975 chandransh 521
            if beginIndex > self.latest_arrivals_limit:
766 rajveer 522
                return []
2975 chandransh 523
            stopIndex = beginIndex + totalItems
524
            if stopIndex > self.latest_arrivals_limit:
525
                stopIndex = self.latest_arrivals_limit
526
            return get_latest_arrivals_catalog_ids(beginIndex, stopIndex, brand, categories)
766 rajveer 527
        finally:
528
            close_session()
529
 
591 chandransh 530
    def getLatestArrivalsCount(self, ):
766 rajveer 531
        try:
532
            return get_latest_arrivals_count(self.latest_arrivals_limit)
533
        finally:
534
            close_session()
591 chandransh 535
 
1334 chandransh 536
    def getItemPricing(self, itemId, warehouseId):
537
        """
538
        Returns the pricing information of an item associated with the vendor of the given warehouse.
539
        Raises an exception if either the item, vendor or the associated pricing information can't be found.
540
 
541
        Parameters:
542
         - itemId
543
         - warehouseId
544
        """
1341 chandransh 545
        try:
1347 chandransh 546
            return to_t_vendor_item_pricing(get_item_pricing(itemId, warehouseId))
1341 chandransh 547
        finally:
548
            close_session()
1991 ankur.sing 549
 
550
 
551
    def getAllItemPricing(self, itemId):
552
        """
553
        Returns list of the pricing information of an item associated an item.
554
        Raises an exception if the item can't be found.
555
 
556
        Parameters:
557
         - itemId
558
        """
559
        try:
560
            return [to_t_vendor_item_pricing(vid) for vid in get_all_item_pricing(itemId)]
561
        finally:
562
            close_session()
1334 chandransh 563
 
1155 rajveer 564
    def generateNewEntityID(self, ):
565
        try:
566
            return generate_new_entity_id()
567
        finally:
568
            close_session()
569
 
635 rajveer 570
    def putCategoryObject(self, object):
571
        """
572
        Parameters:
573
         - object
574
        """
766 rajveer 575
        try:
576
            return put_category_object(object)
577
        finally:
578
            close_session()
579
 
635 rajveer 580
    def getCategoryObject(self, ):
766 rajveer 581
        try:
582
            return get_category_object()
583
        finally:
584
            close_session()
1970 rajveer 585
 
586
    def addCategory(self, category):
587
        """
588
        Parameters:
589
         - category
590
        """
591
        try:
592
            return add_category(category)
593
        finally:
594
            close_session()
595
 
596
    def getCategory(self, id):
597
        """
598
        Parameters:
599
         - id
600
        """
601
        try:
602
            return to_t_category(get_category(id))
603
        finally:
604
            close_session()
605
 
606
    def getAllCategories(self, ):
607
        try:
608
            categories = get_all_categories()
609
            return [to_t_category(category) for category in categories]
610
        finally:
611
            close_session()
612
 
613
 
2116 ankur.sing 614
    def addVendorItemPricing(self, vendorItemPricing):
1991 ankur.sing 615
        """
2116 ankur.sing 616
        Adds vendor prices corresponding to the item. If pricing already exists then updates the prices. 
1991 ankur.sing 617
        Raises an exception if either the item or vendor can't be found corresponding to their ids.
618
 
619
        Parameters:
620
         - vendorItemPricing
621
        """
622
        log_entry(self, "updateVendorItemPricing called")
623
        try:
2116 ankur.sing 624
            return add_vendor_pricing(vendorItemPricing)
1991 ankur.sing 625
        finally:
626
            close_session()
627
 
2065 ankur.sing 628
    def getAllVendors(self, ):
629
        """
630
        Return list of all vendors
631
        """
632
        return [to_t_vendor(v) for v in get_all_vendors()]
2116 ankur.sing 633
 
634
    def itemExists(self, productGroup, brand, modelNumber, color, vendorId, category):
635
        try:
636
            return check_vendor_item_mapping(productGroup, brand, modelNumber, color, vendorId, category)
637
        finally:
638
            close_session()
2065 ankur.sing 639
 
2358 ankur.sing 640
    def addVendorItemMapping(self, key, vendorItemMapping):
2116 ankur.sing 641
        """
2358 ankur.sing 642
        Adds VendorItemMapping. Updates VendorItemMapping if exists corresponding to the item key.
2116 ankur.sing 643
 
644
        Parameters:
2358 ankur.sing 645
         - key
2116 ankur.sing 646
         - vendorItemMapping
647
        """
648
        log_entry(self, "addVendorItemMapping called")
649
        try:
2358 ankur.sing 650
            return add_vendor_item_mapping(key, vendorItemMapping)
2116 ankur.sing 651
        finally:
652
            close_session()
653
 
654
    def getVendorItemMappings(self, itemId):
655
        """
656
        Returns the list of vendor item mapping corresponding to itemId passed as parameter.
657
        Raises an exception if item not found corresponding to itemId
658
 
659
        Parameters:
660
         - itemId
661
        """
662
        try:
2120 ankur.sing 663
            item_mappings = get_item_mappings(itemId)
664
            return [to_t_vendor_item_mapping(vim) for vim in item_mappings]
2116 ankur.sing 665
        finally:
666
            close_session()
667
 
668
    def checkSimilarItem(self, productGroup, brand, modelNumber, color):
669
        """
670
        Checks if similar item exists (with same ProductGroup, Brand, ModelNumber, Color)
671
        If yes, returns the itemId else returns 0
672
 
673
        Parameters:
674
         - productGroup
675
         - brand
676
         - modelNumber
677
         - color
678
        """
679
        try:
680
            return check_similar_item(productGroup, brand, modelNumber, color)
681
        finally:
682
            close_session()
683
 
2286 ankur.sing 684
    def changeItemRiskyFlag(self, itemId, risky):
685
        """
686
        Marks/Unmarks an item as risky. This flag is used for automatic marking of an item as INACTIVE in case of zero inventory.
687
 
688
        Parameters:
689
         - itemId
690
         - risky
691
        """
692
        try:
693
            change_risky_flag(itemId, risky)
694
        finally:
695
            close_session()
2116 ankur.sing 696
 
2358 ankur.sing 697
    def getItemsByVendorCategory(self, vendorCategory):
698
        """
699
        Return list of items filtered by vendor category.
700
        Raises exception if vendorCategory is null.
701
 
702
        Parameters:
703
         - vendorCategory
704
        """
705
        try:
706
            return [to_t_item(item) for item in get_items_by_vendor_category(vendorCategory)]
707
        finally:
708
            close_session()
709
 
710
    def getItemsByRiskyFlag(self, ):
711
        """
712
        Returns list of items marked as risky.
713
        """
714
        try:
715
            return [to_t_item(item) for item in get_risky_items()]
716
        finally:
717
            close_session()
2809 rajveer 718
 
719
    def getSimilarItemsCatalogIds(self, beginIndex, totalItems, itemId):
720
        """
721
        Returns list of catalog ids of items with same similarity index as of the given itemId
722
 
723
        Parameters:
724
         - beginIndex
725
         - totalItems
726
         - itemId
727
        """
728
        try:
729
            return get_similar_items_catalog_ids(beginIndex, beginIndex+totalItems, itemId)
730
        finally:
731
            close_session()
3079 rajveer 732
 
733
    def addProductNotification(self, itemId, email):
734
        """
735
        Add user requests for out of stock items. Once user will ask for notify me an entry will
736
 
737
        Parameters:
738
        - itemId
739
        - email
740
        """
741
        try:
742
            return add_product_notification(itemId, email)
743
        finally:
744
            close_session()
2358 ankur.sing 745
 
3086 rajveer 746
    def sendProductNotifications(self, ):
747
        """
748
        Send the product notifications to the users for items which has stock.
749
        """
750
        try:
751
            return send_product_notifications()
752
        finally:
753
            close_session()
766 rajveer 754
    def closeSession(self, ):
755
        close_session()