Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | 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
'''
6
from shop2020.model.v1.catalog.impl import DataService
7
from shop2020.utils.Utils import log_entry
8
from shop2020.model.v1.catalog.impl.DataAcessors import add_item, add_warehouse,\
9
    update_inventory, retire_warehouse, retire_item, change_item_status,\
635 rajveer 10
    get_item, get_all_items, get_all_items_by_status, get_item_inventoy,\
643 chandransh 11
    get_item_availability_for_warehouse, get_item_availability_for_location, get_all_warehouses_by_status,\
122 ashish 12
    get_Warehouse, get_all_warehouses_for_item, get_all_items_for_warehouse,\
766 rajveer 13
    update_item, start_item_on, close_session, \
635 rajveer 14
    retire_item_on, get_item_inventory_by_item_id, get_items_by_catalog_id,\
1308 chandransh 15
    get_best_deals, get_best_deals_catalog_ids, get_best_deals_count, get_best_sellers, get_latest_arrivals, get_latest_arrivals_catalog_ids, get_latest_arrivals_count,\
635 rajveer 16
    is_active, get_best_sellers_catalog_ids, get_best_sellers_count, put_category_object,\
871 chandransh 17
    get_category_object, mark_item_as_content_complete,\
1341 chandransh 18
    reserve_item_in_warehouse, reduce_reservation_count, generate_new_entity_id,\
1991 ankur.sing 19
    get_all_item_pricing, update_vendor_pricing, \
2035 rajveer 20
    get_item_pricing, get_category, get_all_categories, add_category,\
2065 ankur.sing 21
    get_item_status_description, get_all_vendors
122 ashish 22
from shop2020.model.v1.catalog.impl.Convertors import to_t_item,\
2065 ankur.sing 23
    to_t_item_inventory, to_t_warehouse, to_t_vendor_item_pricing, to_t_category,\
24
    to_t_vendor
122 ashish 25
from shop2020.thriftpy.model.v1.catalog.ttypes import status,\
26
    InventoryServiceException
599 chandransh 27
from shop2020.config.client.ConfigClient import ConfigClient
122 ashish 28
 
29
 
30
class InventoryServiceHandler:
31
    '''
32
    classdocs
33
    '''
599 chandransh 34
 
1249 chandransh 35
    def __init__(self, dbname='catalog'):
122 ashish 36
        '''
37
        Constructor
