from django.apps import AppConfig
from django.core import checks

from .checks import storage_check


class S3FileConfig(AppConfig):
    name = "s3file"
    verbose_name = "S3File"

    def ready(self):
        from django import forms
        from django.core.files.storage import FileSystemStorage, default_storage
        from storages.backends.s3boto3 import S3Boto3Storage

        from .forms import S3FileInputMixin

        if (
            isinstance(default_storage, (S3Boto3Storage, FileSystemStorage))
            and S3FileInputMixin not in forms.ClearableFileInput.__bases__
        ):
            forms.ClearableFileInput.__bases__ = (
                S3FileInputMixin,
            ) + forms.ClearableFileInput.__bases__

        elif S3FileInputMixin in forms.ClearableFileInput.__bases__:
            forms.ClearableFileInput.__bases__ = tuple(
                cls
                for cls in forms.ClearableFileInput.__bases__
                if cls is not S3FileInputMixin
            )

        checks.register(storage_check, checks.Tags.security, deploy=True)
