Subversion Repositories SmartDukaan

Rev

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