From 96e1cade4488e857dc21589b7b0ca622b2578467 Mon Sep 17 00:00:00 2001 From: Hironsan Date: Wed, 18 May 2022 13:39:50 +0900 Subject: [PATCH] Add FileImportException class --- backend/data_import/celery_tasks.py | 4 ++-- backend/data_import/pipeline/exceptions.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/backend/data_import/celery_tasks.py b/backend/data_import/celery_tasks.py index 2ae90b6c..d7585d45 100644 --- a/backend/data_import/celery_tasks.py +++ b/backend/data_import/celery_tasks.py @@ -10,7 +10,7 @@ from django_drf_filepond.models import TemporaryUpload from .datasets import load_dataset from .pipeline.catalog import AudioFile, ImageFile -from .pipeline.exceptions import FileTypeException, MaximumFileSizeException +from .pipeline.exceptions import FileTypeException, MaximumFileSizeException, FileImportException from .pipeline.readers import FileName from projects.models import Project @@ -30,7 +30,7 @@ def check_file_type(filename, file_format: str, filepath: str): def check_uploaded_files(upload_ids: List[str], file_format: str): - errors = [] + errors: List[FileImportException] = [] cleaned_ids = [] temporary_uploads = TemporaryUpload.objects.filter(upload_id__in=upload_ids) for tu in temporary_uploads: diff --git a/backend/data_import/pipeline/exceptions.py b/backend/data_import/pipeline/exceptions.py index d9790ff0..fad70067 100644 --- a/backend/data_import/pipeline/exceptions.py +++ b/backend/data_import/pipeline/exceptions.py @@ -1,4 +1,12 @@ -class FileParseException(Exception): +from typing import Dict, Any + + +class FileImportException(Exception): + def dict(self) -> Dict[str, Any]: + raise NotImplementedError() + + +class FileParseException(FileImportException): def __init__(self, filename: str, line_num: int, message: str): self.filename = filename self.line_num = line_num @@ -11,7 +19,7 @@ class FileParseException(Exception): return {"filename": self.filename, "line": self.line_num, "message": self.message} -class MaximumFileSizeException(Exception): +class MaximumFileSizeException(FileImportException): def __init__(self, filename: str, max_size: int): self.filename = filename self.max_size = max_size @@ -23,7 +31,7 @@ class MaximumFileSizeException(Exception): return {"filename": self.filename, "line": -1, "message": str(self)} -class FileTypeException(Exception): +class FileTypeException(FileImportException): def __init__(self, filename: str, filetype: str, allowed_types=None): self.filename = filename self.filetype = filetype