示例#1
0
 def dispatch(self, request, *args, **kwargs):
     self.importer_cls = get_importer(request.GET.get("importer"))
     self.model_str = request.GET.get("importer")
     self.lang = request.GET.get("lang")
     self.supplier = get_supplier(request)
     return super(ImportProcessView, self).dispatch(request, *args,
                                                    **kwargs)
示例#2
0
    def get(self, request, *args, **kwargs):
        importer = request.GET.get("importer")
        file_name = request.GET.get("file_name")
        if not importer or not file_name:
            return HttpResponseBadRequest(_("Invalid parameters"))

        importer_cls = get_importer(importer)
        if not importer_cls or not importer_cls.has_example_file():
            raise Http404(_("Invalid importer"))

        example_file = importer_cls.get_example_file(file_name)
        if not example_file:
            raise Http404(_("Invalid file name"))

        response = HttpResponse(content_type=example_file.content_type)
        response['Content-Disposition'] = 'attachment; filename=%s' % example_file.file_name

        data = importer_cls.get_example_file_content(example_file, request)

        if not data:
            raise Http404(_("File not found"))

        data.seek(0)
        response.write(data.getvalue())
        return response
示例#3
0
    def get(self, request, *args, **kwargs):
        importer = request.GET.get("importer")
        file_name = request.GET.get("file_name")
        if not importer or not file_name:
            return HttpResponseBadRequest(_("Invalid parameters."))

        importer_cls = get_importer(importer)
        if not importer_cls or not importer_cls.has_example_file():
            raise Http404(_("Invalid importer."))

        example_file = importer_cls.get_example_file(file_name)
        if not example_file:
            raise Http404(_("Invalid file name."))

        response = HttpResponse(content_type=example_file.content_type)
        response[
            'Content-Disposition'] = 'attachment; filename=%s' % example_file.file_name

        data = importer_cls.get_example_file_content(example_file, request)

        if not data:
            raise Http404(_("File was not found."))

        data.seek(0)
        response.write(data.getvalue())
        return response
示例#4
0
 def dispatch(self, request, *args, **kwargs):
     self.importer_cls = get_importer(request.GET.get("importer"))
     self.model_str = request.GET.get("importer")
     self.shop = Shop.objects.get(pk=request.GET.get("shop"))
     self.lang = request.GET.get("lang")
     return super(ImportProcessView, self).dispatch(request, *args,
                                                    **kwargs)
示例#5
0
def test_download_examples(rf, admin_user):
    shop = get_default_shop()
    import_url = reverse("shuup_admin:importer.import.new")

    shop.staff_members.add(admin_user)
    client = SmartClient()
    client.login(username="******", password="******")

    # test downloading all default importers
    from shuup.importer.utils import get_importer, get_importer_choices

    assert len(get_importer_choices())
    for importer, name in get_importer_choices():
        importer_cls = get_importer(importer)

        if importer_cls.has_example_file():
            import_response = client.get("{}?importer={}".format(
                import_url, importer_cls.identifier))
            assert import_response.status_code == 200
            assert "This importer provides example files" in import_response.content.decode(
                "utf-8")

            for example_file in importer_cls.example_files:
                assert example_file.file_name in import_response.content.decode(
                    "utf-8")

                # download file
                download_url = "{}?importer={}&file_name={}".format(
                    reverse("shuup_admin:importer.download_example"),
                    importer_cls.identifier, example_file.file_name)
                response = client.get(download_url)

                if importer_cls.identifier == "dummy_file_importer":
                    assert response.status_code == 404
                else:
                    assert response.status_code == 200
                    assert response._headers["content-type"] == (
                        "Content-Type", str(example_file.content_type))
                    assert response._headers["content-disposition"] == (
                        "Content-Disposition",
                        "attachment; filename=%s" % example_file.file_name,
                    )

                    if example_file.template_name:
                        from django.template.loader import get_template

                        template_file = get_template(
                            example_file.template_name).template.filename
                        assert open(
                            template_file,
                            "r").read().strip() == response.content.decode(
                                "utf-8").strip()
                    else:
                        assert response.content
示例#6
0
def test_download_examples(rf, admin_user):
    shop = get_default_shop()
    import_url = reverse("shuup_admin:importer.import")

    shop.staff_members.add(admin_user)
    client = SmartClient()
    client.login(username="******", password="******")

    # test downloading all default importers
    from shuup.importer.utils import get_importer, get_importer_choices

    assert len(get_importer_choices())
    for importer, name in get_importer_choices():
        importer_cls = get_importer(importer)

        if importer_cls.has_example_file():
            import_response = client.get("{}?importer={}".format(import_url, importer_cls.identifier))
            assert import_response.status_code == 200
            assert "This importer provides example files" in import_response.content.decode("utf-8")

            for example_file in importer_cls.example_files:
                assert example_file.file_name in import_response.content.decode("utf-8")

                # download file
                download_url = "{}?importer={}&file_name={}".format(
                    reverse("shuup_admin:importer.download_example"),
                    importer_cls.identifier,
                    example_file.file_name
                )
                response = client.get(download_url)

                if importer_cls.identifier == "dummy_file_importer":
                    assert response.status_code == 404
                else:
                    assert response.status_code == 200
                    assert response._headers["content-type"] == ("Content-Type", str(example_file.content_type))
                    assert response._headers["content-disposition"] == ("Content-Disposition", 'attachment; filename=%s' % example_file.file_name)

                    if example_file.template_name:
                        from django.template.loader import get_template
                        template_file = get_template(example_file.template_name).template.filename
                        assert open(template_file, "r").read().strip() == response.content.decode("utf-8").strip()
                    else:
                        assert response.content
示例#7
0
    def get_context_data(self, **kwargs):
        context = super(ImportView, self).get_context_data(**kwargs)

        # check whether the importer has a example file template
        # if so, we also add a url to download the example file
        importer = self.request.GET.get("importer")

        # no importer passed, get the first choice available
        if not importer:
            importers = list(get_importer_choices())
            if importers:
                importer = importers[0][0]

        if importer:
            importer_cls = get_importer(importer)
            context.update(importer_cls.get_help_context_data(self.request))
            context["importer"] = importer_cls

        return context
示例#8
0
    def get_context_data(self, **kwargs):
        context = super(ImportView, self).get_context_data(**kwargs)

        # check whether the importer has a example file template
        # if so, we also add a url to download the example file
        importer = self.request.GET.get("importer")

        # no importer passed, get the first choice available
        if not importer:
            importers = list(get_importer_choices())
            if importers:
                importer = importers[0][0]

        if importer:
            importer_cls = get_importer(importer)
            context.update(importer_cls.get_help_context_data(self.request))
            context["importer"] = importer_cls

        return context
示例#9
0
    def get_context_data(self, **kwargs):
        context = super(ImportView, self).get_context_data(**kwargs)
        shop = get_shop(self.request)

        context["supplier"] = Supplier.objects.filter(shops=shop).first()

        # check whether the importer has a example file template
        # if so, we also add a url to download the example file
        importer = self.request.GET.get("importer")

        # no importer passed, get the first choice available
        if not importer:
            importers = list(get_importer_choices())
            if importers:
                importer = importers[0][0]

        if importer:
            context["importer"] = get_importer(importer)

        return context
示例#10
0
 def dispatch(self, request, *args, **kwargs):
     self.importer_cls = get_importer(request.GET.get("importer"))
     self.model_str = request.GET.get("importer")
     self.lang = request.GET.get("lang")
     return super(ImportProcessView, self).dispatch(request, *args, **kwargs)