Subversion Repositories SmartDukaan

Rev

Rev 9299 | Rev 9621 | 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, \
9242 kshitij.so 12
    to_t_uri_mapping, to_t_banner_list, to_t_campaign,to_t_snapdeal_item,to_t_snapdeal_item_details
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, \
9242 kshitij.so 52
    add_or_update_snapdeal_item, get_snapdeal_item, get_all_snapdeal_items , get_snapdeal_items, \
53
    search_snapdeal_items , get_count_for_snapdeal_items , get_snapdeal_search_result_count, \
9456 vikram.rag 54
    get_active_banners_for_mobile_site, get_preffered_insurer_for_item, get_snapdealitem_by_skuatsnapdeal
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
 
9253 rajveer 493
    def markItemAsContentComplete(self, entityId, category, brand, modelName, modelNumber, isAndroid):
2080 rajveer 494
        """
495
        Parameters:
496
         - entityId
497
         - category
498
         - brand
499
         - modelName
500
         - modelNumber
9253 rajveer 501
         - isAndroid
2080 rajveer 502
        """
503
        try:
9253 rajveer 504
            return mark_item_as_content_complete(entityId, category, brand, modelName, modelNumber, isAndroid)
2080 rajveer 505
        finally:
506
            close_session()
766 rajveer 507
 
122 ashish 508
    def updateItem(self, item):
509
        """
510
        Parameters:
511
         - item
512
        """
513
        log_entry(self, "addItem called")
766 rajveer 514
        try:
515
            return update_item(item)
516
        finally:
517
            close_session()
518
 
626 chandransh 519
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 520
        try:
521
            if total_items is None:
522
                total_items = self.best_sellers_limit
523
            stop_index = start_index + total_items
524
            return get_best_sellers(start_index, stop_index, category)
525
        finally:
526
            close_session()
527
 
1926 rajveer 528
    def getBestSellersCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 529
        """
530
        Parameters:
531
         - beginIndex
532
         - totalItems
533
        """
766 rajveer 534
        try:
535
            if total_items is None:
536
                total_items = self.best_sellers_limit
537
            stop_index = start_index + total_items
1926 rajveer 538
            return get_best_sellers_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 539
        finally:
540
            close_session()
541
 
591 chandransh 542
    def getBestSellersCount(self, ):
766 rajveer 543
        try:
2093 chandransh 544
            return get_best_sellers_count()
766 rajveer 545
        finally:
546
            close_session()
547
 
591 chandransh 548
    def getBestDeals(self,):
766 rajveer 549
        try:
550
            return get_best_deals()
551
        finally:
552
            close_session()
553
 
1926 rajveer 554
    def getBestDealsCatalogIds(self, start_index, total_items, brand,category=-1):
548 rajveer 555
        """
556
        Parameters:
557
         - beginIndex
558
         - totalItems
559
        """
766 rajveer 560
        try:
561
            stop_index = start_index + total_items
1926 rajveer 562
            return get_best_deals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 563
        finally:
564
            close_session()
565
 
591 chandransh 566
    def getBestDealsCount(self, ):
766 rajveer 567
        try:
568
            return get_best_deals_count()
569
        finally:
570
            close_session()
571
 
5217 amit.gupta 572
    def getComingSoon(self,):
573
        try:
574
            return get_coming_soon()
575
        finally:
576
            close_session()
577
 
578
    def getComingSoonCatalogIds(self, start_index, total_items, brand,category=-1):
579
        """
580
        Parameters:
581
         - beginIndex
582
         - totalItems
583
        """
584
        try:
585
            stop_index = start_index + total_items
586
            return get_coming_soon_catalog_ids(start_index, stop_index, brand, category)
587
        finally:
588
            close_session()
589
 
590
    def getComingSoonCount(self, ):
591
        try:
592
            return get_coming_soon_count()
593
        finally:
594
            close_session()
595
 
591 chandransh 596
    def getLatestArrivals(self,):
766 rajveer 597
        try:
598
            return get_latest_arrivals(self.latest_arrivals_limit)
599
        finally:
600
            close_session()
2975 chandransh 601
 
602
    def getLatestArrivalsCatalogIds(self, beginIndex, totalItems, brand, categories):
