Exemple #1
0
def upload_prices(request):
    """
    Uploads new price data from Excel file
    """
    form = UploadPricesForm()
    action = request.path
    title = _('Upload new price data')

    if request.method == 'POST':
        form = UploadPricesForm(request.POST, request.FILES)

        if form.is_valid():
            import django_excel as excel
            import pyexcel.ext.xls # import it to handle xls file
            import pyexcel.ext.xlsx # import it to handle xlsx file

            counter, errors = 0, 0
            datafile = form.cleaned_data['datafile']
            sheet = datafile.get_sheet()
            del(sheet.row[0]) # skip header row

            for row in sheet:
                if not len(row[0]):
                    continue # skip empty rows

                try:
                    product = Product.objects.get(code=row[0])
                except Product.DoesNotExist:
                    if form.cleaned_data.get('create_new'):
                        product = Product(code=row[0])
                    else:
                        error = _('Error on row %d - product %s not found') % (counter+1, row[0])
                        messages.error(request, error)
                        return redirect(list_products)
                
                product.title = row[1]
                product.description = row[2]
                product.price_sales_exchange = row[3]

                if form.cleaned_data.get('set_fixed'):
                    product.fixed_price = True

                product.save()
                counter += 1

            msg = _('Price info of %d products uploaded successfully') % counter
            messages.success(request, msg)
            return redirect(list_products)

    return render(request, "products/upload_prices.html", locals())