diff --git a/import_export_celery/fields.py b/import_export_celery/fields.py index 371b2a9..7badc92 100644 --- a/import_export_celery/fields.py +++ b/import_export_celery/fields.py @@ -3,11 +3,15 @@ from django.db import models +def lazy_initialize_storage_class(): + # If the user has specified a custom storage backend, use it. + if getattr(settings, "IMPORT_EXPORT_CELERY_STORAGE", None): + storage_class = get_storage_class(settings.IMPORT_EXPORT_CELERY_STORAGE) + return storage_class() + return None + + class ImportExportFileField(models.FileField): def __init__(self, *args, **kwargs): - # If the user has specified a custom storage backend, use it. - if getattr(settings, "IMPORT_EXPORT_CELERY_STORAGE", None): - storage_class = get_storage_class(settings.IMPORT_EXPORT_CELERY_STORAGE) - kwargs["storage"] = storage_class() - + kwargs["storage"] = lazy_initialize_storage_class super().__init__(*args, **kwargs) diff --git a/import_export_celery/migrations/0010_auto_20231013_0904.py b/import_export_celery/migrations/0010_auto_20231013_0904.py new file mode 100644 index 0000000..c4ea04d --- /dev/null +++ b/import_export_celery/migrations/0010_auto_20231013_0904.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.18 on 2023-10-13 09:04 + +from django.db import migrations +import import_export_celery.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('import_export_celery', '0009_alter_exportjob_options_alter_importjob_options_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='exportjob', + name='file', + field=import_export_celery.fields.ImportExportFileField(max_length=255, storage=import_export_celery.fields.lazy_initialize_storage_class, upload_to='django-import-export-celery-export-jobs', verbose_name='exported file'), + ), + migrations.AlterField( + model_name='importjob', + name='change_summary', + field=import_export_celery.fields.ImportExportFileField(blank=True, null=True, storage=import_export_celery.fields.lazy_initialize_storage_class, upload_to='django-import-export-celery-import-change-summaries', verbose_name='Summary of changes made by this import'), + ), + migrations.AlterField( + model_name='importjob', + name='file', + field=import_export_celery.fields.ImportExportFileField(max_length=255, storage=import_export_celery.fields.lazy_initialize_storage_class, upload_to='django-import-export-celery-import-jobs', verbose_name='File to be imported'), + ), + ]