38
        '''
1249 chandransh 39
        DataService.initialize(dbname)
599 chandransh 40
        try:
621 chandransh 41
            config_client = ConfigClient()
42
            self.latest_arrivals_limit = int(config_client.get_property("LATEST_ARRIVALS_LIMIT"));
43
            self.best_sellers_limit = int(config_client.get_property("BEST_SELLERS_LIMIT"))
599 chandransh 44
        except:
621 chandransh 45
            self.latest_arrivals_limit = 50
46
            self.best_sellers_limit = 50
122 ashish 47
 
48
    #DONE
49
    def addItem(self, item):
50
        """
51
        Availability and inventory attributes
52
 
53
        Parameters:
54
         - item
55
        """
56
        log_entry(self, "addItem called")
785 rajveer 57
        try:
58
            return add_item(item)
59
        finally:
60
            close_session()
122 ashish 61
 
62
    def addWarehouse(self, warehouse):
63
        """
64
        Parameters:
65
         - warehouse
66
        """
67
        log_entry(self, "addWarehouse called")
785 rajveer 68
        try:
69
            return add_warehouse(warehouse)
70
        finally:
71
            close_session()
122 ashish 72
 
483 rajveer 73
 
74
    def updateInventory(self, warehouse_id, timestamp, availability):
122 ashish 75
        """
76
        Parameters:
77
         - warehouse_id
78
         - timestamp
483 rajveer 79
         - availability
122 ashish 80
        """
81
        log_entry(self, "update Inventory called")
785 rajveer 82
        try:
83
            return update_inventory(warehouse_id, timestamp, availability)
84
        finally:
85
            close_session()
86
 
87
 
635 rajveer 88
    def isActive(self, item_id):
563 chandransh 89
        """
90
        Parameters:
635 rajveer 91
         - item_id
563 chandransh 92
        """
785 rajveer 93
        try:
94
            return is_active(item_id)
95
        finally:
96
            close_session()
122 ashish 97
 
2035 rajveer 98
    def getItemStatusDescription(self, itemId):
99
        """
100
        Parameters:
101
         - itemId
102
        """
103
        try:
104
            return get_item_status_description(itemId)
105
        finally:
106
            close_session()
107
 
122 ashish 108
    def retireWarehouse(self, warehouse_id):
109
        """
110
        Parameters:
111
         - warehouse_id
112
        """
113
        log_entry(self, "retire warehouse called")
785 rajveer 114
        try:
115
            return retire_warehouse(warehouse_id)
116
        finally:
117
            close_session()
118
 
122 ashish 119
 
120
    def retireItem(self, item_id):
121
        """
122
        Parameters:
123
        - item_id
124
        """
125
        log_entry(self, "retire item called")
785 rajveer 126
        try:
127
            return retire_item(item_id)
128
        finally:
129
            close_session()
122 ashish 130
 
131
    def startItemOn(self, item_id, timestamp):
132
        """
133
        Parameters:
134
         - item_id
135
         - timestamp
136
        """
785 rajveer 137
        try:
138
            start_item_on(item_id, timestamp)
139
        finally:
140
            close_session()
122 ashish 141
 
142
    def retireItemOn(self, item_id, timestamp):
143
        """
144
        Parameters:
145
         - item_id
146
         - timestamp
147
        """
785 rajveer 148
        try:
149
            retire_item_on(item_id, timestamp)
150
        finally:
151
            close_session()
122 ashish 152
 
153
    def changeItemStatus(self, item_id, timestamp, newstatus):
154
        """
155
        Parameters:
156
         - item_id
157
         - timestamp
158
         - newstatus
159
        """
160
        log_entry(self, "change item status called")
785 rajveer 161
        try:
162
            return change_item_status(item_id, newstatus)
163
        finally:
164
            close_session()
122 ashish 165
 
785 rajveer 166
 
122 ashish 167
    def getItem(self, item_id):
168
        """
169
        Parameters:
170
         - item_id
171
        """
172
        log_entry(self, "item requested")
785 rajveer 173
        try:
2065 ankur.sing 174
            item = to_t_item( get_item(item_id))
175
            return item
785 rajveer 176
        finally:
177
            close_session()
379 ashish 178
 
635 rajveer 179
    def getItemsByCatalogId(self, catalog_item_id):
379 ashish 180
        """
181
        Parameters:
182
        - catalog_item_id
183
        """
386 ashish 184
        log_entry(self, "item requested")
766 rajveer 185
        try:
186
            return get_items_by_catalog_id(catalog_item_id)
187
        finally:
188
            close_session()
122 ashish 189
 
483 rajveer 190
 
122 ashish 191
    def getAllItems(self, isActive):
192
        """
193
        Parameters:
194
         - isActive
195
        """
196
        log_entry(self, "all items requested")
766 rajveer 197
        try:
198
            items = get_all_items(isActive)
199
            ret_items = []
200
            for item in items:
201
                if item:
202
                    ret_items.append(to_t_item(item))
203
            return ret_items
204
        finally:
205
            close_session()
206
 
122 ashish 207
    def getAllItemsByStatus(self, itemStatus):
208
        """
209
        Parameters:
210
         - itemStatus
211
        """
212
        log_entry(self, "all items requested")
766 rajveer 213
        try:
214
            items = get_all_items_by_status(itemStatus)
215
            ret_items = []
216
            for item in items:
217
                if item:
218
                    ret_items.append(to_t_item(item))
219
            return ret_items
220
        finally:
221
            close_session()
122 ashish 222
 
223
    def getItemInventory(self, item_id):
224
        """
225
        Parameters:
226
        - item_id
227
        """
228
        log_entry(self, "item inventory requested")
766 rajveer 229
        try:
230
            inventory = get_item_inventoy(item_id)
231
            return to_t_item_inventory(inventory, item_id)
232
        finally:
233
            close_session()
122 ashish 234
 
635 rajveer 235
    def getItemInventoryByItemId(self, item_id):
236
        """
237
        Parameters:
238
         - item_id
239
        """
240
        log_entry(self, "item inventory requested")
766 rajveer 241
        try:
242
            inventory = get_item_inventory_by_item_id(item_id)
243
            return to_t_item_inventory(inventory, item_id)
244
        finally:
245
            close_session()
635 rajveer 246
 
247
    '''
