from contextlib import contextmanager
from datetime import datetime
from datetime import timezone
+from shutil import rmtree
from typing import Optional
from dateutil.parser import isoparse
from whoosh.util.times import timespan
from whoosh.writing import AsyncWriter
-# from documents.models import CustomMetadata
from documents.models import CustomFieldInstance
from documents.models import Document
from documents.models import Note
except Exception:
logger.exception("Error while opening the index, recreating.")
- if not os.path.isdir(settings.INDEX_DIR):
- settings.INDEX_DIR.mkdir(parents=True, exist_ok=True)
+ # create_in doesn't handle corrupted indexes very well, remove the directory entirely first
+ if os.path.isdir(settings.INDEX_DIR):
+ rmtree(settings.INDEX_DIR)
+ settings.INDEX_DIR.mkdir(parents=True, exist_ok=True)
+
return create_in(settings.INDEX_DIR, get_schema())
import shutil
import tempfile
from collections.abc import Iterable
+from pathlib import Path
from random import randint
from django.contrib.admin.models import LogEntry
mime_type="application/pdf",
)
- self.index_dir = tempfile.mkdtemp()
+ self.index_dir = Path(tempfile.mkdtemp())
# TODO: we should not need the index here.
override_settings(INDEX_DIR=self.index_dir).enable()