# Generated by Django 3.1.2 on 2020-10-29 14:29 import os from django.db import migrations from django.conf import settings def make_index(apps, schema_editor): Document = apps.get_model("documents", "Document") documents = Document.objects.all() print() try: print(" --> Creating document index...") from whoosh.writing import AsyncWriter from documents import index ix = index.open_index(recreate=True) with AsyncWriter(ix) as writer: for document in documents: index.update_document(writer, document) except ImportError: # index may not be relevant anymore print(" --> Cannot create document index.") def restore_filenames(apps, schema_editor): Document = apps.get_model("documents", "Document") for doc in Document.objects.all(): file_name = "{:07}.{}".format(doc.pk, doc.file_type) if doc.storage_type == "gpg": file_name += ".gpg" if not doc.filename == file_name: try: print("file was renamed, restoring {} to {}".format(doc.filename, file_name)) os.rename(os.path.join(settings.ORIGINALS_DIR, doc.filename), os.path.join(settings.ORIGINALS_DIR, file_name)) except PermissionError: pass except FileNotFoundError: pass def initialize_document_classifier(apps, schema_editor): try: print("Initalizing document classifier...") from documents.classifier import DocumentClassifier classifier = DocumentClassifier() try: classifier.train() classifier.save_classifier() except Exception as e: print("Classifier error: {}".format(e)) except ImportError: print("Document classifier not found, skipping") class Migration(migrations.Migration): dependencies = [ ('documents', '0023_document_current_filename'), ] operations = [ migrations.RunPython(make_index, migrations.RunPython.noop), migrations.RunPython(restore_filenames), migrations.RunPython(initialize_document_classifier, migrations.RunPython.noop), migrations.RemoveField( model_name='document', name='filename', ), ]