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
 
2080 rajveer 284
    def markItemAsContentComplete(self, entityId, category, brand, modelName, modelNumber):
285
        """
286
        Parameters:
287
         - entityId
288
         - category
289
         - brand
290
         - modelName
291
         - modelNumber
292
        """
293
        try:
294
            return mark_item_as_content_complete(entityId, category, brand, modelName, modelNumber)
295
        finally:
296
            close_session()
2075 rajveer 297
 
298
 
122 ashish 299
    def getItemInventoryHistory(self, id, item_id, warehouse_id, from_date, to_date):
300
        """
301
        Parameters:
302
         - id
303
         - item_id
304
         - warehouse_id
305
         - from_date
306
         - to_date
307
        """
308
        pass
309
 
310
    def getAllWarehouses(self, isActive):
311
        """
312
        Parameters:
313
        - isActive
314
        """
766 rajveer 315
        try:
316
            if isActive:
317
                warehouses = get_all_warehouses_by_status(status.ACTIVE)
318
            else:
319
                warehouses = get_all_warehouses_by_status(None)
320
 
321
            ret_warehouses = []
322
 
323
            for warehouse in warehouses:
324
                ret_warehouses.append(to_t_warehouse(warehouse))
325
            return ret_warehouses
326
        finally:
327
            close_session()
328
 
122 ashish 329
    def getWarehouse(self, warehouse_id):
330
        """
331
        Parameters:
332
         - warehouse_id
333
        """
334
        log_entry(self, "get warehouse call")
766 rajveer 335
        try:
336
            warehouse = get_Warehouse(warehouse_id)
337
            if warehouse:
338
                return to_t_warehouse(warehouse)
339
            else:
340
                raise InventoryServiceException(101, "no such warehouse")
341
        finally:
342
            close_session()
343
 
122 ashish 344
    def getAllWarehousesForItem(self, item_id):
345
        """
346
        Parameters:
347
         - item_id
348
        """
349
        log_entry(self, "getting all warehouses for item")
766 rajveer 350
        try:
351
            all_warehouses = get_all_warehouses_for_item(item_id)
352
            t_warehouses = []
353
            for warehouse in all_warehouses:
354
                t_warehouses.append(to_t_warehouse(warehouse))
355
            return t_warehouses
356
        finally:
357
            close_session()
358
 
122 ashish 359
    def getAllItemsForWarehouse(self, warehouse_id):
360
        """
361
        Parameters:
362
         - warehouse_id
363
        """
364
        log_entry(self, "getting all items for warehouse")
766 rajveer 365
        try:
366
            all_items = get_all_items_for_warehouse(warehouse_id)
367
            t_items = []
368
            for item in all_items:
369
                t_items.append(to_t_item(item))
370
            return t_items
371
        finally:
372
            close_session()
871 chandransh 373
 
374
    def reserveItemInWarehouse(self, itemId, warehouseId, quantity):
375
        """
376
        Increases the reservation count for an item in a warehouse. Should always succeed normally.
377
 
378
        Parameters:
379
         - itemId
380
         - warehouseId
381
        """
382
        log_entry(self, "reserveItemInWarehouse called")
383
        try:
384
            return reserve_item_in_warehouse(itemId, warehouseId, quantity)
385
        finally:
386
            close_session()
387
 
388
    def reduceReservationCount(self, itemId, warehouseId, quantity):
389
        """
390
        Decreases the reservation count for an item in a warehouse. Should always succeed normally.
391
 
392
        Parameters:
393
         - itemId
394
         - warehouseId
395
        """
396
        log_entry(self, "reduceReservationCount called")
397
        try:
398
            return reduce_reservation_count(itemId, warehouseId, quantity)
399
        finally:
400
            close_session()
766 rajveer 401
 
122 ashish 402
    def updateItem(self, item):
403
        """
404
        Parameters:
405
         - item
406
        """
407
        log_entry(self, "addItem called")
766 rajveer 408
        try:
409
            return update_item(item)
410
        finally:
411
            close_session()
412
 
626 chandransh 413
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 414
        try:
415
            if total_items is None:
416
                total_items = self.best_sellers_limit
417
            stop_index = start_index + total_items
418
            return get_best_sellers(start_index, stop_index, category)
419
        finally:
420
            close_session()
421
 
1926 rajveer 422
    def getBestSellersCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 423
        """
424
        Parameters:
425
         - beginIndex
426
         - totalItems
427
        """
766 rajveer 428
        try:
429
            if total_items is None:
430
                total_items = self.best_sellers_limit
431
            stop_index = start_index + total_items
1926 rajveer 432
            return get_best_sellers_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 433
        finally:
434
            close_session()
435
 
591 chandransh 436
    def getBestSellersCount(self, ):
766 rajveer 437
        try:
2093 chandransh 438
            return get_best_sellers_count()
766 rajveer 439
        finally:
440
            close_session()
