diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-08-09 17:19:26 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-16 16:38:32 +0200 |
commit | db25c90193eb4ab38d9c8c94f07aa28ff15aaf8d (patch) | |
tree | 6e94e37b959da3355a3e2b70f7c726d923f59e88 /ishtar_common | |
parent | 145f02926494e34e12ba773485348f9269087431 (diff) | |
download | Ishtar-db25c90193eb4ab38d9c8c94f07aa28ff15aaf8d.tar.bz2 Ishtar-db25c90193eb4ab38d9c8c94f07aa28ff15aaf8d.zip |
✨ Imports groups: delete action
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models_imports.py | 10 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/import_table.html | 2 | ||||
-rw-r--r-- | ishtar_common/urls.py | 5 | ||||
-rw-r--r-- | ishtar_common/views.py | 21 |
4 files changed, 32 insertions, 6 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 201b39a5b..22cbf80d9 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -1349,11 +1349,17 @@ class ImportGroup(BaseImport): if self.state == "AC": state = "FE" if any([1 for imp in self.imports.all() if imp.error_file]) else "F" actions.append((state, _("Unarchive"))) - if self.state in ("C", "A"): - actions.append(("ED", _("Edit"))) actions.append(("D", _("Delete"))) return actions + def get_all_imported(self): + imported = [] + for imp in self.imports.all(): + for related, zorg in get_all_related_m2m_objects_with_model(imp): + accessor = related.get_accessor_name() + imported += [(accessor, obj) for obj in getattr(imp, accessor).all()] + return sorted(imported, key=lambda i: i[1].__class__.__name__) + def save(self, *args, **kwargs): add = self._state.adding super().save(*args, **kwargs) diff --git a/ishtar_common/templates/ishtar/import_table.html b/ishtar_common/templates/ishtar/import_table.html index 41ee54f05..39b8e0494 100644 --- a/ishtar_common/templates/ishtar/import_table.html +++ b/ishtar_common/templates/ishtar/import_table.html @@ -65,7 +65,7 @@ $("#import-list").find('input').prop('disabled', true); {{import.status}} </td> <td> - <select class="form-control" name='import-action-{{import.pk}}'> + <select class="form-control" name='import-action-{% if not import.importer_type.type_label %}group-{% endif %}{{import.pk}}'> <option value=''>--------</option> {% for action, lbl in import.get_actions %} <option value='{{action}}'>{{lbl}}</option> diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 9209eea09..16f04175e 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -249,6 +249,11 @@ urlpatterns = [ name="import_delete", ), url( + r"^import-group-delete/(?P<pk>[0-9]+)/$", + views.ImportGroupDeleteView.as_view(), + name="import_group_delete", + ), + url( r"^import-link-unmatched/(?P<pk>[0-9]+)/$", views.ImportLinkView.as_view(), name="import_link_unmatched", diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 2965ada87..74691256b 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1541,9 +1541,13 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): for field in request.POST: if not field.startswith("import-action-") or not request.POST[field]: continue + model = models.Import + is_group = field.startswith("import-action-group-") + if is_group: + model = models.ImportGroup # prevent forged forms try: - imprt = models.Import.objects.get(pk=int(field.split("-")[-1])) + imprt = model.objects.get(pk=int(field.split("-")[-1])) except (models.Import.DoesNotExist, ValueError): continue if not self.request.user.is_superuser: @@ -1553,12 +1557,14 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): continue action = request.POST[field] if action == "D": + url = "import_group_delete" if is_group else "import_delete" return HttpResponseRedirect( - reverse("import_delete", kwargs={"pk": imprt.pk}) + reverse(url, kwargs={"pk": imprt.pk}) ) elif action == "ED": + url = "edit_import_group" if is_group else "edit_import" return HttpResponseRedirect( - reverse("edit_import", kwargs={"pk": imprt.pk}) + reverse(url, kwargs={"pk": imprt.pk}) ) elif action == "A": imprt.initialize( @@ -2068,6 +2074,15 @@ class ImportDeleteView(IshtarMixin, LoginRequiredMixin, DeleteView): return reverse("current_imports") +class ImportGroupDeleteView(IshtarMixin, LoginRequiredMixin, DeleteView): + template_name = "ishtar/import_delete.html" + model = models.ImportGroup + page_name = _("Delete import") + + def get_success_url(self): + return reverse("current_imports") + + class PersonCreate(LoginRequiredMixin, CreateView): model = models.Person form_class = forms.BasePersonForm |