548 rajveer 603
        """
2975 chandransh 604
        Returns the list of catalog ids of latest arrivals in the given categories of the given brand.
605
        To ignore the categories, pass the list as empty. To ignore brand, pass it as null.
606
 
548 rajveer 607
        Parameters:
608
         - beginIndex
609
         - totalItems
2975 chandransh 610
         - brand
611
         - categories
548 rajveer 612
        """
766 rajveer 613
        try:
2975 chandransh 614
            if beginIndex > self.latest_arrivals_limit:
766 rajveer 615
                return []
2975 chandransh 616
            stopIndex = beginIndex + totalItems
617
            if stopIndex > self.latest_arrivals_limit:
618
                stopIndex = self.latest_arrivals_limit
619
            return get_latest_arrivals_catalog_ids(beginIndex, stopIndex, brand, categories)
766 rajveer 620
        finally:
621
            close_session()
622
 
591 chandransh 623
    def getLatestArrivalsCount(self, ):
766 rajveer 624
        try:
625
            return get_latest_arrivals_count(self.latest_arrivals_limit)
626
        finally:
627
            close_session()
591 chandransh 628
 
1155 rajveer 629
    def generateNewEntityID(self, ):
630
        try:
631
            return generate_new_entity_id()
632
        finally:
633
            close_session()
634
 
635 rajveer 635
    def putCategoryObject(self, object):
636
        """
637
        Parameters:
638
         - object
639
        """
766 rajveer 640
        try:
641
            return put_category_object(object)
642
        finally:
643
            close_session()
644
 
635 rajveer 645
    def getCategoryObject(self, ):
766 rajveer 646
        try:
647
            return get_category_object()
648
        finally:
649
            close_session()
1970 rajveer 650
 
651
    def addCategory(self, category):
652
        """
653
        Parameters:
654
         - category
655
        """
656
        try:
657
            return add_category(category)
658
        finally:
659
            close_session()
660
 
661
    def getCategory(self, id):
662
        """
663
        Parameters:
664
         - id
665
        """
666
        try:
667
            return to_t_category(get_category(id))
668
        finally:
669
            close_session()
670
 
671
    def getAllCategories(self, ):
672
        try:
673
            categories = get_all_categories()
674
            return [to_t_category(category) for category in categories]
675
        finally:
676
            close_session()
4432 rajveer 677
 
4423 phani.kuma 678
    def getAllSimilarItems(self, itemId):
679
        """
680
        Returns list of similar items.
681
 
682
        Parameters:
683
         - itemId
684
        """
4432 rajveer 685
        try:
686
            return get_all_similar_items_catalog_ids(itemId)
687
        finally:
688
            close_session()
689
 
4423 phani.kuma 690
    def addSimilarItem(self, itemId, catalogItemId):
691
        """
692
        add similar item.
693
 
694
        Parameters:
695
         - itemId, catalogItemId
696
        """
697
        try:
698
            return add_similar_item_catalog_id(itemId, catalogItemId)
699
        finally:
700
            close_session()
701
 
702
    def deleteSimilarItem(self, itemId, catalogItemId):
703
        """
704
        delete similar items.
705
 
706
        Parameters:
707
         - itemId, catalogItemIds
708
        """
709
        try:
710
            return delete_similar_item_catalog_id(itemId, catalogItemId)
711
        finally:
712
            close_session()
4762 phani.kuma 713
 
5504 phani.kuma 714
    def getAllItemVouchers(self, itemId):
715
        """
716
        Returns list of vouchers.
717
 
718
        Parameters:
719
         - itemId
720
        """
721
        try:
722
            vouchers = get_all_vouchers_for_item(itemId)
723
            return [to_t_voucher_item_mapping(voucher) for voucher in vouchers]
724
        finally:
725
            close_session()
726
 
727
    def getVoucherAmount(self, itemId, voucherType):
728
        """
729
        Returns voucher amount.
730
 
731
        Parameters:
732
         - itemId, voucherType
733
        """
734
        try:
735
            return get_voucher_amount(itemId, voucherType)
736
        finally:
737
            close_session()
738
 
739
    def addupdateVoucherForItem(self, catalogItemId, voucherType, voucherAmount):
740
        """
741
        add or update voucher for item.
742
 
743
        Parameters:
744
         - catalogItemId, voucherType, voucherAmount
745
        """
746
        try:
747
            return add_update_voucher_for_item(catalogItemId, voucherType, voucherAmount)
748
        finally:
749
            close_session()
750
 
751
    def deleteVoucherForItem(self, catalogItemId, voucherType):
