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,\
609 chandransh 15
    get_item_by_vendor_id, 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,\
723 chandransh 17
    get_category_object, mark_item_as_content_complete
122 ashish 18
from shop2020.model.v1.catalog.impl.Convertors import to_t_item,\
19
    to_t_item_inventory, to_t_warehouse
20
from shop2020.thriftpy.model.v1.catalog.ttypes import status,\
21
    InventoryServiceException
599 chandransh 22
from shop2020.config.client.ConfigClient import ConfigClient
122 ashish 23
 
24
 
25
class InventoryServiceHandler:
26
    '''
27
    classdocs
28
    '''
599 chandransh 29
 
122 ashish 30
    def __init__(self):
31
        '''
32
        Constructor
33
        '''
34
        DataService.initialize()
599 chandransh 35
        try:
621 chandransh 36
            config_client = ConfigClient()
37
            self.latest_arrivals_limit = int(config_client.get_property("LATEST_ARRIVALS_LIMIT"));
38
            self.best_sellers_limit = int(config_client.get_property("BEST_SELLERS_LIMIT"))
599 chandransh 39
        except:
621 chandransh 40
            self.latest_arrivals_limit = 50
41
            self.best_sellers_limit = 50
122 ashish 42
 
43
    #DONE
44
    def addItem(self, item):
45
        """
46
        Availability and inventory attributes
47
 
48
        Parameters:
49
         - item
50
        """
51
        log_entry(self, "addItem called")
52
        return add_item(item)
53
        pass
54
 
55
    def addWarehouse(self, warehouse):
56
        """
57
        Parameters:
58
         - warehouse
59
        """
60
        log_entry(self, "addWarehouse called")
61
        return add_warehouse(warehouse)
62
        pass
63
 
483 rajveer 64
 
65
    def updateInventory(self, warehouse_id, timestamp, availability):
122 ashish 66
        """
67
        Parameters:
68
         - warehouse_id
69
         - timestamp
483 rajveer 70
         - availability
122 ashish 71
        """
72
        log_entry(self, "update Inventory called")
483 rajveer 73
        return update_inventory(warehouse_id, timestamp, availability)
122 ashish 74
 
635 rajveer 75
    def isActive(self, item_id):
563 chandransh 76
        """
77
        Parameters:
635 rajveer 78
         - item_id
563 chandransh 79
        """
635 rajveer 80
        return is_active(item_id)
122 ashish 81
 
82
    def retireWarehouse(self, warehouse_id):
83
        """
84
        Parameters:
85
         - warehouse_id
86
        """
87
        log_entry(self, "retire warehouse called")
88
        return retire_warehouse(warehouse_id)
89
 
90
 
91
    def retireItem(self, item_id):
92
        """
93
        Parameters:
94
        - item_id
95
        """
96
        log_entry(self, "retire item called")
97
        return retire_item(item_id)
98
 
99
    def startItemOn(self, item_id, timestamp):
100
        """
101
        Parameters:
102
         - item_id
103
         - timestamp
104
        """
105
        start_item_on(item_id, timestamp)
106
 
107
    def retireItemOn(self, item_id, timestamp):
108
        """
109
        Parameters:
110
         - item_id
111
         - timestamp
112
        """
113
        retire_item_on(item_id, timestamp)
114
 
115
    def changeItemStatus(self, item_id, timestamp, newstatus):
116
        """
117
        Parameters:
118
         - item_id
119
         - timestamp
120
         - newstatus
121
        """
122
        log_entry(self, "change item status called")
123
        return change_item_status(item_id, newstatus)
124
 
125
 
126
    def getItem(self, item_id):
127
        """
128
        Parameters:
129
         - item_id
130
        """
131
        log_entry(self, "item requested")
635 rajveer 132
        return to_t_item( get_item(item_id))
379 ashish 133
 
635 rajveer 134
    def getItemsByCatalogId(self, catalog_item_id):
379 ashish 135
        """
136
        Parameters:
137
        - catalog_item_id
138
        """
386 ashish 139
        log_entry(self, "item requested")
766 rajveer 140
        try:
141
            return get_items_by_catalog_id(catalog_item_id)
142
        finally:
143
            close_session()
122 ashish 144
 
483 rajveer 145
    def getItemByVendorId(self, vendor_item_id):
146
        """
147
        Parameters:
148
        - catalog_item_id
149
        """
150
        log_entry(self, "item requested")
766 rajveer 151
        try:
152
            return to_t_item( get_item_by_vendor_id(vendor_item_id))
