Esempio n. 1
0
def import_product_migrations(request):
    context = {}
    if request.method == "POST":
        form = ImportProductMigrationFileUploadForm(request.POST,
                                                    request.FILES)
        if form.is_valid():
            # file is valid, save and execute the import job
            job_file = JobFile(file=request.FILES['excel_file'])
            job_file.save()

            eta = now() + timedelta(seconds=3)
            task = tasks.import_product_migrations.apply_async(
                eta=eta,
                kwargs={
                    "job_file_id": job_file.id,
                    "user_for_revision": request.user.username
                })

            set_meta_data_for_task(
                task_id=task.id,
                title="Import product migrations from Excel sheet",
                auto_redirect=False,
                redirect_to=reverse("productdb:import_product_migrations"))

            return redirect(
                reverse("task_in_progress", kwargs={"task_id": task.id}))

    else:
        form = ImportProductMigrationFileUploadForm()

    context["form"] = form

    return render(request,
                  "productdb/import/import_product_migrations.html",
                  context=context)
Esempio n. 2
0
def import_products(request):
    """
    import of products using Excel
    :param request:
    :return:
    """
    context = {}
    if request.method == "POST":
        form = ImportProductsFileUploadForm(request.POST, request.FILES)
        if form.is_valid():
            # file is valid, save and execute the import job
            job_file = JobFile(file=request.FILES['excel_file'])
            job_file.save()

            if request.user.is_superuser:
                # only the superuser is allowed to add a server notification message
                create_notification = not form.cleaned_data[
                    "suppress_notification"]

            else:
                # all other users are not allowed to add a server notification
                create_notification = False

            task = tasks.import_price_list.delay(
                job_file_id=job_file.id,
                create_notification_on_server=create_notification,
                user_for_revision=request.user.username)
            set_meta_data_for_task(
                task_id=task.id,
                title="Import products from Excel sheet",
                auto_redirect=False,
                redirect_to=reverse("productdb:import_products"))

            return redirect(
                reverse("task_in_progress", kwargs={"task_id": task.id}))

    else:
        form = ImportProductsFileUploadForm(
            initial={"suppress_notification": True})
        if not request.user.is_superuser:
            form.fields["suppress_notification"].disabled = True

    context['form'] = form

    return render(request,
                  "productdb/import/import_products.html",
                  context=context)
Esempio n. 3
0
def import_products(request):
    """import of products using Excel
    :param request:
    :return:
    """
    context = {}
    if request.method == "POST":
        form = ImportProductsFileUploadForm(request.user, request.POST,
                                            request.FILES)
        if form.is_valid():
            # file is valid, save and execute the import job
            job_file = JobFile(file=request.FILES['excel_file'])
            job_file.save()

            eta = now() + timedelta(seconds=3)
            task = tasks.import_price_list.apply_async(
                eta=eta,
                kwargs={
                    "job_file_id":
                    job_file.id,
                    "create_notification_on_server":
                    not form.cleaned_data["suppress_notification"],
                    "update_only":
                    form.cleaned_data["update_existing_products_only"],
                    "user_for_revision":
                    request.user.username
                })

            set_meta_data_for_task(
                task_id=task.id,
                title="Import products from Excel sheet",
                auto_redirect=False,
                redirect_to=reverse("productdb:import_products"))

            return redirect(
                reverse("task_in_progress", kwargs={"task_id": task.id}))

    else:
        form = ImportProductsFileUploadForm(request.user)

    context['form'] = form

    return render(request,
                  "productdb/import/import_products.html",
                  context=context)