752
        """
753
        delete voucher for item.
754
 
755
        Parameters:
756
         - catalogItemId, voucherType
757
        """
758
        try:
759
            return delete_voucher_for_item(catalogItemId, voucherType)
760
        finally:
761
            close_session()
2116 ankur.sing 762
 
4725 phani.kuma 763
    def checkSimilarItem(self, brand, modelNumber, modelName, color):
2116 ankur.sing 764
        """
4725 phani.kuma 765
        Checks if similar item exists (with same Brand, ModelNumber, ModelName, Color)
2116 ankur.sing 766
        If yes, returns the itemId else returns 0
767
 
768
        Parameters:
769
         - brand
770
         - modelNumber
4725 phani.kuma 771
         - modelName
2116 ankur.sing 772
         - color
773
        """
774
        try:
4725 phani.kuma 775
            return check_similar_item(brand, modelNumber, modelName, color)
2116 ankur.sing 776
        finally:
777
            close_session()
778
 
2286 ankur.sing 779
    def changeItemRiskyFlag(self, itemId, risky):
780
        """
781
        Marks/Unmarks an item as risky. This flag is used for automatic marking of an item as INACTIVE in case of zero inventory.
782
 
783
        Parameters:
784
         - itemId
785
         - risky
786
        """
787
        try:
788
            change_risky_flag(itemId, risky)
789
        finally:
790
            close_session()
2116 ankur.sing 791
 
4957 phani.kuma 792
    def getItemsForMasterSheet(self, category, brand):
2358 ankur.sing 793
        """
4957 phani.kuma 794
        Returns list of items with any status except PHASED_OUT and filtered by category, brand.
2358 ankur.sing 795
 
796
        Parameters:
4762 phani.kuma 797
         - category
4957 phani.kuma 798
         - vendor
799
         - brand
2358 ankur.sing 800
        """
801
        try:
4957 phani.kuma 802
            return [to_t_item(item) for item in get_items_for_mastersheet(category, brand)]
2358 ankur.sing 803
        finally:
804
            close_session()
805
 
806
    def getItemsByRiskyFlag(self, ):
807
        """
808
        Returns list of items marked as risky.
809
        """
810
        try:
811
            return [to_t_item(item) for item in get_risky_items()]
812
        finally:
813
            close_session()
2809 rajveer 814
 
815
    def getSimilarItemsCatalogIds(self, beginIndex, totalItems, itemId):
816
        """
817
        Returns list of catalog ids of items with same similarity index as of the given itemId
818
 
819
        Parameters:
820
         - beginIndex
821
         - totalItems
822
         - itemId
823
        """
824
        try:
825
            return get_similar_items_catalog_ids(beginIndex, beginIndex+totalItems, itemId)
826
        finally:
827
            close_session()
3079 rajveer 828
 
829
    def addProductNotification(self, itemId, email):
830
        """
831
        Add user requests for out of stock items. Once user will ask for notify me an entry will
832
 
833
        Parameters:
834
        - itemId
835
        - email
836
        """
837
        try:
838
            return add_product_notification(itemId, email)
839
        finally:
840
            close_session()
2358 ankur.sing 841
 
3086 rajveer 842
    def sendProductNotifications(self, ):
843
        """
844
        Send the product notifications to the users for items which has stock.
845
        """
846
        try:
847
            return send_product_notifications()
848
        finally:
849
            close_session()
3557 rajveer 850
 
851
 
852
    def getAllSources(self, ):
853
        """
854
        Return list of all sources
855
        """
856
        try:
857
            return get_all_sources()
858
        finally:
859
            close_session()
860
 
861
    def getItemPricingBySource(self, itemId, sourceId):
862
        """
863
        Returns the pricing information of an item. If no information is found, exception will be thrown.
3376 rajveer 864
 
3557 rajveer 865
        Parameters:
866
         - itemId
867
         - sourceId
868
        """
869
        try:
870
            return to_t_source_item_pricing(get_item_pricing_by_source(itemId, sourceId))
871
        finally:
872
            close_session()
873
 
874
    def addSourceItemPricing(self, sourceItemPricing):
875
        """
876
        Adds prices to be displayed corresponding to the item if user comes from a source.
877
 
878
        Parameters:
879
         - sourceItemPricing
880
        """
881
        try:
882
            add_source_item_pricing(sourceItemPricing)
883
        finally:
884
            close_session()
885
 
886
    def getAllSourcePricing(self, itemId):