379 ashish 248
    def getItemInventoryByCatalogId(self, item_id):
249
        """
250
        Parameters:
251
         - item_id
252
        """
383 ashish 253
        log_entry(self, "item inventory requested")
254
        inventory = get_item_inventory_by_catalog_id(item_id)
255
        return to_t_item_inventory(inventory, item_id)
635 rajveer 256
    '''
257
 
379 ashish 258
 
643 chandransh 259
    def getItemAvailabilityAtLocation(self, warehouse_loc, item_id):
260
        """
261
        Returns the id of the warehouse with the largest inventory of the item and the inventory size. The size of list will always be 2.
262
 
263
        Parameters:
264
         - warehouse_loc
265
         - item_id
266
        """
766 rajveer 267
        try:
268
            return get_item_availability_for_location(warehouse_loc, item_id)
269
        finally:
270
            close_session()
271
 
122 ashish 272
    def getItemAvailibilityAtWarehouse(self, warehouse_id, item_id):
273
        """
274
        Parameters:
275
         - warehouse_id
276
         - item_id
277
        """
278
        log_entry(self, "item availability at warehouse requested")
766 rajveer 279
        try:
280
            return get_item_availability_for_warehouse(warehouse_id, item_id)
281
        finally:
282
            close_session()
283
 
723 chandransh 284
    def markItemAsContentComplete(self, entityId):
285
        """
286
        Parameters:
287
         - entityId
288
        """
766 rajveer 289
        try:
290
            return mark_item_as_content_complete(entityId)
291
        finally:
292
            close_session()
293
 
122 ashish 294
    def getItemInventoryHistory(self, id, item_id, warehouse_id, from_date, to_date):
295
        """
296
        Parameters:
297
         - id
298
         - item_id
299
         - warehouse_id
300
         - from_date
301
         - to_date
302
        """
303
        pass
304
 
305
    def getAllWarehouses(self, isActive):
306
        """
307
        Parameters:
308
        - isActive
309
        """
766 rajveer 310
        try:
311
            if isActive:
312
                warehouses = get_all_warehouses_by_status(status.ACTIVE)
313
            else:
314
                warehouses = get_all_warehouses_by_status(None)
315
 
316
            ret_warehouses = []
317
 
318
            for warehouse in warehouses:
319
                ret_warehouses.append(to_t_warehouse(warehouse))
320
            return ret_warehouses
321
        finally:
322
            close_session()
323
 
122 ashish 324
    def getWarehouse(self, warehouse_id):
325
        """
326
        Parameters:
327
         - warehouse_id
328
        """
329
        log_entry(self, "get warehouse call")
766 rajveer 330
        try:
331
            warehouse = get_Warehouse(warehouse_id)
332
            if warehouse:
333
                return to_t_warehouse(warehouse)
334
            else:
335
                raise InventoryServiceException(101, "no such warehouse")
336
        finally:
337
            close_session()
338
 
122 ashish 339
    def getAllWarehousesForItem(self, item_id):
340
        """
341
        Parameters:
342
         - item_id
343
        """
344
        log_entry(self, "getting all warehouses for item")
766 rajveer 345
        try:
346
            all_warehouses = get_all_warehouses_for_item(item_id)
347
            t_warehouses = []
348
            for warehouse in all_warehouses:
349
                t_warehouses.append(to_t_warehouse(warehouse))
350
            return t_warehouses
351
        finally:
352
            close_session()
353
 
122 ashish 354
    def getAllItemsForWarehouse(self, warehouse_id):
355
        """
356
        Parameters:
357
         - warehouse_id
358
        """
359
        log_entry(self, "getting all items for warehouse")
766 rajveer 360
        try:
361
            all_items = get_all_items_for_warehouse(warehouse_id)
362
            t_items = []
363
            for item in all_items:
364
                t_items.append(to_t_item(item))
365
            return t_items
366
        finally:
367
            close_session()
871 chandransh 368
 
369
    def reserveItemInWarehouse(self, itemId, warehouseId, quantity):
370
        """
371
        Increases the reservation count for an item in a warehouse. Should always succeed normally.
372
 
373
        Parameters:
374
         - itemId
375
         - warehouseId
376
        """
377
        log_entry(self, "reserveItemInWarehouse called")
378
        try:
379
            return reserve_item_in_warehouse(itemId, warehouseId, quantity)
380
        finally:
381
            close_session()
382
 
383
    def reduceReservationCount(self, itemId, warehouseId, quantity):
384
        """
385
        Decreases the reservation count for an item in a warehouse. Should always succeed normally.
386
 
387
        Parameters:
388
         - itemId
389
         - warehouseId
390
        """
391
        log_entry(self, "reduceReservationCount called")
392
        try:
393
            return reduce_reservation_count(itemId, warehouseId, quantity)
394
        finally:
395
            close_session()
766 rajveer 396
 
122 ashish 397
    def updateItem(self, item):
398
        """
399
        Parameters:
400
         - item
401
        """
402
        log_entry(self, "addItem called")
766 rajveer 403
        try:
404
            return update_item(item)
405
        finally:
406
            close_session()
407
 
626 chandransh 408
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 409
        try:
410
            if total_items is None:
411
                total_items = self.best_sellers_limit
412
            stop_index = start_index + total_items
413
            return get_best_sellers(start_index, stop_index, category)
414
        finally:
415
            close_session()
416
 
1926 rajveer 417
    def getBestSellersCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 418
        """
419
        Parameters:
420
         - beginIndex
421
         - totalItems
422
        """
766 rajveer 423
        try:
424
            if total_items is None:
425
                total_items = self.best_sellers_limit
426
            stop_index = start_index + total_items
1926 rajveer 427
            return get_best_sellers_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 428
        finally:
429
            close_session()
430
 
591 chandransh 431
    def getBestSellersCount(self, ):
766 rajveer 432
        try:
433
            return get_best_sellers_count(None)
434
        finally:
435
            close_session()
436
 
591 chandransh 437
    def getBestDeals(self,):
766 rajveer 438
        try:
439
            return get_best_deals()
440
        finally:
441
            close_session()
442
 
1926 rajveer 443
    def getBestDealsCatalogIds(self, start_index, total_items, brand,category=-1):
548 rajveer 444
        """
445
        Parameters:
446
         - beginIndex
447
         - totalItems
448
        """
766 rajveer 449
        try:
450
            stop_index = start_index + total_items
1926 rajveer 451
            return get_best_deals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 452
        finally:
453
            close_session()
454
 
591 chandransh 455
    def getBestDealsCount(self, ):
766 rajveer 456
        try:
457
            return get_best_deals_count()
458
        finally:
459
            close_session()
460
 
591 chandransh 461
    def getLatestArrivals(self,):
766 rajveer 462
        try:
463
            return get_latest_arrivals(self.latest_arrivals_limit)
464
        finally:
465
            close_session()
466
 
1926 rajveer 467
    def getLatestArrivalsCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 468
        """
469
        Parameters:
470
         - beginIndex
471
         - totalItems
472
        """
766 rajveer 473
        try:
474
            if start_index > self.latest_arrivals_limit:
475
                return []
476
            stop_index = start_index + total_items
477
            if stop_index > self.latest_arrivals_limit:
478
                stop_index = self.latest_arrivals_limit
1926 rajveer 479
            return get_latest_arrivals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 480
        finally:
481
            close_session()
482
 
591 chandransh 483
    def getLatestArrivalsCount(self, ):
766 rajveer 484
        try:
485
            return get_latest_arrivals_count(self.latest_arrivals_limit)
486
        finally:
487
            close_session()
591 chandransh 488
 
1334 chandransh 489
    def getItemPricing(self, itemId, warehouseId):
490
        """
491
        Returns the pricing information of an item associated with the vendor of the given warehouse.
492
        Raises an exception if either the item, vendor or the associated pricing information can't be found.
493
 
494
        Parameters:
495
         - itemId
496
         - warehouseId
497
        """
1341 chandransh 498
        try:
1347 chandransh 499
            return to_t_vendor_item_pricing(get_item_pricing(itemId, warehouseId))
1341 chandransh 500
        finally:
501
            close_session()
1991 ankur.sing 502
 
503
 
504
    def getAllItemPricing(self, itemId):
505
        """
506
        Returns list of the pricing information of an item associated an item.
507
        Raises an exception if the item can't be found.
508
 
509
        Parameters:
510
         - itemId
511
        """
512
        try:
513
            return [to_t_vendor_item_pricing(vid) for vid in get_all_item_pricing(itemId)]
514
        finally:
515
            close_session()
1334 chandransh 516
 
1155 rajveer 517
    def generateNewEntityID(self, ):
518
        try:
519
            return generate_new_entity_id()
520
        finally:
521
            close_session()
522
 
635 rajveer 523
    def putCategoryObject(self, object):
524
        """
525
        Parameters:
526
         - object
527
        """
766 rajveer 528
        try:
529
            return put_category_object(object)
530
        finally:
531
            close_session()
532
 
635 rajveer 533
    def getCategoryObject(self, ):
766 rajveer 534
        try:
535
            return get_category_object()
536
        finally:
537
            close_session()
1970 rajveer 538
 
539
    def addCategory(self, category):
540
        """
541
        Parameters:
542
         - category
543
        """
544
        try:
545
            return add_category(category)
546
        finally:
547
            close_session()
548
 
549
    def getCategory(self, id):
550
        """
551
        Parameters:
552
         - id
553
        """
554
        try:
555
            return to_t_category(get_category(id))
556
        finally:
557
            close_session()
558
 
559
    def getAllCategories(self, ):
560
        try:
561
            categories = get_all_categories()
562
            return [to_t_category(category) for category in categories]
563
        finally:
564
            close_session()
565
 
566
 
1991 ankur.sing 567
    def updateVendorItemPricing(self, vendorItemPricing):
568
        """
569
        Updates Vendor item pricing.
570
        Raises an exception if either the item or vendor can't be found corresponding to their ids.
571
        Raises an exception if no pricing exists for vendor-item mapping.
572
 
573
        Parameters:
574
         - vendorItemPricing
575
        """
576
        log_entry(self, "updateVendorItemPricing called")
577
        try:
578
            return update_vendor_pricing(vendorItemPricing)
579
        finally:
580
            close_session()
581
 
2065 ankur.sing 582
    def getAllVendors(self, ):
583
        """
584
        Return list of all vendors
585
        """
586
        return [to_t_vendor(v) for v in get_all_vendors()]
587
 
766 rajveer 588
    def closeSession(self, ):
589
        close_session()