Subversion Repositories SmartDukaan

Rev

Rev 602 | Rev 612 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 602 Rev 609
Line 5... Line 5...
5
'''
5
'''
6
from elixir import *
6
from elixir import *
7
from shop2020.model.v1.catalog.impl import DataService
7
from shop2020.model.v1.catalog.impl import DataService
8
from shop2020.model.v1.catalog.impl.DataService import Item, \
8
from shop2020.model.v1.catalog.impl.DataService import Item, \
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot, ItemInfo,\
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot, ItemInfo,\
10
    ItemChangeLog, Price, BestDeals, BestSellers
10
    ItemChangeLog, BestSellers
11
from shop2020.thriftpy.model.v1.catalog.ttypes import \
11
from shop2020.thriftpy.model.v1.catalog.ttypes import \
12
    InventoryServiceException, status
12
    InventoryServiceException, status
13
from shop2020.model.v1.catalog.impl.Convertors import to_t_item
13
from shop2020.model.v1.catalog.impl.Convertors import to_t_item
14
import datetime
14
import datetime
15
from shop2020.utils.Utils import log_entry, to_py_date
15
from shop2020.utils.Utils import log_entry, to_py_date
Line 102... Line 102...
102
def update_item(item):
102
def update_item(item):
103
    if not item:
103
    if not item:
104
        raise InventoryServiceException(108, "Bad item in request")
104
        raise InventoryServiceException(108, "Bad item in request")
105
    
105
    
106
    if not item.id:
106
    if not item.id:
107
        raise InventoryServiceException(101, "non existent item")
107
        raise InventoryServiceException(101, "Missing id for update")
108
    
108
    
109
    ds_item = get_Item(item.id)
109
    ds_item = get_Item(item.id)
110
    
110
    
111
    if not ds_item:
111
    if not ds_item:
112
        raise InventoryServiceException(101, "Item already exists")
112
        raise InventoryServiceException(101, "Item missing in our database")
113
    
113
    
114
    if item.manufacturerName:
114
    if item.manufacturerName:
115
        ds_item.manufacturer_name = item.manufacturerName
115
        ds_item.manufacturer_name = item.manufacturerName
116
    if item.modelName:
116
    if item.modelName:
117
        ds_item.model_name = item.modelName
117
        ds_item.model_name = item.modelName
118
    if item.modelNumber:
118
    if item.modelNumber:
119
        ds_item.model_number = item.modelNumber
119
        ds_item.model_number = item.modelNumber
-
 
120
    if item.color:
-
 
121
        ds_item.color = item.color
120
    if item.category:
122
    if item.category:
121
        ds_item.category = item.category
123
        ds_item.category = item.category
122
    if item.comments:
124
    if item.comments:
123
        ds_item.comments = item.comments
125
        ds_item.comments = item.comments
124
    
126
    
125
    if item.catalogItemId:
127
    if item.catalogItemId:
126
        ds_item.catalog_item_id = item.catalogItemId
128
        ds_item.catalog_item_id = item.catalogItemId
127
    if item.vendorItemId:
129
    if item.vendorItemId:
128
        ds_item.vendor_item_id = item.vendorItemId
130
        ds_item.vendor_item_id = item.vendorItemId
129
    else:
131
    else:
130
        raise InventoryServiceException(101, "vendor item id cannot be missing")
132
        raise InventoryServiceException(101, "Vendor item id cannot be missing")
131
 
133
 
132
    if item.mrp:
134
    if item.mrp:
133
        ds_item.mrp = item.mrp
135
        ds_item.mrp = item.mrp
134
    if item.mop:
136
    if item.mop:
135
        ds_item.mop = item.mop
137
        ds_item.mop = item.mop
136
    if item.sellingPrice:
138
    if item.sellingPrice:
137
        ds_item.sellingPrice = item.sellingPrice
139
        ds_item.sellingPrice = item.sellingPrice
-
 
140
    if item.dealerPrice:
-
 
141
        ds_item.dealerPrice = item.dealerPrice
138
    if item.weight:
142
    if item.weight:
139
        ds_item.weight = item.weight
143
        ds_item.weight = item.weight
140
    if item.itemStatus:
144
    if item.itemStatus:
141
        ds_item.status = item.itemStatus
145
        ds_item.status = item.itemStatus