887
        """
888
        Returns the list of source pricing information of an item.
889
        Raises an exception if item not found corresponding to itemId
890
 
891
        Parameters:
892
         - itemId
893
        """
894
        try:
895
            return [to_t_source_item_pricing(source_item_pricing) for source_item_pricing in get_all_source_pricing(itemId)]
896
#        return [to_t_item(item) for item in get_risky_items()]
897
        finally:
898
            close_session()
899
 
900
    def getItemForSource(self, item_id, sourceId):
901
        """
902
        Parameters:
903
         - item_id
904
         - sourceId
905
        """
906
        try:
907
            return to_t_item(get_item_for_source(item_id, sourceId))
908
        finally:
909
            close_session()
3872 chandransh 910
 
911
    def searchItemsInRange(self, searchTerms, offset, limit):
912
        """
913
        Searches items matching the the given terms in the catalog
3557 rajveer 914
 
3872 chandransh 915
        Parameters:
916
         - searchTerms
917
        """
918
        try:
919
            return [to_t_item(item) for item in search_items(searchTerms, offset, limit)]
920
        finally:
921
            close_session()
922
 
923
    def getSearchResultCount(self, searchTerms):
924
        """
925
        Gets the count of search results for the given search terms so that the user can go through all the pages.
926
 
927
        Parameters:
928
         - searchTerms
929
        """
930
        try:
931
            return get_search_result_count(searchTerms)
932
        finally:
933
            close_session()
934
 
4295 varun.gupt 935
    def getProductNotifications(self, startDateTime):
936
        '''
937
        Returns a list of Product Notification objects each representing user requests for notification
938
        '''
939
        try:
940
            return [to_t_product_notification_request(notification) for notification in get_product_notifications(to_py_date(startDateTime))]
941
        finally:
942
            close_session()
943
 
7897 amar.kumar 944
    def getProductNotificationRequestCount(self, startDateTime,  categoryId):
4295 varun.gupt 945
        '''
946
        Returns list of items and the counts of product notification requests
947
        '''
948
        try:
7897 amar.kumar 949
            notification_request_counts = [(notification.item, count) for notification, count in get_product_notification_request_count(to_py_date(startDateTime), categoryId)]
4295 varun.gupt 950
 
951
            return [to_t_product_notification_request_count(count) for count in notification_request_counts]
952
 
953
        finally:
954
            close_session()
955
 
3376 rajveer 956
    def isAlive(self, ):
957
        """
958
        For checking weather service is active alive or not. It also checks connectivity with database
959
        """
960
        try:
961
            return is_alive()
962
        finally:
963
            close_session()
964
 
766 rajveer 965
    def closeSession(self, ):
3376 rajveer 966
        """
967
        For closing the open session in sqlalchemy
968
        """
4332 anupam.sin 969
        close_session()
970
 
4649 phani.kuma 971
    def addAuthorizationLog(self, itemId, username, reason):
972
        """
973
        add a log to authorize table.
974
 
975
        Parameters:
976
         - itemId, username, reason
977
        """
978
        try:
979
            return add_authorization_log_for_item(itemId, username, reason)
980
        finally:
4934 amit.gupta 981
            close_session()
5110 mandeep.dh 982
 
7330 amit.gupta 983
    def getVatPercentageForItem(self, itemId, stateId, price):
6039 amit.gupta 984
        """
985
        get Vat percentage for item for item
986
        """
987
        try:
7340 amit.gupta 988
            return get_vat_percentage_for_item(itemId, stateId, price)
6039 amit.gupta 989
        finally:
990
            close_session()
991
 
992
    def getVatAmountForItem(self, itemId, price):
993
        """
994
        get Vat amount for item
995
        """
996
        try:
997
            return get_vat_amount_for_item(itemId,price)
998
        finally:
999
            close_session()
1000
 
5944 mandeep.dh 1001
    def validateRiskyStatus(self, itemId):
5712 mandeep.dh 1002
        """
5944 mandeep.dh 1003
        Check wether item is risky and change status if inventory is not available for risky items
5712 mandeep.dh 1004
        """
1005
        try:
5944 mandeep.dh 1006
            return check_risky_item(itemId)
5712 mandeep.dh 1007
        finally:
1008
            close_session()
6532 amit.gupta 1009
 
1010
    def getAllIgnoredInventoryUpdateItemsList(self,offset, limit):
1011
        try:
