Subversion Repositories SmartDukaan

Rev

Rev 6850 | Rev 6962 | Go to most recent revision | Details | Compare with Previous | 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
'''
5110 mandeep.dh 6
from shop2020.config.client.ConfigClient import ConfigClient
6511 kshitij.so 7
from shop2020.model.v1.catalog.impl.Convertors import to_t_item, to_t_category, \
8
    to_t_source_item_pricing, to_t_product_notification_request, \
6848 kshitij.so 9
    to_t_product_notification_request_count, to_t_voucher_item_mapping, to_t_insurer, \
6850 kshitij.so 10
    to_t_banner,to_t_banner_map, \
6845 amit.gupta 11
    to_t_product_notification_request_count, to_t_voucher_item_mapping, to_t_insurer
6511 kshitij.so 12
from shop2020.model.v1.catalog.impl.DataAcessors import add_item, retire_item, \
13
    change_item_status, get_item, get_all_items, get_all_items_by_status, \
5944 mandeep.dh 14
    update_item, start_item_on, close_session, retire_item_on, \
5110 mandeep.dh 15
    get_items_by_catalog_id, get_best_deals, get_best_deals_catalog_ids, \
16
    get_best_deals_count, get_best_sellers, get_latest_arrivals, \
17
    get_latest_arrivals_catalog_ids, get_latest_arrivals_count, is_active, \
18
    get_best_sellers_catalog_ids, get_best_sellers_count, put_category_object, \
5944 mandeep.dh 19
    get_category_object, mark_item_as_content_complete, generate_new_entity_id, \
20
    get_category, get_all_categories, add_category, get_item_status_description, \
6511 kshitij.so 21
    check_similar_item, change_risky_flag, get_items_for_mastersheet, \
22
    get_risky_items, get_similar_items_catalog_ids, add_product_notification, \
23
    send_product_notifications, get_all_brands_by_category, is_alive, \
24
    get_item_pricing_by_source, add_source_item_pricing, get_all_sources, \
25
    get_item_for_source, get_all_source_pricing, get_item_count_by_status, \
26
    search_items, get_search_result_count, get_product_notifications, \
27
    get_product_notification_request_count, get_all_similar_items_catalog_ids, \
28
    add_similar_item_catalog_id, delete_similar_item_catalog_id, \
29
    add_authorization_log_for_item, get_thrift_item_list, get_all_brands, \
30
    get_coming_soon, get_coming_soon_catalog_ids, get_coming_soon_count, initialize, \
31
    get_clearance_sale_catalog_ids, add_update_voucher_for_item, \
32
    delete_voucher_for_item, get_voucher_amount, get_all_vouchers_for_item, \
33
    is_valid_catalog_id, check_risky_item, get_vat_percentage_for_item, \
6532 amit.gupta 34
    get_vat_amount_for_item, add_tag, get_all_tags, get_all_entities_by_tag_name, \
6848 kshitij.so 35
    delete_tag, delete_entity_tag, get_all_ignored_inventoryupdate_items_list,add_banner,get_all_banners, \
36
    delete_banner,get_banner_details,get_active_banners,add_banner_map,delete_banner_map,get_banner_map_details, \
6845 amit.gupta 37
    get_insurance_amount, get_insurer, get_all_alive_items,get_all_insurers, get_all_entity_tags
5944 mandeep.dh 38
from shop2020.thriftpy.model.v1.catalog.ttypes import status
39
from shop2020.utils.Utils import log_entry, to_py_date
5110 mandeep.dh 40
import datetime
122 ashish 41
 
5944 mandeep.dh 42
class CatalogServiceHandler:
122 ashish 43
    '''
44
    classdocs
45
    '''
599 chandransh 46
 
3187 rajveer 47
    def __init__(self, dbname='catalog', db_hostname='localhost'):
122 ashish 48
        '''
49
        Constructor
