import os

from django.conf import settings
from django.core.files.storage import get_storage_class


class OverwriteStorage(get_storage_class()):
    def get_available_name(self, name, max_length):
        """
        Returns a filename that's free on the target storage system, and
        available for new content to be written to. This file storage solves overwrite
        on upload problem.

        Found at https://djangosnippets.org/snippets/976/
        """

        # If the filename already exists, remove it as if it was a true file system
        if self.exists(name):
            os.remove(os.path.join(settings.MEDIA_ROOT, name))

        return name