1012
            return get_all_ignored_inventoryupdate_items_list(offset,limit)
1013
        finally:
6921 anupam.sin 1014
            close_session()
6805 anupam.sin 1015
 
6921 anupam.sin 1016
    def getInsuranceAmount(self, itemId, price, insurerId, quantity):
6805 anupam.sin 1017
        try:
6921 anupam.sin 1018
            return get_insurance_amount(itemId, price, insurerId, quantity)
6805 anupam.sin 1019
        finally:
6921 anupam.sin 1020
            close_session()
6805 anupam.sin 1021
 
1022
    def getInsurer(self, insurerId):
1023
        try:
1024
            return to_t_insurer(get_insurer(insurerId))
1025
        finally:
6838 vikram.rag 1026
            close_session()
1027
 
1028
    def getAllInsurers(self):
1029
        try:
1030
            insurers = []
1031
            all_insurers = get_all_insurers()
1032
            for insurer in all_insurers:
1033
                insurers.append(to_t_insurer(insurer))
6921 anupam.sin 1034
            return insurers
6838 vikram.rag 1035
        finally:
1036
            close_session()
9299 kshitij.so 1037
 
1038
    def getPrefferedInsurerForItem(self, itemId, insurerType):
1039
        try:
1040
            return get_preffered_insurer_for_item(itemId, insurerType)
1041
        finally:
1042
            close_session()
6962 rajveer 1043
 
1044
    def updateInsuranceDeclaredAmount(self, insurerId, amount):
1045
        try:
1046
            update_insurance_declared_amount(insurerId, amount)
1047
        finally:
1048
            close_session()
5944 mandeep.dh 1049
 
6845 amit.gupta 1050
    def getAllEntityTags(self):
1051
        try:
1052
            return get_all_entity_tags()
1053
        finally:
1054
            close_session()
1055
 
7190 amar.kumar 1056
    def getFreebieForItem(self, itemId):
1057
        try:
1058
            return get_freebie_for_item(itemId)
1059
        finally:
1060
            close_session()
1061
 
1062
    def addOrUpdateFreebieForItem(self, freebieItem):
1063
        try:
1064
            return add_or_update_freebie_for_item(freebieItem)
1065
        finally:
1066
            close_session()
7291 vikram.rag 1067
 
7272 amit.gupta 1068
    def addOrUpdateBrandInfo(self, brandInfo):
1069
        try:
1070
            return add_or_update_brand_info(brandInfo)
1071
        finally:
1072
            close_session()
1073
 
1074
    def getBrandInfo(self):
1075
        try:
1076
            return get_brand_info()
1077
        finally:
1078
            close_session()
1079
 
7256 rajveer 1080
    def getStorePricing(self, itemId):
1081
        try:
1082
            return get_store_pricing(itemId)
1083
        finally:
1084
            close_session()
1085
 
7306 rajveer 1086
    def getStorePricings(self, itemIds):
1087
        try:
1088
            return [get_store_pricing(itemId) for itemId in itemIds]
1089
        finally:
1090
            close_session()
1091
 
7382 rajveer 1092
    def updateStorePricing(self, sp, allColors):
7265 rajveer 1093
        try:
7382 rajveer 1094
            return update_store_pricing(sp, allColors)
7265 rajveer 1095
        finally:
1096
            close_session()
7190 amar.kumar 1097
 
7281 kshitij.so 1098
    def getAmazonItemDetails(self, amazonItemId):
1099
        try:
8362 kshitij.so 1100
            result = to_t_Amazonlisted(get_amazon_item_details(amazonItemId))
7281 kshitij.so 1101
        finally:
1102
            close_session()
1103
            return result
1104
 
8168 kshitij.so 1105
    def updateAmazonItemDetails(self,amazonlisted):
7281 kshitij.so 1106
        try:
8168 kshitij.so 1107
            update_amazon_item_details(amazonlisted)
7281 kshitij.so 1108
        finally:
1109
            close_session()
1110
 
1111
    def addAmazonItem(self,amazonlisted):
1112
        try:
1113
            print amazonlisted
1114
            add_amazon_item(amazonlisted)
1115
        finally:
1116
            close_session()
1117
 
7291 vikram.rag 1118
    def getAsinItems(self):
1119
        try:
1120
            items = get_asin_items()
1121
            ret_items = []
1122
            for item in items:
1123
                if item:
1124
                    ret_items.append(to_t_item(item))
