def upload__used_prices(request, **kwargs): class UploadUsedInventoryForm(forms.Form): file = forms.FileField() message = None not_found_upc = [] if request.method == "POST": form = UploadUsedInventoryForm(request.POST, request.FILES) if form.is_valid(): dtn = datetime.datetime.now() reader = csv.reader(form.cleaned_data['file'], delimiter='\t') lineno = 0 unrecognized_lines = [] found_upc = [] error_upc = [] cursor = connection.cursor() #@UndefinedVariable # cursor.execute("update catalog_item set base_retail_price_used='0.0', retail_price_used='0.0', base_trade_price='0.0', trade_price='0.0', trade_price_incomplete='0.0', trade_flag=False") cursor.execute("update catalog_item set base_retail_price_used='0.0', retail_price_used='0.0', base_trade_price='0.0', trade_price='0.0', trade_price_incomplete='0.0'") for row in reader: lineno += 1 if lineno == 1: continue try: row = [r.decode("utf-8", "ignore") for r in row] UPC, BRE_ID, PLATFORM, PRODUCT, RETAIL_PRICE_USED, TRADE_PRICE_COMPLETE = row #@UnusedVariable except: unrecognized_lines.append(lineno) continue try: try: item = Item.objects.get(upc=UPC) item.bre_id = BRE_ID except Item.DoesNotExist: item = Item.objects.get(bre_id=BRE_ID) item.base_retail_price_used = decimal.Decimal(RETAIL_PRICE_USED.replace('$','')) item.base_trade_price = decimal.Decimal(TRADE_PRICE_COMPLETE.replace('$','')) # item.trade_flag = item.base_trade_price != decimal.Decimal('0.0') item.trade_flag = item.trade_flag and item.base_trade_price != decimal.Decimal('0.0') item.recalc_prices(prices=['retail_price_used', 'trade_price'], save=False) item.save() found_upc.append(UPC) except Item.DoesNotExist: not_found_upc.append(row) except Exception, e: debug(e) error_upc.append((UPC, lineno, row)) message = """ Elapsed Time: %s<br /> Total Lines: %d<br /> Unrecognized Lines: %d<br /> Found UPC: %d<br /> Not Found UPC: %d<br /> Error UPC: %d<br /> """ % (datetime.datetime.now()-dtn, lineno, len(unrecognized_lines), len(found_upc), len(not_found_upc), len(error_upc)) if len(error_upc)>0: message += '<p><b>Errors:</b><ul>\n' message += ''.join("<li>line:%d | %s</li>\n" % (lineno, str(row)) for (upc, lineno, row) in error_upc) #@UnusedVariable message += '</ul>\n' r = ReportUpload( created = datetime.datetime.now(), type = 'Used Price and Trade Values', source = form.cleaned_data['file'], report = message.replace('<br />', ''), unknown_upc_count = len(not_found_upc), unknown_upc = '\n'.join(map(lambda x: '\t'.join(x), not_found_upc)) ) r.save()
def upload__used(request, **kwargs): class UploadInventoryForm(forms.Form): retailer = forms.ModelChoiceField(Distributor.objects.filter(new_games_vendor=False)) file = forms.FileField() message = None not_founded_upc = [] if request.method == 'POST': form = UploadInventoryForm(request.POST, request.FILES) if form.is_valid(): dtn = datetime.datetime.now() reader = csv.reader(form.cleaned_data['file'], delimiter='\t') lineno = 0 unrecognized_lines = [] founded_upc = [] error_upc = [] retailer = form.cleaned_data['retailer'] retailer.items.all().delete() for row in reader: lineno += 1 if lineno == 1: continue try: UPC, PRODUCT_NAME, PLATFORM, WHOLESALE_PRICE, QUANTITY, DROPSHIP_KEY_GAMEMINE, DISTRIBUTOR, CONDITION = row #@UnusedVariable except: unrecognized_lines.append(lineno) continue try: item = Item.objects.get(upc=UPC) founded_upc.append(UPC) di = DistributorItem( distributor = retailer, item=item, wholesale_price = WHOLESALE_PRICE.replace('$',''), quantity = QUANTITY, is_new=False, ) di.save() except Item.DoesNotExist: not_founded_upc.append(row) except: import traceback traceback.print_exc() error_upc.append((UPC, lineno, row)) message = """ Elapsed Time: %s<br /> Total Lines: %d<br /> Unrecognized Lines: %d<br /> Found UPC: %d<br /> Not Found UPC: %d<br /> Error UPC: %d<br /> """ % (datetime.datetime.now()-dtn, lineno, len(unrecognized_lines), len(founded_upc), len(not_founded_upc), len(error_upc)) if len(error_upc)>0: message += '<p><b>Errors:</b><ul>\n' message += ''.join("<li>line:%d | %s</li>\n" % (lineno, str(row)) for (upc, lineno, row) in error_upc) #@UnusedVariable message += '</ul>\n' r = ReportUpload( created = datetime.datetime.now(), type = 'New Inventory and Price', source = form.cleaned_data['file'], report = message.replace('<br />', ''), unknown_upc_count = len(not_founded_upc), unknown_upc = '\n'.join(map(lambda x: '\t'.join(x), not_founded_upc)) ) r.save() else: form = UploadInventoryForm() return { 'title': 'Upload Used Inventory Feed', 'form': form, 'message': message, 'not_found': '\n'.join(map(lambda x: '\t'.join(x), not_founded_upc)), }, None