50
        '''
5295 rajveer 51
        initialize(dbname, db_hostname)
599 chandransh 52
        try:
621 chandransh 53
            config_client = ConfigClient()
54
            self.latest_arrivals_limit = int(config_client.get_property("LATEST_ARRIVALS_LIMIT"));
55
            self.best_sellers_limit = int(config_client.get_property("BEST_SELLERS_LIMIT"))
599 chandransh 56
        except:
621 chandransh 57
            self.latest_arrivals_limit = 50
58
            self.best_sellers_limit = 50
122 ashish 59
 
60
    #DONE
61
    def addItem(self, item):
62
        """
63
        Availability and inventory attributes
64
 
65
        Parameters:
66
         - item
67
        """
68
        log_entry(self, "addItem called")
785 rajveer 69
        try:
70
            return add_item(item)
71
        finally:
72
            close_session()
6511 kshitij.so 73
 
74
 
75
    def addTag(self, displayName, catalogId):
76
        result = False
77
        try:
78
            return add_tag(displayName, catalogId)
79
        except:
80
            result = True
81
        finally:
82
            close_session()
83
            return result
6848 kshitij.so 84
 
85
    def addBanner(self, bannerName, imageName,link, priority, isActive, hasMap):
86
        result = False
87
        try:
88
            return add_banner(bannerName, imageName, link, priority, isActive, hasMap)
89
        except:
90
            result = True
91
        finally:
92
            close_session()
93
            return result
94
 
95
    def getAllBanners(self):
96
        result = []
97
        try:
98
            result = get_all_banners()
99
        except:
100
            result = False
101
        finally:
102
            close_session()
103
            return result
104
 
105
    def deleteBanner(self,name):
106
        result = True
107
        try:
108
            return delete_banner(name)
109
        except:
110
            result = False
111
        finally:
112
            close_session()
113
            return result
114
 
115
    def getBannerDetails(self, name):
116
        print "I am called"
117
        result = None
118
        try:
119
            result = get_banner_details(name)
120
            print 'result is',
121
            print result
122
            if result is not None:
123
                result = to_t_banner(result)
124
        except:
125
            print "Some error"
126
            return None
127
        finally:
128
            print "Finally here"
129
            print result
130
            close_session()
131
            return result
132
 
133
    def getActiveBanners(self):
134
        result =None
135
        banners=[]
136
        try:
137
            print "Handler"
138
            results = get_active_banners()
139
            for result in results:
140
                if result is not None:
141
                    result = to_t_banner(result)
142
                    print "After conversion",
143
                    banners.append(result)
144
 
145
        except:
146
            return None
147
        finally:
148
            print "Banners list",
149
            print banners
150
            close_session()
151
            return banners
152
 
153
    def addBannerMap(self, bannerName, mapLink, coordinates):
154
        result = True
155
        try:
156
            return add_banner_map(bannerName, mapLink, coordinates)
157
        except:
158
            result = False
159
        finally:
160
            close_session()
161
            return result
162
 
163
    def deleteBannerMap(self, name):
164
        result = True
165
        try:
166
            return delete_banner_map(name)
167
        except:
168
            result = False
169
        finally:
170
            close_session()
171
            return result
172
 
173
    def getBannerMapDetails(self,name):
174
        result =None
175
        banners=[]
176
        try:
177
            results = get_banner_map_details(name)
178
            for result in results:
179
                if result is not None:
180
                    result = to_t_banner_map(result)
181
                    banners.append(result)
182
        except:
183
            return None
184
        finally:
185
            close_session()
186
            return banners
187
 
188
 
6511 kshitij.so 189
 
190
    def getAllTags(self):
191
        result = []
192
        try:
193
            result = get_all_tags()
194
        except:
195
            result = True
196
        finally:
197
            close_session()
198
            return result
199
 
200
    def getAllEntitiesByTagName(self,displayName):
201
        result = []
202
        try:
203
            result = get_all_entities_by_tag_name(displayName)
204
        except:
205
            result = True
206
        finally:
207
            close_session()
208
            return result
209
 
210
    def deleteTag(self,displayName):
211
        result = False
212
        try:
213
            return delete_tag(displayName)
214
        except:
215
            result = True
216
        finally:
217
            close_session()
218
            return result
219
 
6518 kshitij.so 220
    def deleteEntityTag(self,displayName,catalogId):
221
        result = False
222
        try:
223
            return delete_entity_tag(displayName,catalogId)
224
        except:
225
            result = True
226
        finally:
227
            close_session()
228
            return result
229
 
635 rajveer 230
    def isActive(self, item_id):
563 chandransh 231
        """
232
        Parameters:
635 rajveer 233
         - item_id
563 chandransh 234
        """
785 rajveer 235
        try:
236
            return is_active(item_id)
237
        finally:
238
            close_session()
122 ashish 239
 
2035 rajveer 240
    def getItemStatusDescription(self, itemId):
241
        """
242
        Parameters:
243
         - itemId
244
        """
245
        try:
246
            return get_item_status_description(itemId)
247
        finally:
248
            close_session()
122 ashish 249
 
250
    def retireItem(self, item_id):
251
        """
252
        Parameters:
253
        - item_id
254
        """
255
        log_entry(self, "retire item called")
785 rajveer 256
        try:
257
            return retire_item(item_id)
258
        finally:
259
            close_session()
122 ashish 260
 
261
    def startItemOn(self, item_id, timestamp):
262
        """
263
        Parameters:
264
         - item_id
265
         - timestamp
266
        """
785 rajveer 267
        try:
268
            start_item_on(item_id, timestamp)
269
        finally:
270
            close_session()
122 ashish 271
 
272
    def retireItemOn(self, item_id, timestamp):
273
        """
274
        Parameters:
275
         - item_id
276
         - timestamp
277
        """
785 rajveer 278
        try:
279
            retire_item_on(item_id, timestamp)
280
        finally:
281
            close_session()
122 ashish 282
 
283
    def changeItemStatus(self, item_id, timestamp, newstatus):
284
        """
285
        Parameters:
286
         - item_id
287
         - timestamp
288
         - newstatus
289
        """
290
        log_entry(self, "change item status called")
785 rajveer 291
        try:
292
            return change_item_status(item_id, newstatus)
293
        finally:
294
            close_session()
122 ashish 295
 
785 rajveer 296
 
122 ashish 297
    def getItem(self, item_id):
298
        """
299
        Parameters:
300
         - item_id
301
        """
302
        log_entry(self, "item requested")
785 rajveer 303
        try:
2065 ankur.sing 304
            item = to_t_item( get_item(item_id))
305
            return item
785 rajveer 306
        finally:
307
            close_session()
379 ashish 308
 
635 rajveer 309
    def getItemsByCatalogId(self, catalog_item_id):
379 ashish 310
        """
311
        Parameters:
312
        - catalog_item_id
313
        """
386 ashish 314
        log_entry(self, "item requested")
766 rajveer 315
        try:
4934 amit.gupta 316
            return get_thrift_item_list(get_items_by_catalog_id(catalog_item_id))
766 rajveer 317
        finally:
318
            close_session()
122 ashish 319
 
4934 amit.gupta 320
    def getValidItemsByCatalogId(self, catalog_item_id):
321
        """
322
        Parameters:
323
         - catalog_item_id
324
        """
325
        log_entry(self, "items requested for CatalogItem")
326
        try:
327
            return get_thrift_item_list(filter(is_valid, get_items_by_catalog_id(catalog_item_id)))
328
        finally:
329
            close_session()
330
 
5586 phani.kuma 331
    def isValidCatalogItemId(self, catalog_item_id):
332
        """
333
        Parameters:
334
         - catalog_item_id
335
        """
336
        try:
337
            return is_valid_catalog_id(catalog_item_id)
338
        finally:
339
            close_session()
340
 
122 ashish 341
    def getAllItems(self, isActive):
342
        """
343
        Parameters:
344
         - isActive
345
        """
346
        log_entry(self, "all items requested")
766 rajveer 347
        try:
348
            items = get_all_items(isActive)
349
            ret_items = []
350
            for item in items:
351
                if item:
352
                    ret_items.append(to_t_item(item))
353
            return ret_items
354
        finally:
355
            close_session()
356
 
122 ashish 357
    def getAllItemsByStatus(self, itemStatus):
358
        """
359
        Parameters:
360
         - itemStatus
361
        """
362
        log_entry(self, "all items requested")
766 rajveer 363
        try:
364
            items = get_all_items_by_status(itemStatus)
365
            ret_items = []
366
            for item in items:
367
                if item:
368
                    ret_items.append(to_t_item(item))
369
            return ret_items
370
        finally:
371
            close_session()
6821 amar.kumar 372
 
373
    def getAllAliveItems(self):
374
        """
375
        Parameters:
376
         - itemStatus
377
        """
378
        log_entry(self, "all non phased non deleted items requested")
379
        try:
380
            items = get_all_alive_items()
381
            ret_items = []
382
            for item in items:
383
                if item:
384
                    ret_items.append(to_t_item(item))
385
            return ret_items
386
        finally:
387
            close_session()
388
 
122 ashish 389
 
3348 varun.gupt 390
    def getAllBrandsByCategory(self, categoryId):
391
        """
392
        Parameters:
393
         - categoryId
394
        """
395
        try:
396
            return get_all_brands_by_category(categoryId)
397
        finally:
398
            close_session()
399
 
4957 phani.kuma 400
    def getAllBrands(self):
401
        try:
402
            return get_all_brands()
403
        finally:
404
            close_session()
5944 mandeep.dh 405
 
3849 chandransh 406
    def getAllItemsInRange(self, offset, limit):
407
        """
408
        Gets at most 'limit' items starting at the given offset. Returns an empty list if there are no more items at the given offset.
409
 
410
        Parameters:
411
         - offset
412
         - limit
413
        """
414
        try:
415
            items = get_all_items(False, offset, limit)
416
            return [to_t_item(item) for item in items]
417
        finally:
418
            close_session()
379 ashish 419
 
3849 chandransh 420
    def getAllItemsByStatusInRange(self, itemStatus, offset, limit):
421
        """
422
        Gets at most 'limit' items starting at the given offset in the given status. Returns an empty list if there are no more items at the given offset.
423
 
424
        Parameters:
425
         - itemStatus
426
         - offset
427
         - limit
428
        """
429
        log_entry(self, "all items requested")
430
        try:
431
            items = get_all_items_by_status(itemStatus, offset, limit)
432
            return [to_t_item(item) for item in items]
433
        finally:
434
            close_session()
435
 
436
    def getItemCountByStatus(self, useStatus, itemStatus):
437
        """
438
        Gets a count of all items by status
439
 
440
        Parameters:
441
         - useStatus
442
         - itemStatus
443
        """
444
        try:
445
            return get_item_count_by_status(useStatus, itemStatus)
446
        finally:
447
            close_session()
448
 
2080 rajveer 449
    def markItemAsContentComplete(self, entityId, category, brand, modelName, modelNumber):
450
        """
451
        Parameters:
452
         - entityId
453
         - category
454
         - brand
455
         - modelName
456
         - modelNumber
457
        """
458
        try:
459
            return mark_item_as_content_complete(entityId, category, brand, modelName, modelNumber)
460
        finally:
461
            close_session()
766 rajveer 462
 
122 ashish 463
    def updateItem(self, item):
464
        """
465
        Parameters:
466
         - item
467
        """
468
        log_entry(self, "addItem called")
766 rajveer 469
        try:
470
            return update_item(item)
471
        finally:
472
            close_session()
473
 
626 chandransh 474
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 475
        try:
476
            if total_items is None:
477
                total_items = self.best_sellers_limit
478
            stop_index = start_index + total_items
479
            return get_best_sellers(start_index, stop_index, category)
480
        finally:
481
            close_session()
482
 
1926 rajveer 483
    def getBestSellersCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 484
        """
485
        Parameters:
486
         - beginIndex
487
         - totalItems
488
        """
766 rajveer 489
        try:
490
            if total_items is None:
491
                total_items = self.best_sellers_limit
492
            stop_index = start_index + total_items
1926 rajveer 493
            return get_best_sellers_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 494
        finally:
495
            close_session()
496
 
591 chandransh 497
    def getBestSellersCount(self, ):
766 rajveer 498
        try:
2093 chandransh 499
            return get_best_sellers_count()
766 rajveer 500
        finally:
501
            close_session()
502
 
591 chandransh 503
    def getBestDeals(self,):
766 rajveer 504
        try:
505
            return get_best_deals()
506
        finally:
507
            close_session()
508
 
1926 rajveer 509
    def getBestDealsCatalogIds(self, start_index, total_items, brand,category=-1):
548 rajveer 510
        """
511
        Parameters:
512
         - beginIndex
513
         - totalItems
514
        """
766 rajveer 515
        try:
516
            stop_index = start_index + total_items
1926 rajveer 517
            return get_best_deals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 518
        finally:
519
            close_session()
520
 
591 chandransh 521
    def getBestDealsCount(self, ):
766 rajveer 522
        try:
523
            return get_best_deals_count()
524
        finally:
525
            close_session()
526
 
5217 amit.gupta 527
    def getComingSoon(self,):
528
        try:
529
            return get_coming_soon()
530
        finally:
531
            close_session()
532
 
533
    def getComingSoonCatalogIds(self, start_index, total_items, brand,category=-1):
534
        """
535
        Parameters:
536
         - beginIndex
537
         - totalItems
538
        """
539
        try:
540
            stop_index = start_index + total_items
541
            return get_coming_soon_catalog_ids(start_index, stop_index, brand, category)
542
        finally:
543
            close_session()
544
 
545
    def getComingSoonCount(self, ):
546
        try:
547
            return get_coming_soon_count()
548
        finally:
549
            close_session()
550
 
591 chandransh 551
    def getLatestArrivals(self,):
766 rajveer 552
        try:
553
            return get_latest_arrivals(self.latest_arrivals_limit)
554
        finally:
555
            close_session()
2975 chandransh 556
 
557
    def getLatestArrivalsCatalogIds(self, beginIndex, totalItems, brand, categories):
548 rajveer 558
        """
2975 chandransh 559
        Returns the list of catalog ids of latest arrivals in the given categories of the given brand.
560
        To ignore the categories, pass the list as empty. To ignore brand, pass it as null.
561
 
548 rajveer 562
        Parameters:
563
         - beginIndex
564
         - totalItems
2975 chandransh 565
         - brand
566
         - categories
548 rajveer 567
        """
766 rajveer 568
        try:
2975 chandransh 569
            if beginIndex > self.latest_arrivals_limit:
766 rajveer 570
                return []
2975 chandransh 571
            stopIndex = beginIndex + totalItems
572
            if stopIndex > self.latest_arrivals_limit:
573
                stopIndex = self.latest_arrivals_limit
574
            return get_latest_arrivals_catalog_ids(beginIndex, stopIndex, brand, categories)
766 rajveer 575
        finally:
576
            close_session()
577
 
591 chandransh 578
    def getLatestArrivalsCount(self, ):
766 rajveer 579
        try:
580
            return get_latest_arrivals_count(self.latest_arrivals_limit)
581
        finally:
582
            close_session()
591 chandransh 583
 
1155 rajveer 584
    def generateNewEntityID(self, ):
585
        try:
586
            return generate_new_entity_id()
587
        finally:
588
            close_session()
589
 
635 rajveer 590
    def putCategoryObject(self, object):
591
        """
592
        Parameters:
593
         - object
594
        """
766 rajveer 595
        try:
596
            return put_category_object(object)
597
        finally:
598
            close_session()
599
 
635 rajveer 600
    def getCategoryObject(self, ):
766 rajveer 601
        try:
602
            return get_category_object()
603
        finally:
604
            close_session()
1970 rajveer 605
 
606
    def addCategory(self, category):
607
        """
608
        Parameters:
609
         - category
610
        """
611
        try:
612
            return add_category(category)
613
        finally:
614
            close_session()
615
 
616
    def getCategory(self, id):
617
        """
618
        Parameters:
619
         - id
620
        """
621
        try:
622
            return to_t_category(get_category(id))
623
        finally:
624
            close_session()
625
 
626
    def getAllCategories(self, ):
627
        try:
628
            categories = get_all_categories()
629
            return [to_t_category(category) for category in categories]
630
        finally:
631
            close_session()
4432 rajveer 632
 
4423 phani.kuma 633
    def getAllSimilarItems(self, itemId):
634
        """
635
        Returns list of similar items.
636
 
637
        Parameters:
638
         - itemId
639
        """
4432 rajveer 640
        try:
641
            return get_all_similar_items_catalog_ids(itemId)
642
        finally:
643
            close_session()
644
 
4423 phani.kuma 645
    def addSimilarItem(self, itemId, catalogItemId):
646
        """
647
        add similar item.
648
 
649
        Parameters:
650
         - itemId, catalogItemId
651
        """
652
        try:
653
            return add_similar_item_catalog_id(itemId, catalogItemId)
654
        finally:
655
            close_session()
656
 
657
    def deleteSimilarItem(self, itemId, catalogItemId):
658
        """
659
        delete similar items.
660
 
661
        Parameters:
662
         - itemId, catalogItemIds
663
        """
664
        try:
665
            return delete_similar_item_catalog_id(itemId, catalogItemId)
666
        finally:
667
            close_session()
4762 phani.kuma 668
 
5504 phani.kuma 669
    def getAllItemVouchers(self, itemId):
670
        """
671
        Returns list of vouchers.
672
 
673
        Parameters:
674
         - itemId
675
        """
676
        try:
677
            vouchers = get_all_vouchers_for_item(itemId)
678
            return [to_t_voucher_item_mapping(voucher) for voucher in vouchers]
679
        finally:
680
            close_session()
681
 
682
    def getVoucherAmount(self, itemId, voucherType):
683
        """
684
        Returns voucher amount.
685
 
686
        Parameters:
687
         - itemId, voucherType
688
        """
689
        try:
690
            return get_voucher_amount(itemId, voucherType)
691
        finally:
692
            close_session()
693
 
694
    def addupdateVoucherForItem(self, catalogItemId, voucherType, voucherAmount):
695
        """
696
        add or update voucher for item.
697
 
698
        Parameters:
699
         - catalogItemId, voucherType, voucherAmount
700
        """
701
        try:
702
            return add_update_voucher_for_item(catalogItemId, voucherType, voucherAmount)
703
        finally:
704
            close_session()
705
 
706
    def deleteVoucherForItem(self, catalogItemId, voucherType):
707
        """
708
        delete voucher for item.
709
 
710
        Parameters:
711
         - catalogItemId, voucherType
712
        """
713
        try:
714
            return delete_voucher_for_item(catalogItemId, voucherType)
715
        finally:
716
            close_session()
2116 ankur.sing 717
 
4725 phani.kuma 718
    def checkSimilarItem(self, brand, modelNumber, modelName, color):
2116 ankur.sing 719
        """
4725 phani.kuma 720
        Checks if similar item exists (with same Brand, ModelNumber, ModelName, Color)
2116 ankur.sing 721
        If yes, returns the itemId else returns 0
722
 
723
        Parameters:
724
         - brand
725
         - modelNumber
4725 phani.kuma 726
         - modelName
2116 ankur.sing 727
         - color
728
        """
729
        try:
4725 phani.kuma 730
            return check_similar_item(brand, modelNumber, modelName, color)
2116 ankur.sing 731
        finally:
732
            close_session()
733
 
2286 ankur.sing 734
    def changeItemRiskyFlag(self, itemId, risky):
735
        """
736
        Marks/Unmarks an item as risky. This flag is used for automatic marking of an item as INACTIVE in case of zero inventory.
737
 
738
        Parameters:
739
         - itemId
740
         - risky
741
        """
742
        try:
743
            change_risky_flag(itemId, risky)
744
        finally:
745
            close_session()
2116 ankur.sing 746
 
4957 phani.kuma 747
    def getItemsForMasterSheet(self, category, brand):
2358 ankur.sing 748
        """
4957 phani.kuma 749
        Returns list of items with any status except PHASED_OUT and filtered by category, brand.
2358 ankur.sing 750
 
751
        Parameters:
4762 phani.kuma 752
         - category
4957 phani.kuma 753
         - vendor
754
         - brand
2358 ankur.sing 755
        """
756
        try:
4957 phani.kuma 757
            return [to_t_item(item) for item in get_items_for_mastersheet(category, brand)]
2358 ankur.sing 758
        finally:
759
            close_session()
760
 
761
    def getItemsByRiskyFlag(self, ):
762
        """
763
        Returns list of items marked as risky.
764
        """
765
        try:
766
            return [to_t_item(item) for item in get_risky_items()]
767
        finally:
768
            close_session()
2809 rajveer 769
 
770
    def getSimilarItemsCatalogIds(self, beginIndex, totalItems, itemId):
771
        """
772
        Returns list of catalog ids of items with same similarity index as of the given itemId
773
 
774
        Parameters:
775
         - beginIndex
776
         - totalItems
777
         - itemId
778
        """
779
        try:
780
            return get_similar_items_catalog_ids(beginIndex, beginIndex+totalItems, itemId)
781
        finally:
782
            close_session()
3079 rajveer 783
 
784
    def addProductNotification(self, itemId, email):
785
        """
786
        Add user requests for out of stock items. Once user will ask for notify me an entry will
787
 
788
        Parameters:
789
        - itemId
790
        - email
791
        """
792
        try:
793
            return add_product_notification(itemId, email)
794
        finally:
795
            close_session()
2358 ankur.sing 796
 
3086 rajveer 797
    def sendProductNotifications(self, ):
798
        """
799
        Send the product notifications to the users for items which has stock.
800
        """
801
        try:
802
            return send_product_notifications()
803
        finally:
804
            close_session()
3557 rajveer 805
 
806
 
807
    def getAllSources(self, ):
808
        """
809
        Return list of all sources
810
        """
811
        try:
812
            return get_all_sources()
813
        finally:
814
            close_session()
815
 
816
    def getItemPricingBySource(self, itemId, sourceId):
817
        """
818
        Returns the pricing information of an item. If no information is found, exception will be thrown.
3376 rajveer 819
 
3557 rajveer 820
        Parameters:
821
         - itemId
822
         - sourceId
823
        """
824
        try:
825
            return to_t_source_item_pricing(get_item_pricing_by_source(itemId, sourceId))
826
        finally:
827
            close_session()
828
 
829
    def addSourceItemPricing(self, sourceItemPricing):
830
        """
831
        Adds prices to be displayed corresponding to the item if user comes from a source.
832
 
833
        Parameters:
834
         - sourceItemPricing
835
        """
836
        try:
837
            add_source_item_pricing(sourceItemPricing)
838
        finally:
839
            close_session()
840
 
841
    def getAllSourcePricing(self, itemId):
842
        """
843
        Returns the list of source pricing information of an item.
844
        Raises an exception if item not found corresponding to itemId
845
 
846
        Parameters:
847
         - itemId
848
        """
849
        try:
850
            return [to_t_source_item_pricing(source_item_pricing) for source_item_pricing in get_all_source_pricing(itemId)]
851
#        return [to_t_item(item) for item in get_risky_items()]
852
        finally:
853
            close_session()
854
 
855
    def getItemForSource(self, item_id, sourceId):
856
        """
857
        Parameters:
858
         - item_id
859
         - sourceId
860
        """
861
        try:
862
            return to_t_item(get_item_for_source(item_id, sourceId))
863
        finally:
864
            close_session()
3872 chandransh 865
 
866
    def searchItemsInRange(self, searchTerms, offset, limit):
867
        """
868
        Searches items matching the the given terms in the catalog
3557 rajveer 869
 
3872 chandransh 870
        Parameters:
871
         - searchTerms
872
        """
873
        try:
874
            return [to_t_item(item) for item in search_items(searchTerms, offset, limit)]
875
        finally:
876
            close_session()
877
 
878
    def getSearchResultCount(self, searchTerms):
879
        """
880
        Gets the count of search results for the given search terms so that the user can go through all the pages.
881
 
882
        Parameters:
883
         - searchTerms
884
        """
885
        try:
886
            return get_search_result_count(searchTerms)
887
        finally:
888
            close_session()
889
 
4295 varun.gupt 890
    def getProductNotifications(self, startDateTime):
891
        '''
