示例#1
0
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()
示例#2
0
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