diff options
-rw-r--r-- | ishtar_common/models_imports.py | 23 | ||||
-rw-r--r-- | ishtar_common/views.py | 15 | ||||
-rw-r--r-- | ishtar_common/views_api.py | 16 |
3 files changed, 34 insertions, 20 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 2b568df21..3d8cce882 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -1683,7 +1683,8 @@ class BaseImport(models.Model, OwnPerms, SheetItem): def get_imported_images(self): return self.imported_images - def delayed_importation(self, request, session_key): + def delayed_importation(self, request): + session_key = request.session.session_key if request else None if not settings.USE_BACKGROUND_TASK: return self.importation(request=request, session_key=session_key) put_session_message( @@ -2989,6 +2990,24 @@ class Import(BaseImport): continue ImportLineError.objects.get_or_create(import_item=self, line=idx) + def start_import(self, request=None): + if settings.USE_BACKGROUND_TASK: + self.delayed_importation(request) + return + try: + self.importation() + except ImporterError as e: + self.state = "FE" + self.end_date = timezone.now() + self.save() + if request: + put_session_message( + request.session.session_key, + f"{self} - {e}", + "warning", + ) + + def save(self, *args, **kwargs): maj_imported_file = False if getattr(self, "_maj_imported_file", False): @@ -3013,7 +3032,7 @@ class Import(BaseImport): self.initialize() if not self.pre_import_form_is_valid or self.need_matching(): return - self.importation() + self.start_import() def pre_delete_import(sender, **kwargs): diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 107ba7178..a9fbfd7c8 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1975,20 +1975,7 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView): session_key=request.session.session_key, ) elif can_edit and action == "I": - if settings.USE_BACKGROUND_TASK: - imprt.delayed_importation(request, request.session.session_key) - else: - try: - imprt.importation() - except ImporterError as e: - imprt.state = "FE" - imprt.end_date = timezone.now() - imprt.save() - put_session_message( - request.session.session_key, - f"{imprt} - {e}", - "warning", - ) + imprt.start_import(request) elif can_edit and action == "CH": if settings.USE_BACKGROUND_TASK: imprt.delayed_check_modified(request.session.session_key) diff --git a/ishtar_common/views_api.py b/ishtar_common/views_api.py index 93dcdf901..e0226811b 100644 --- a/ishtar_common/views_api.py +++ b/ishtar_common/views_api.py @@ -19,6 +19,7 @@ from django.apps import apps from django.http import Http404 +from django.utils.translation import gettext_lazy as _ import html from urllib.parse import unquote_plus @@ -152,9 +153,16 @@ class GISImportAPI(GISBaseImportView, GISAPIView): if serializer.is_valid(): chunk = serializer.save() new_import = chunk.associate_chunks() + msg = "" + if new_import and new_import.import_immediatly: + if not new_import.pre_import_form_is_valid: + msg = _("Import not started - Pre import form need to be completed") + elif new_import.need_matching(): + msg = _("Import not started - Value matches must be made") chunk_slug = f"{importer_slug}-{data['send_datetime']}-{data['number']}" - return Response( - {"chunk": chunk_slug, "import": new_import.id if new_import else None}, - status=status.HTTP_201_CREATED - ) + return Response({ + "chunk": chunk_slug, + "import": new_import.id if new_import else None, + "message": msg + }, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |