Subversion Repositories SmartDukaan

Rev

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