Subversion Repositories SmartDukaan

Rev

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