892
        Returns a list of Product Notification objects each representing user requests for notification
893
        '''
894
        try:
895
            return [to_t_product_notification_request(notification) for notification in get_product_notifications(to_py_date(startDateTime))]
896
        finally:
897
            close_session()
898
 
899
    def getProductNotificationRequestCount(self, startDateTime):
900
        '''
901
        Returns list of items and the counts of product notification requests
902
        '''
903
        try:
904
            notification_request_counts = [(notification.item, count) for notification, count in get_product_notification_request_count(to_py_date(startDateTime))]
905
 
906
            return [to_t_product_notification_request_count(count) for count in notification_request_counts]
907
 
908
        finally:
909
            close_session()
910
 
3376 rajveer 911
    def isAlive(self, ):
912
        """
913
        For checking weather service is active alive or not. It also checks connectivity with database
914
        """
915
        try:
916
            return is_alive()
917
        finally:
918
            close_session()
919
 
766 rajveer 920
    def closeSession(self, ):
3376 rajveer 921
        """
922
        For closing the open session in sqlalchemy
923
        """
4332 anupam.sin 924
        close_session()
925
 
4649 phani.kuma 926
    def addAuthorizationLog(self, itemId, username, reason):
927
        """
928
        add a log to authorize table.
929
 
930
        Parameters:
931
         - itemId, username, reason
932
        """
933
        try:
934
            return add_authorization_log_for_item(itemId, username, reason)
935
        finally:
4934 amit.gupta 936
            close_session()
5110 mandeep.dh 937
 
5460 phani.kuma 938
    def getClearanceSaleCatalogIds(self):
939
        """
940
        clearance sale products
941
        """
942
        try:
943
            return get_clearance_sale_catalog_ids()
944
        finally:
945
            close_session()
6039 amit.gupta 946
 
5944 mandeep.dh 947
 
6039 amit.gupta 948
    def getVatPercentageForItem(self, itemId, price):
949
        """
950
        get Vat percentage for item for item
951
        """
952
        try:
953
            return get_vat_percentage_for_item(itemId, price)
954
        finally:
955
            close_session()
956
 
957
    def getVatAmountForItem(self, itemId, price):
958
        """
959
        get Vat amount for item
960
        """
961
        try:
962
            return get_vat_amount_for_item(itemId,price)
963
        finally:
964
            close_session()
965
 
5944 mandeep.dh 966
    def validateRiskyStatus(self, itemId):
5712 mandeep.dh 967
        """
5944 mandeep.dh 968
        Check wether item is risky and change status if inventory is not available for risky items
5712 mandeep.dh 969
        """
970
        try:
5944 mandeep.dh 971
            return check_risky_item(itemId)
5712 mandeep.dh 972
        finally:
973
            close_session()
6532 amit.gupta 974
 
975
    def getAllIgnoredInventoryUpdateItemsList(self,offset, limit):
976
        try:
977
            return get_all_ignored_inventoryupdate_items_list(offset,limit)
978
        finally:
6921 anupam.sin 979
            close_session()
6805 anupam.sin 980
 
6921 anupam.sin 981
    def getInsuranceAmount(self, itemId, price, insurerId, quantity):
6805 anupam.sin 982
        try:
6921 anupam.sin 983
            return get_insurance_amount(itemId, price, insurerId, quantity)
6805 anupam.sin 984
        finally:
6921 anupam.sin 985
            close_session()
6805 anupam.sin 986
 
987
    def getInsurer(self, insurerId):
988
        try:
989
            return to_t_insurer(get_insurer(insurerId))
990
        finally:
6838 vikram.rag 991
            close_session()
992
 
993
    def getAllInsurers(self):
994
        try:
995
            insurers = []
996
            all_insurers = get_all_insurers()
997
            for insurer in all_insurers:
998
                insurers.append(to_t_insurer(insurer))
6921 anupam.sin 999
            return insurers
6838 vikram.rag 1000
        finally:
1001
            close_session()
5944 mandeep.dh 1002
 
6845 amit.gupta 1003
    def getAllEntityTags(self):
1004
        try:
1005
            return get_all_entity_tags()
1006
        finally:
1007
            close_session()
1008
 
1009
 
4934 amit.gupta 1010
def is_valid(item):
1011
    if item.status in [status.ACTIVE, status.PAUSED, status.PAUSED_BY_RISK]:
4936 amit.gupta 1012
        if item.startDate:
1013
            return not(datetime.datetime.now() < item.startDate or item.sellingPrice == 0)
1014
        else:
1015
            return True
6256 rajveer 1016
    elif item.status == status.COMING_SOON:
1017
        return True
1018
    else:
1019
        return False