Subversion Repositories SmartDukaan

Rev

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