153
        finally:
154
            close_session()
483 rajveer 155
 
156
 
122 ashish 157
    def getAllItems(self, isActive):
158
        """
159
        Parameters:
160
         - isActive
161
        """
162
        log_entry(self, "all items requested")
766 rajveer 163
        try:
164
            items = get_all_items(isActive)
165
            ret_items = []
166
            for item in items:
167
                if item:
168
                    ret_items.append(to_t_item(item))
169
            return ret_items
170
        finally:
171
            close_session()
172
 
122 ashish 173
    def getAllItemsByStatus(self, itemStatus):
174
        """
175
        Parameters:
176
         - itemStatus
177
        """
178
        log_entry(self, "all items requested")
766 rajveer 179
        try:
180
            items = get_all_items_by_status(itemStatus)
181
            ret_items = []
182
            for item in items:
183
                if item:
184
                    ret_items.append(to_t_item(item))
185
            return ret_items
186
        finally:
187
            close_session()
122 ashish 188
 
189
    def getItemInventory(self, item_id):
190
        """
191
        Parameters:
192
        - item_id
193
        """
194
        log_entry(self, "item inventory requested")
766 rajveer 195
        try:
196
            inventory = get_item_inventoy(item_id)
197
            return to_t_item_inventory(inventory, item_id)
198
        finally:
199
            close_session()
122 ashish 200
 
635 rajveer 201
    def getItemInventoryByItemId(self, item_id):
202
        """
203
        Parameters:
204
         - item_id
205
        """
206
        log_entry(self, "item inventory requested")
766 rajveer 207
        try:
208
            inventory = get_item_inventory_by_item_id(item_id)
209
            return to_t_item_inventory(inventory, item_id)
210
        finally:
211
            close_session()
635 rajveer 212
 
213
    '''
379 ashish 214
    def getItemInventoryByCatalogId(self, item_id):
215
        """
216
        Parameters:
217
         - item_id
218
        """
383 ashish 219
        log_entry(self, "item inventory requested")
220
        inventory = get_item_inventory_by_catalog_id(item_id)
221
        return to_t_item_inventory(inventory, item_id)
635 rajveer 222
    '''
223
 
379 ashish 224
 
643 chandransh 225
    def getItemAvailabilityAtLocation(self, warehouse_loc, item_id):
226
        """
227
        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.
228
 
229
        Parameters:
230
         - warehouse_loc
231
         - item_id
232
        """
766 rajveer 233
        try:
234
            return get_item_availability_for_location(warehouse_loc, item_id)
235
        finally:
236
            close_session()
237
 
122 ashish 238
    def getItemAvailibilityAtWarehouse(self, warehouse_id, item_id):
239
        """
240
        Parameters:
241
         - warehouse_id
242
         - item_id
243
        """
244
        log_entry(self, "item availability at warehouse requested")
766 rajveer 245
        try:
246
            return get_item_availability_for_warehouse(warehouse_id, item_id)
247
        finally:
248
            close_session()
249
 
723 chandransh 250
    def markItemAsContentComplete(self, entityId):
251
        """
252
        Parameters:
253
         - entityId
254
        """
766 rajveer 255
        try:
256
            return mark_item_as_content_complete(entityId)
257
        finally:
258
            close_session()
259
 
122 ashish 260
    def getItemInventoryHistory(self, id, item_id, warehouse_id, from_date, to_date):
261
        """
262
        Parameters:
263
         - id
264
         - item_id
265
         - warehouse_id
266
         - from_date
267
         - to_date
268
        """
269
        pass
270
 
271
    def getAllWarehouses(self, isActive):
272
        """
273
        Parameters:
274
        - isActive
275
        """
766 rajveer 276
        try:
277
            if isActive:
278
                warehouses = get_all_warehouses_by_status(status.ACTIVE)
279
 
280
            else:
281
                warehouses = get_all_warehouses_by_status(None)
282
 
283
            ret_warehouses = []
284
 
285
            for warehouse in warehouses:
286
                ret_warehouses.append(to_t_warehouse(warehouse))
287
            return ret_warehouses
288
        finally:
289
            close_session()
290
 
122 ashish 291
    def getWarehouse(self, warehouse_id):
292
        """
293
        Parameters:
294
         - warehouse_id
295
        """
296
        log_entry(self, "get warehouse call")
766 rajveer 297
        try:
298
            warehouse = get_Warehouse(warehouse_id)
299
            if warehouse:
300
                return to_t_warehouse(warehouse)
301
            else:
