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)
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
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
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)
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
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
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
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
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)