summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitdb25c90193eb4ab38d9c8c94f07aa28ff15aaf8d (patch)
tree6e94e37b959da3355a3e2b70f7c726d923f59e88
parent145f02926494e34e12ba773485348f9269087431 (diff)
downloadIshtar-db25c90193eb4ab38d9c8c94f07aa28ff15aaf8d.tar.bz2
Ishtar-db25c90193eb4ab38d9c8c94f07aa28ff15aaf8d.zip
✨ Imports groups: delete action
-rw-r--r--ishtar_common/models_imports.py10
-rw-r--r--ishtar_common/templates/ishtar/import_table.html2
-rw-r--r--ishtar_common/urls.py5
-rw-r--r--ishtar_common/views.py21
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