def get_media_backend(fail_silently=True, handles_media_types=None, 
    handles_file_extensions=None):
        """
        Returns the MediaBackend subclass that is configured for use with 
        media_tree.
        """
        backends = app_settings.MEDIA_TREE_MEDIA_BACKENDS
        if not len(backends):
            if not fail_silently:
                raise ImproperlyConfigured(
                    'There is no media backend configured. Please define '
                    'MEDIA_TREE_MEDIA_BACKENDS in your settings.')
            else:
                return False
        
        # Traverse backends until there is one supporting what's requested:
        for path in backends:    
            backend = get_module_attr(path)
            hmt = (not handles_media_types
                   or backend.handles_media_types(handles_media_types))
            hfe = (not handles_file_extensions
                   or backend.handles_file_extensions(handles_file_extensions))
            if hmt and hfe:
                return backend
    
        if not fail_silently:
            raise ImproperlyConfigured('There is no media backend configured '
                                       'to handle the specified file types.')
        return False
예제 #2
0
def get_media_backend(fail_silently=True, handles_media_types=None, 
    handles_file_extensions=None, supports_thumbnails=None):
        """
        Returns the MediaBackend subclass that is configured for use with 
        media_tree.
        """
        backends = app_settings.MEDIA_TREE_MEDIA_BACKENDS
        if not len(backends):
            if not fail_silently:
                raise ImproperlyConfigured('There is no media backend configured.'  \
                    + ' Please define `MEDIA_TREE_MEDIA_BACKENDS` in your settings.')
            else:
                return False
        
        for path in backends:
            # Traverse backends until there is one supporting what's requested:
            backend = get_module_attr(path)
            if (not handles_media_types or backend.handles_media_types(handles_media_types))  \
                and (not handles_file_extensions or backend.handles_file_extensions(handles_file_extensions))  \
                and (not supports_thumbnails or backend.supports_thumbnails()):
                    return backend
    
        if not fail_silently:
            raise ImproperlyConfigured('There is no media backend configured to handle'  \
                ' the specified file types.')
        return False
예제 #3
0
def get_media_backend(fail_silently=True,
                      handles_media_types=None,
                      handles_file_extensions=None):
    """
        Returns the MediaBackend subclass that is configured for use with 
        media_tree.
        """
    backends = app_settings.MEDIA_TREE_MEDIA_BACKENDS
    if not len(backends):
        if not fail_silently:
            raise ImproperlyConfigured('There is no media backend configured.'  \
                + ' Please define `MEDIA_TREE_MEDIA_BACKENDS` in your settings.')
        else:
            return False

    for path in backends:
        # Traverse backends until there is one supporting what's requested:
        backend = get_module_attr(path)
        if (not handles_media_types or backend.handles_media_types(handles_media_types))  \
            and (not handles_file_extensions or backend.handles_file_extensions(handles_file_extensions)):
            return backend

    if not fail_silently:
        raise ImproperlyConfigured('There is no media backend configured to handle'  \
            ' the specified file types.')
    return False
예제 #4
0
def get_icon_finders(finder_names):
    global ICON_FINDERS
    if not ICON_FINDERS:
        finders = []
        for finder_name in finder_names:
            finder = get_module_attr(finder_name)
            if not hasattr(finder, 'find'):
                raise ImproperlyConfigured('Module "%s" does not define a "find" method' % finder_name)
            finders.append(finder)
        ICON_FINDERS = finders
    return ICON_FINDERS
예제 #5
0
def get_icon_finders(finder_names):
    global ICON_FINDERS
    if not ICON_FINDERS:
        finders = []
        for finder_name in finder_names:
            finder = get_module_attr(finder_name)
            if not hasattr(finder, 'find'):
                raise ImproperlyConfigured(
                    'Module "%s" does not define a "find" method' %
                    finder_name)
            finders.append(finder)
        ICON_FINDERS = finders
    return ICON_FINDERS