441
 
591 chandransh 442
    def getBestDeals(self,):
766 rajveer 443
        try:
444
            return get_best_deals()
445
        finally:
446
            close_session()
447
 
1926 rajveer 448
    def getBestDealsCatalogIds(self, start_index, total_items, brand,category=-1):
548 rajveer 449
        """
450
        Parameters:
451
         - beginIndex
452
         - totalItems
453
        """
766 rajveer 454
        try:
455
            stop_index = start_index + total_items
1926 rajveer 456
            return get_best_deals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 457
        finally:
458
            close_session()
459
 
591 chandransh 460
    def getBestDealsCount(self, ):
766 rajveer 461
        try:
462
            return get_best_deals_count()
463
        finally:
464
            close_session()
465
 
591 chandransh 466
    def getLatestArrivals(self,):
766 rajveer 467
        try:
468
            return get_latest_arrivals(self.latest_arrivals_limit)
469
        finally:
470
            close_session()
471
 
1926 rajveer 472
    def getLatestArrivalsCatalogIds(self, start_index, total_items, brand, category=-1):
548 rajveer 473
        """
474
        Parameters:
475
         - beginIndex
476
         - totalItems
477
        """
766 rajveer 478
        try:
479
            if start_index > self.latest_arrivals_limit:
480
                return []
481
            stop_index = start_index + total_items
482
            if stop_index > self.latest_arrivals_limit:
483
                stop_index = self.latest_arrivals_limit
1926 rajveer 484
            return get_latest_arrivals_catalog_ids(start_index, stop_index, brand, category)
766 rajveer 485
        finally:
486
            close_session()
487
 
591 chandransh 488
    def getLatestArrivalsCount(self, ):
766 rajveer 489
        try:
490
            return get_latest_arrivals_count(self.latest_arrivals_limit)
491
        finally:
492
            close_session()
591 chandransh 493
 
1334 chandransh 494
    def getItemPricing(self, itemId, warehouseId):
495
        """
496
        Returns the pricing information of an item associated with the vendor of the given warehouse.
497
        Raises an exception if either the item, vendor or the associated pricing information can't be found.
498
 
499
        Parameters:
500
         - itemId
501
         - warehouseId
502
        """
1341 chandransh 503
        try:
1347 chandransh 504
            return to_t_vendor_item_pricing(get_item_pricing(itemId, warehouseId))
1341 chandransh 505
        finally:
506
            close_session()
1991 ankur.sing 507
 
508
 
509
    def getAllItemPricing(self, itemId):
510
        """
511
        Returns list of the pricing information of an item associated an item.
512
        Raises an exception if the item can't be found.
513
 
514
        Parameters:
515
         - itemId
516
        """
517
        try:
518
            return [to_t_vendor_item_pricing(vid) for vid in get_all_item_pricing(itemId)]
519
        finally:
520
            close_session()
1334 chandransh 521
 
1155 rajveer 522
    def generateNewEntityID(self, ):
523
        try:
524
            return generate_new_entity_id()
525
        finally:
526
            close_session()
527
 
635 rajveer 528
    def putCategoryObject(self, object):
529
        """
530
        Parameters:
531
         - object
532
        """
766 rajveer 533
        try:
534
            return put_category_object(object)
535
        finally:
536
            close_session()
537
 
635 rajveer 538
    def getCategoryObject(self, ):
766 rajveer 539
        try:
540
            return get_category_object()
541
        finally:
542
            close_session()
1970 rajveer 543
 
544
    def addCategory(self, category):
545
        """
546
        Parameters:
547
         - category
548
        """
549
        try:
550
            return add_category(category)
551
        finally:
552
            close_session()
553
 
554
    def getCategory(self, id):
555
        """
556
        Parameters:
557
         - id
558
        """
559
        try:
560
            return to_t_category(get_category(id))
561
        finally:
562
            close_session()
563
 
564
    def getAllCategories(self, ):
565
        try:
566
            categories = get_all_categories()
567
            return [to_t_category(category) for category in categories]
568
        finally:
569
            close_session()
570
 
571
 
1991 ankur.sing 572
    def updateVendorItemPricing(self, vendorItemPricing):
573
        """
574
        Updates Vendor item pricing.
575
        Raises an exception if either the item or vendor can't be found corresponding to their ids.
576
        Raises an exception if no pricing exists for vendor-item mapping.
577
 
578
        Parameters:
579
         - vendorItemPricing
580
        """
581
        log_entry(self, "updateVendorItemPricing called")
582
        try:
583
            return update_vendor_pricing(vendorItemPricing)
584
        finally:
585
            close_session()
586
 
2065 ankur.sing 587
    def getAllVendors(self, ):
588
        """
589
        Return list of all vendors
590
        """
591
        return [to_t_vendor(v) for v in get_all_vendors()]
592
 
766 rajveer 593
    def closeSession(self, ):
594
        close_session()