Commit d81ae94e authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

repeat post-treatments when file is respawned

parent 1ccf4a2d
Loading
Loading
Loading
Loading
+46 −35
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ from .fileresponse import RangedFileResponse
from django.views.decorators.gzip import gzip_page
import logging
from functools import lru_cache
from resources.tasks import post_upload_treatment

importlib = __import__("importlib")

@@ -255,6 +256,7 @@ def upload_partial(request: HttpRequest) -> HttpResponse:
            file_instance.title = file_name
            file_instance.original_name = file_name
            file_instance.save()
            post_upload_treatment(file_instance.pk)
            logger.info(
                "User {}({}) respawned file {}".format(
                    user.username, user.pk, file_instance.pk
@@ -307,7 +309,7 @@ def upload_partial(request: HttpRequest) -> HttpResponse:
            checksum_ok = True
        else:
            checksum_ok = False

        try:
            with open(f_name, "rb") as f:
                try:
                    with transaction.atomic():
@@ -325,8 +327,12 @@ def upload_partial(request: HttpRequest) -> HttpResponse:
                            )
                        )
                        if origin_dir:
                        collection = _collection_from_origin_dir(origin_dir, project)
                        collection.resources.add(models.File.objects.get(id=file_id))
                            collection = _collection_from_origin_dir(
                                origin_dir, project
                            )
                            collection.resources.add(
                                models.File.objects.get(id=file_id)
                            )
                            logger.info(
                                "User {}({}) added file({}) to collection({})".format(
                                    user.username, user.pk, file_id, collection.pk
@@ -341,11 +347,16 @@ def upload_partial(request: HttpRequest) -> HttpResponse:
                    return HttpResponse("Type de fichier inconnu", status=400)
                except ResourceError:
                    _silent_rmdir(partials_dir)
                return HttpResponse("Impossible d'enregistrer la ressource", status=400)
                    return HttpResponse(
                        "Impossible d'enregistrer la ressource", status=400
                    )
                except ConcurrencyError:
                    # Concurrency problem with clients sending multiple chunks in parallel.
                    # Nothing to do here, work has already been done.
                    return HttpResponse("Too Many Requests", status=429)
        # another race condition
        except FileNotFoundError:
            return HttpResponse("Too Many Requests", status=429)
    return HttpResponse(status=202)