142
    
146
    
Line 148... Line 152...
148
    if item.featureId:
152
    if item.featureId:
149
        ds_item.feature_id = item.featureId
153
        ds_item.feature_id = item.featureId
150
    if item.featureDescription:
154
    if item.featureDescription:
151
        ds_item.feature_description = item.featureDescription
155
        ds_item.feature_description = item.featureDescription
152
    
156
    
-
 
157
    if item.bestDealText:
-
 
158
        ds_item.bestDealText = item.bestDealText
-
 
159
    if item.bestDealValue:
-
 
160
        ds_item.bestDealValue = item.bestDealValue
-
 
161
    
-
 
162
    ds_item.updated_on = datetime.datetime.now()
153
    session.commit();
163
    session.commit();
154
    return ds_item.id
164
    return ds_item.id
155
 
165
 
156
def add_item(item):
166
def add_item(item):
157
    if not item:
167
    if not item:
Line 166... Line 176...
166
        ds_item.manufacturer_name = item.manufacturerName
176
        ds_item.manufacturer_name = item.manufacturerName
167
    if item.modelName:
177
    if item.modelName:
168
        ds_item.model_name = item.modelName
178
        ds_item.model_name = item.modelName
169
    if item.modelNumber:
179
    if item.modelNumber:
170
        ds_item.model_number = item.modelNumber
180
        ds_item.model_number = item.modelNumber
-
 
181
    if item.color:
-
 
182
        ds_item.color = item.color
171
    if item.category:
183
    if item.category:
172
        ds_item.category = item.category
184
        ds_item.category = item.category
173
    if item.comments:
185
    if item.comments:
174
        ds_item.comments = item.comments
186
        ds_item.comments = item.comments
175
 
187
 
Line 182... Line 194...
182
    if item.itemStatus:
194
    if item.itemStatus:
183
        ds_item.status = item.itemStatus
195
        ds_item.status = item.itemStatus
184
    else: #this is for update calls
196
    else: #this is for update calls
185
        ds_item.status = status.IN_PROCESS
197
        ds_item.status = status.IN_PROCESS
186
    ds_item.addedOn = datetime.datetime.now()
198
    ds_item.addedOn = datetime.datetime.now()
-
 
199
    ds_item.updatedOn = datetime.datetime.now()
-
 
200
    
187
    if item.mrp:
201
    if item.mrp:
188
        ds_item.mrp = item.mrp
202
        ds_item.mrp = item.mrp
189
    if item.mop:
203
    if item.mop:
190
        ds_item.mop = item.mop
204
        ds_item.mop = item.mop
191
    if item.sellingPrice:
205
    if item.sellingPrice:
192
        ds_item.sellingPrice = item.sellingPrice
206
        ds_item.sellingPrice = item.sellingPrice
-
 
207
    if item.dealerPrice:
-
 
208
        ds_item.dealerPrice = item.dealerPrice
193
    if item.weight:
209
    if item.weight:
194
        ds_item.weight = item.weight
210
        ds_item.weight = item.weight
195
    
211
    
196
    if item.featureId:
212
    if item.featureId:
197
        ds_item.feature_id = item.featureId
213
        ds_item.feature_id = item.featureId
Line 204... Line 220...
204
            info.key = k
220
            info.key = k
205
            info.value = v
221
            info.value = v
206
            ds_item.iteminfo.append(info)
222
            ds_item.iteminfo.append(info)
207
    #check if categories present. If yes, add them to system
223
    #check if categories present. If yes, add them to system
208
    
224
    
209
    session.commit();
225
    if item.bestDealValue:
-
 
226
        ds_item.bestDealValue = item.bestDealValue
210
    return ds_item.id
227
    if item.bestDealText:
-
 
228
        ds_item.bestDealText = item.bestDealText
211
    
229
    
212
#this is no more used
-
 
213
def update_price(item, ds_item):
-
 
214
    log_entry("update_price", "updating price for item")
-
 
215
    for k,v in item.price.iteritems():
-
 
216
        price = Price()
-
 
217
        price.warehouse_id = k
-
 
218
        price.price = v
-
 
219
        price.item = ds_item
-
 
220
        session.commit() 
230
    session.commit();
221
 
-
 
222
#this is no more used
-
 
