Exemplo n.º 1
0
def  uploadproducts(request):

    if request.method == 'POST':
        form = request.POST
    # Full path and name to your csv file
    csv_filepathname=form['mycsvfile']#"D:/likestore/likestore/sample_products.csv"
    # Full path to your django project directory
    your_djangoproject_home="D:/likestore/likestore/likestore"

    import sys,os
    sys.path.append(your_djangoproject_home)
    os.environ['DJANGO_SETTINGS_MODULE'] = 'likestore.settings'

    import csv
    dataReader = csv.reader(open(csv_filepathname), delimiter=',', quotechar='"')

    for row in dataReader:
        if row[0] != 'ProductID': # Ignore the header row, import everything else
            products = Products()
            products.productsku = row[0]
            products.productname = row[1]
            products.productprice = row[2]
            products.productweight = row[3]
            products.productbestfor = row[4]
            products.productcartdesc = row[5]
            products.productshortdesc = row[6]
            products.productlongdesc = row[7]
            products.productsize = row[8]
            products.productcolor = row[9]
            products.productrating = row[10]
            products.productthumb = row[11]
            products.productimage = row[12]
            products.productimage2 = row[13]
            products.productimage3 = row[14]
            products.productcategoryid = row[15]
            products.productupdatedate = row[16]
            products.productstock = row[17]
            products.productlive = row[18]
            products.productunlimited = row[19]
            products.productlocation = row[20]
            products.save()
    products = Products.objects.raw('SELECT * FROM products')
    template=loader.get_template("admin/tables_datatables.html")
    rc=RequestContext(request,{'products':products})
    return HttpResponse(template.render(rc))
def import_excel(request):
    template_url = 'products/import-excel.html'
    operator = Operators.login_required(request)
    if operator is None:
        Operators.set_redirect_field_name(request, request.path)
        return redirect(reverse("operators_signin"))
    else:
        auth_permissions = Operators.get_auth_permissions(operator)
        if settings.ACCESS_PERMISSION_OPERATOR_UPDATE in auth_permissions.values(
        ):
            if operator.operator_type != Operators.TYPE_SUPER_ADMIN:
                return HttpResponseForbidden('Forbidden',
                                             content_type='text/plain')
            else:
                if request.method == 'POST':
                    form = ProductExcelImportForm(request.POST, request.FILES)
                    if form.is_valid():
                        if 'excel_file' in request.FILES and \
                                request.FILES['excel_file']:
                            excel_file = form.cleaned_data['excel_file']
                            import pandas as pd
                            df = pd.read_excel(excel_file)
                            matrix = df.values
                            df = pd.DataFrame(df)
                            error = ''
                            success = 0
                            failed = 0
                            for index, row in df.iterrows():
                                print(index, row)
                                try:
                                    type = row['type']
                                    tag = row['tag']
                                    title = row['title']
                                    category = row['category']

                                    fail = False

                                    try:
                                        product = Products.objects.get(
                                            product_tag=tag)
                                    except Products.DoesNotExist:
                                        product = None

                                    if product is None:
                                        product = Products()
                                        product.product_code = Products.generate_random_number(
                                            'product_code', 8)
                                        product.product_sub_title = ''
                                        product.product_quantity_available = 0
                                        product.product_quantity_unit = ''

                                    product.product_type = type
                                    product.product_tag = tag
                                    product.product_category = category
                                    product.product_title = title

                                    product.product_updated_at = Utils.get_current_datetime_utc(
                                    )
                                    product.product_updated_id = operator.operator_id
                                    product.product_updated_by = operator.operator_name
                                    product.product_updated_department = operator.operator_department
                                    product.product_updated_role = operator.operator_role
                                    product.save()

                                    success = success + 1

                                except Exception as e:
                                    failed = failed + 1
                                    error = error + " <br> " + 'Error - [Row: ' + str(
                                        index) + '] ' + str(e)

                            message = 'Success: ' + str(
                                success) + ', Failed: ' + str(failed)
                            message = message + error
                            messages.warning(request, message)

                            form = ProductExcelImportForm()

                            return render(
                                request, template_url, {
                                    'section':
                                    settings.BACKEND_SECTION_SETTINGS,
                                    'title': Products.TITLE,
                                    'name': Products.NAME,
                                    'operator': operator,
                                    'auth_permissions': auth_permissions,
                                    'form': form,
                                })
                        else:
                            messages.error(
                                request, 'Error: Select excel file to import.')
                            return render(
                                request, template_url, {
                                    'section':
                                    settings.BACKEND_SECTION_SETTINGS,
                                    'title': Products.TITLE,
                                    'name': Products.NAME,
                                    'operator': operator,
                                    'auth_permissions': auth_permissions,
                                    'form': form,
                                })
                    else:
                        messages.error(request, 'Error: invalid form inputs.')
                        return render(
                            request, template_url, {
                                'section': settings.BACKEND_SECTION_SETTINGS,
                                'title': Products.TITLE,
                                'name': Products.NAME,
                                'operator': operator,
                                'auth_permissions': auth_permissions,
                                'form': form,
                            })
                else:
                    form = ProductExcelImportForm()

                return render(
                    request, template_url, {
                        'section': settings.BACKEND_SECTION_SETTINGS,
                        'title': Products.TITLE,
                        'name': Products.NAME,
                        'operator': operator,
                        'auth_permissions': auth_permissions,
                        'form': form,
                    })
        else:
            return HttpResponseForbidden('Forbidden',
                                         content_type='text/plain')