summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-09-12 12:48:15 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-04-16 16:38:32 +0200
commitc2764f756035048756866fa4e4d4c75908e5b392 (patch)
treef75b6a596b7c9ac2a8962046a2e90a4eac5085e8 /ishtar_common/views.py
parent771abf03b429e236640bd3a66426246a60fb471d (diff)
downloadIshtar-c2764f756035048756866fa4e4d4c75908e5b392.tar.bz2
Ishtar-c2764f756035048756866fa4e4d4c75908e5b392.zip
✨ Pre-import form: form and view
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py65
1 files changed, 44 insertions, 21 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 1ab5931e4..c590532b9 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1464,17 +1464,18 @@ class GlobalVarEdit(IshtarMixin, AdminLoginRequiredMixin, ModelFormSetView):
"""
-class NewImportView(IshtarMixin, LoginRequiredMixin, CreateView):
+class BaseImportView(IshtarMixin, LoginRequiredMixin):
template_name = "ishtar/form.html"
model = models.Import
form_class = forms.NewImportForm
- page_name = _("Import: create (table)")
def get_success_url(self):
+ if self.object.has_pre_import_form:
+ return reverse("import_pre_import_form", args=[self.object.pk])
return reverse("current_imports")
def get_form_kwargs(self):
- kwargs = super(NewImportView, self).get_form_kwargs()
+ kwargs = super().get_form_kwargs()
kwargs["user"] = self.request.user
return kwargs
@@ -1484,26 +1485,12 @@ class NewImportView(IshtarMixin, LoginRequiredMixin, CreateView):
return HttpResponseRedirect(self.get_success_url())
-class EditImportView(IshtarMixin, LoginRequiredMixin, UpdateView):
- template_name = "ishtar/form.html"
- model = models.Import
- form_class = forms.NewImportForm
- page_name = _("Edit import")
-
- def get_success_url(self):
- return reverse("current_imports")
-
- def get_form_kwargs(self):
- kwargs = super(EditImportView, self).get_form_kwargs()
- kwargs["user"] = self.request.user
-
- return kwargs
+class NewImportView(BaseImportView, CreateView):
+ page_name = _("Import: create (table)")
- def form_valid(self, form):
- user = models.IshtarUser.objects.get(pk=self.request.user.pk)
- self.object = form.save(user=user)
- return HttpResponseRedirect(self.get_success_url())
+class EditImportView(BaseImportView, UpdateView):
+ page_name = _("Import: edit (table)")
class NewImportGISView(NewImportView):
@@ -1520,6 +1507,42 @@ class NewImportGroupView(NewImportView):
page_name = _("Import: create (group)")
+class ImportPreFormView(IshtarMixin, LoginRequiredMixin, FormView):
+ template_name = "ishtar/form.html"
+ form_class = forms.PreImportForm
+ page_name = _("Import: pre-form")
+
+ def get_success_url(self):
+ return reverse("current_imports")
+
+ def dispatch(self, request, *args, **kwargs):
+ self.user = models.IshtarUser.objects.get(pk=self.request.user.pk)
+ try:
+ self.import_item = models.Import.objects.get(pk=self.kwargs["import_id"])
+ except models.Import.DoesNotExist:
+ raise Http404()
+ if not self.import_item.is_available(self.user):
+ raise Http404()
+ if not self.import_item.importer_type.columns.filter(col_number__lte=0).count():
+ # no pre-form fields
+ raise Http404()
+ return super().dispatch(request, *args, **kwargs)
+
+ def get_form_kwargs(self):
+ kwargs = super().get_form_kwargs()
+ kwargs["import_item"] = self.import_item
+ return kwargs
+
+ def get_context_data(self, **kwargs):
+ data = super().get_context_data(**kwargs)
+ data["page_name"] = self.page_name
+ return data
+
+ def form_valid(self, form):
+ self.object = form.save()
+ return HttpResponseRedirect(self.get_success_url())
+
+
class ImportListView(IshtarMixin, LoginRequiredMixin, ListView):
template_name = "ishtar/import_list.html"
model = models.Import