223
def update_price_for_warehouse(item_id, warehouse_id, price):
-
 
224
    log_entry("update_price", "updating price for item and warehouse")
-
 
225
    price = Price.query.filter_by(warehouse_id=warehouse_id, item_id=item_id).one()
-
 
226
    if not price:
-
 
227
        price = Price()
-
 
228
        item = get_Item(item_id)
-
 
229
        price.warehouse_id = warehouse_id
-
 
230
        price.item = item
231
    return ds_item.id       
231
    price.price = price    
-
 
232
    session.commit()
-
 
233
        
-
 
234
    
232
    
235
def update_inventory(warehouse_id, timestamp, availability):
233
def update_inventory(warehouse_id, timestamp, availability):
236
    warehouse = get_Warehouse(warehouse_id)
234
    warehouse = get_Warehouse(warehouse_id)
237
    if not warehouse:
235
    if not warehouse:
238
        raise InventoryServiceException(107, "Warehouse? Where?")
236
        raise InventoryServiceException(107, "Warehouse? Where?")
Line 420... Line 418...
420
    
418
    
421
    t_sellers = []
419
    t_sellers = []
422
    for seller in sellers:
420
    for seller in sellers:
423
        t_sellers.append(seller.item_id)
421
        t_sellers.append(seller.item_id)
424
    return t_sellers   
422
    return t_sellers   
425
    
423
 
426
def get_best_deals():
424
def get_best_deals():
-
 
425
    items = Item.query.filter(Item.bestDealValue != None).all()
427
    deals = BestDeals.query.all()
426
    return get_thrift_item_list(items)
428
    
427
 
429
    #query = BestDeals.query.all()
428
def get_best_deals_count():
430
    #deals = query.order_by(asc(BestDeals.priority)).all()
429
    return Item.query.filter(Item.bestDealValue != None).count()
431
    
-
 
432
    
430
    
-
 
431
def get_best_deals_catalog_ids(start_index, total_items):
-
 
432
    stop_index = start_index + total_items
-
 
433
    best_deal_items = Item.query.filter(Item.bestDealValue != None).order_by(desc(Item.bestDealValue)).all()[start_index:stop_index]
433
    t_deals = []
434
    t_deals = []
434
    for deal in deals:
435
    for deal in best_deal_items:
435
        t_deals.append(deal.item_id)
436
        t_deals.append(deal.catalog_item_id)
436
    return t_deals   
437
    return t_deals
437
    
438
 
438
def get_latest_arrivals(limit):
439
def get_latest_arrivals(limit):
439
    items = Item.query.order_by(desc(Item.startDate)).all()[0:limit]
440
    items = Item.query.order_by(desc(Item.startDate)).all()[0:limit]
440
    ret_items = []
-
 
441
    for item in items:
-
 
442
        if item:
-
 
443
            ret_items.append(to_t_item(item))
-
 
444
    return ret_items
441
    return get_thrift_item_list(items)
445
    
442
    
446
def get_latest_arrivals_count(limit):
443
def get_latest_arrivals_count(limit):
447
    #FIXME: This method has not been tested. Have to talk to Rajveer to check where is it used.
444
    #FIXME: This method has not been functionally tested. Have to talk to Rajveer to check where is it used.
448
    return min(Item.query.count(), limit)
445
    return min(Item.query.count(), limit)
449
    
446
    
450
def get_latest_arrivals_catalog_ids(limit):
447
def get_latest_arrivals_catalog_ids(start_index, total_items):
-
 
448
    stop_index = start_index + total_items
451
    arrivals = Item.query.order_by(desc(Item.startDate)).all()[0:limit]
449
    arrivals = Item.query.order_by(desc(Item.startDate)).all()[start_index:stop_index]
452
    
450
    
453
    t_arrivals = []
451
    t_arrivals = []
454
    for arrival in arrivals:
452
    for arrival in arrivals:
455
        t_arrivals.append(arrival.catalog_item_id)
453
        t_arrivals.append(arrival.catalog_item_id)
456
    return t_arrivals    
454
    return t_arrivals    
-
 
455
 
-
 
456
def get_thrift_item_list(items):
-
 
457
    ret_items = []
-
 
458
    for item in items:
-
 
459
        if item:
-
 
460
            ret_items.append(to_t_item(item))    
-
 
461
    return ret_items
457
462