1125
            return ret_items
1126
        finally:
1127
            close_session()
7281 kshitij.so 1128
 
7291 vikram.rag 1129
    def getAllFbaListedItems(self):
1130
        try:
1131
            items = get_all_fba_listed_items()
1132
            ret_items = []
1133
            for item in items:
1134
                if item:
1135
                    ret_items.append(to_t_Amazonlisted(item))
1136
            return ret_items
1137
        finally:
1138
            close_session()
1139
 
1140
    def getAllNonFbaListedItems(self):
1141
        try:
1142
            items = get_all_nonfba_listed_items()
1143
            ret_items = []
1144
            for item in items:
1145
                if item:
1146
                    ret_items.append(to_t_Amazonlisted(item))
1147
            return ret_items
1148
        finally:
1149
            close_session()
1150
 
1151
 
1152
    def getAllAmazonListedItems(self):      
1153
        try:
1154
            amazonlisteditems = []
1155
            all_listed = get_all_amazon_listed_items()
1156
            for amazonlisteditem in all_listed:
1157
                amazonlisteditems.append(to_t_Amazonlisted(amazonlisteditem))
1158
            return amazonlisteditems
1159
        finally:
8139 kshitij.so 1160
            close_session()           
7291 vikram.rag 1161
 
7460 kshitij.so 1162
    def updateItemInventory(self,itemId,holdInventory,defaultInventory):
1163
        try:
1164
            update_item_inventory(itemId,holdInventory,defaultInventory)
1165
            return True
1166
        finally:
1167
            close_session()
7291 vikram.rag 1168
 
7770 kshitij.so 1169
    def updateTimestampForAmazonFeeds(self,feedType,skuList,timestamp):
1170
        try:
1171
            return update_timestamp_for_amazon_feeds(feedType,skuList,timestamp)
1172
        finally:
1173
            close_session()
1174
 
7897 amar.kumar 1175
    def  getAllParentCategories(self):
1176
        try:
1177
            categories = get_all_parent_categories()
1178
            return [to_t_category(category) for category in categories]
1179
        finally:
1180
            close_session()
1181
 
7977 kshitij.so 1182
    def addPageViewEvent(self,pageEvent):
1183
        try:
1184
            print "csh"
1185
            add_page_view_event(pageEvent)
1186
        finally:
1187
            close_session()
1188
 
1189
    def addCartEvent(self,cartEvent):
1190
        try:
1191
            add_cart_event(cartEvent)
1192
        finally:
1193
            close_session()
8182 amar.kumar 1194
 
1195
    def addEbayItem(self, ebayItem):
1196
        try:
1197
            insert_ebay_item(ebayItem)
1198
        finally:
1199
            close_session()
1200
 
1201
    def getEbayItem(self, listingId):
1202
        try:
1203
            return to_t_ebay_item(get_ebay_item(listingId))
1204
        finally:
1205
            close_session()
7977 kshitij.so 1206
 
8182 amar.kumar 1207
    def updateEbayItem(self, ebayItem):
1208
        try:
1209
            update_ebay_item(ebayItem)
1210
        finally:
1211
            close_session()
1212
 
8168 kshitij.so 1213
    def updateAmazonAttributesInBulk(self,amazonlisted):
1214
        try:
1215
            return update_amazon_attributes_in_bulk(amazonlisted)
1216
        finally:
1217
            close_session()
8139 kshitij.so 1218
 
8379 vikram.rag 1219
    def getAllItemstoListOnFba(self):
1220
        try:
1221
            fba_items = []
1222
            for item in get_all_items_to_list_on_fba():
1223
                fba_items.append(to_t_Amazonlisted(item))
1224
            return fba_items
1225
        finally:
1226
            close_session()
1227
 
1228
    def getAllItemstoListOnNonFba(self):
1229
        try:
1230
            non_fba_items = []
1231
            for item in get_all_items_to_list_on_nonfba():
1232
                non_fba_items.append(to_t_Amazonlisted(item))
1233
            return non_fba_items
1234
        finally:
1235
            close_session()
8619 kshitij.so 1236
 
1237
    def getAmazonListedItems(self,offset,limit):
1238
        try:
1239
            amazonlisteditems = []
1240
            all_listed = get_amazon_listed_items(offset,limit)
1241
            for amazonlisteditem in all_listed:
1242
                amazonlisteditems.append(to_t_Amazonlisted(amazonlisteditem))
