diff options
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 | 