302
                raise InventoryServiceException(101, "no such warehouse")
303
        finally:
304
            close_session()
305
 
122 ashish 306
    def getAllWarehousesForItem(self, item_id):
307
        """
308
        Parameters:
309
         - item_id
310
        """
311
        log_entry(self, "getting all warehouses for item")
766 rajveer 312
        try:
313
            all_warehouses = get_all_warehouses_for_item(item_id)
314
            t_warehouses = []
315
            for warehouse in all_warehouses:
316
                t_warehouses.append(to_t_warehouse(warehouse))
317
            return t_warehouses
318
        finally:
319
            close_session()
320
 
122 ashish 321
    def getAllItemsForWarehouse(self, warehouse_id):
322
        """
323
        Parameters:
324
         - warehouse_id
325
        """
326
        log_entry(self, "getting all items for warehouse")
766 rajveer 327
        try:
328
            all_items = get_all_items_for_warehouse(warehouse_id)
329
            t_items = []
330
            for item in all_items:
331
                t_items.append(to_t_item(item))
332
            return t_items
333
        finally:
334
            close_session()
335
 
122 ashish 336
    def updateItem(self, item):
337
        """
338
        Parameters:
339
         - item
340
        """
341
        log_entry(self, "addItem called")
766 rajveer 342
        try:
343
            return update_item(item)
344
        finally:
345
            close_session()
346
 
626 chandransh 347
    def getBestSellers(self, start_index=0, total_items=None, category=-1):
766 rajveer 348
        try:
349
            if total_items is None:
350
                total_items = self.best_sellers_limit
351
            stop_index = start_index + total_items
352
            return get_best_sellers(start_index, stop_index, category)
353
        finally:
354
            close_session()
355
 
626 chandransh 356
    def getBestSellersCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 357
        """
358
        Parameters:
359
         - beginIndex
360
         - totalItems
361
        """
766 rajveer 362
        try:
363
            if total_items is None:
364
                total_items = self.best_sellers_limit
365
            stop_index = start_index + total_items
366
            return get_best_sellers_catalog_ids(start_index, stop_index,category)
367
        finally:
368
            close_session()
369
 
591 chandransh 370
    def getBestSellersCount(self, ):
766 rajveer 371
        try:
372
            return get_best_sellers_count(None)
373
        finally:
374
            close_session()
375
 
591 chandransh 376
    def getBestDeals(self,):
766 rajveer 377
        try:
378
            return get_best_deals()
379
        finally:
380
            close_session()
381
 
626 chandransh 382
    def getBestDealsCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 383
        """
384
        Parameters:
385
         - beginIndex
386
         - totalItems
387
        """
766 rajveer 388
        try:
389
            stop_index = start_index + total_items
390
            return get_best_deals_catalog_ids(start_index, stop_index, category)
391
        finally:
392
            close_session()
393
 
591 chandransh 394
    def getBestDealsCount(self, ):
766 rajveer 395
        try:
396
            return get_best_deals_count()
397
        finally:
398
            close_session()
399
 
591 chandransh 400
    def getLatestArrivals(self,):
766 rajveer 401
        try:
402
            return get_latest_arrivals(self.latest_arrivals_limit)
403
        finally:
404
            close_session()
405
 
626 chandransh 406
    def getLatestArrivalsCatalogIds(self, start_index, total_items, category=-1):
548 rajveer 407
        """
408
        Parameters:
409
         - beginIndex
410
         - totalItems
411
        """
766 rajveer 412
        try:
413
            if start_index > self.latest_arrivals_limit:
414
                return []
415
            stop_index = start_index + total_items
416
            if stop_index > self.latest_arrivals_limit:
417
                stop_index = self.latest_arrivals_limit
418
                return get_latest_arrivals_catalog_ids(start_index, stop_index, category)
419
        finally:
420
            close_session()
421
 
591 chandransh 422
    def getLatestArrivalsCount(self, ):
766 rajveer 423
        try:
424
            return get_latest_arrivals_count(self.latest_arrivals_limit)
425
        finally:
426
            close_session()
591 chandransh 427
 
635 rajveer 428
    def putCategoryObject(self, object):
429
        """
430
        Parameters:
431
         - object
432
        """
766 rajveer 433
        try:
434
            return put_category_object(object)
435
        finally:
436
            close_session()
437
 
635 rajveer 438
    def getCategoryObject(self, ):
766 rajveer 439
        try:
440
            return get_category_object()
441
        finally:
442
            close_session()
443
 
444
    def closeSession(self, ):
445
        close_session()