1243
        finally:
1244
            close_session()
1245
            return amazonlisteditems
1246
 
1247
    def searchAmazonItems(self,searchTerms,offset,limit):
1248
        try:
1249
            amazonlisteditems = []
1250
            search_result = search_amazon_items(searchTerms,offset,limit)
1251
            for amazonlisteditem in search_result:
1252
                amazonlisteditems.append(to_t_Amazonlisted(amazonlisteditem))
1253
        finally:
1254
            close_session()
1255
            return amazonlisteditems
1256
 
1257
    def getAmazonSearchResultCount(self,searchTerms):
1258
        try:
1259
            return get_amazon_search_result_count(searchTerms)
1260
        finally:
1261
            close_session()
1262
 
1263
    def getCountForAmazonlistedItems(self):
1264
        try:
1265
            return get_count_for_amazonlisted_items()
1266
        finally:
1267
            close_session()
1268
 
1269
    def updateAsin(self,amazonAsinMap):
1270
        try:
1271
            update_asin(amazonAsinMap)
1272
        finally:
1273
            close_session()
8168 kshitij.so 1274
 
8739 vikram.rag 1275
    def addOrUpdateSnapdealItem(self,snapdealitem):
1276
        try:
1277
            return add_or_update_snapdeal_item(snapdealitem)
1278
        finally:    
1279
            close_session()
1280
 
1281
    def getSnapdealItem(self,item_id):
1282
        try:
1283
            return to_t_snapdeal_item(get_snapdeal_item(item_id))
1284
        finally:
1285
            close_session()
9242 kshitij.so 1286
 
1287
    def getSnapdealItemDetails(self,item_id):
1288
        try:
1289
            return to_t_snapdeal_item_details(get_snapdeal_item(item_id))
1290
        finally:
1291
            close_session()
8739 vikram.rag 1292
 
1293
    def getAllSnapdealItems(self):
1294
        try:
1295
            items = get_all_snapdeal_items() 
9242 kshitij.so 1296
            return [to_t_snapdeal_item_details(item) for item in items]
8739 vikram.rag 1297
        finally:
9242 kshitij.so 1298
            close_session()
8739 vikram.rag 1299
 
9242 kshitij.so 1300
    def getSnapdealItems(self,offset,limit):
1301
        try:
1302
            items = get_snapdeal_items(offset,limit) 
1303
            return [to_t_snapdeal_item_details(item) for item in items]
1304
        finally:
1305
            close_session()
1306
 
1307
    def searchSnapdealItems(self,searchterm,offset,limit):
1308
        try:
1309
            snapdealitems = []
1310
            search_result = search_snapdeal_items(searchterm,offset,limit)
1311
            for snapdealitem in search_result:
1312
                snapdealitems.append(to_t_snapdeal_item_details(snapdealitem))
1313
        finally:
1314
            close_session()
1315
            return snapdealitems
1316
 
1317
    def getCountForSnapdealItems(self):
1318
        try:
1319
            return get_count_for_snapdeal_items()
1320
        finally:
1321
            close_session()
1322
 
1323
 
1324
    def getSnapdealSearchResultCount(self,searchterms):
1325
        try:
1326
            return get_snapdeal_search_result_count(searchterms)
1327
        finally:
1328
            close_session()
1329
 
9456 vikram.rag 1330
    def getSnapdealItembySkuAtSnapdeal(self,skuatsnapdeal):
1331
        try:
1332
            return to_t_snapdeal_item(get_snapdealitem_by_skuatsnapdeal(skuatsnapdeal))
1333
        finally:
1334
            close_session()        
1335
 
4934 amit.gupta 1336
def is_valid(item):
1337
    if item.status in [status.ACTIVE, status.PAUSED, status.PAUSED_BY_RISK]:
4936 amit.gupta 1338
        if item.startDate:
1339
            return not(datetime.datetime.now() < item.startDate or item.sellingPrice == 0)
1340
        else:
1341
            return True
6256 rajveer 1342
    elif item.status == status.COMING_SOON:
1343
        return True
1344
    else:
7190 amar.kumar 1345
        return False
7438 amit.gupta 1346
 
7190 amar.kumar 1347
 
1348
if __name__ == '__main__':
1349
    items = get_all_alive_items()
1350
    ret_items = []
1351
    for item in items:
1352
        if item:
1353
            ret_items.append(to_t_item(item))
1354
    print ret_items