def index(request, dir_name=None):
    """
    Show list of files on a server-directory.
    """

    path = _get_path(dir_name)
    query = request.GET

    # INITIAL VARIABLES
    results_var = {
        'results_total': 0,
        'results_current': 0,
        'delete_total': 0,
        'thumbs_total': 0,
        'generator_total': 0,
        'select_total': 0
    }
    counter = {}
    for k, v in EXTENSIONS.iteritems():
        counter[k] = 0

    dir_list = os.listdir(os.path.join(PATH_SERVER, path))
    files = []
    for file in dir_list:

        # EXCLUDE FILES MATCHING THUMB_PREFIX OR ANY OF THE EXCLUDE PATTERNS
        filtered = file.startswith('.')
        for re_prefix in filter_re:
            if re_prefix.search(file):
                filtered = True
        if filtered:
            continue
        # only increment results_total if file is not filtered
        results_var['results_total'] += 1

        # CREATE FILEOBJECT
        fileobject = FileObject(file, path, request.GET.get('type', ''))

        # COUNTER/RESULTS
        if fileobject.filetype:
            counter[fileobject.filetype] += 1
        if fileobject.filetype == 'Image' and fileobject.image_is_generated(
        ) == False:
            results_var['generator_total'] += 1
        if fileobject.filetype == 'Image':
            results_var['thumbs_total'] += 1
        if fileobject.filetype != 'Folder':
            results_var['delete_total'] += 1
        elif fileobject.filetype == 'Folder' and fileobject.folder_is_empty():
            results_var['delete_total'] += 1

        # FILTER / SEARCH
        append = False
        if fileobject.filetype == request.GET.get(
                'filter_type', fileobject.filetype) and _get_filterdate(
                    request.GET.get('filter_date', ''), fileobject.date):
            append = True
        if request.GET.get('q') and not re.compile(
                request.GET.get('q').lower(), re.M).search(file.lower()):
            append = False

        # APPEND FILE_LIST
        if append:
            files.append(fileobject)
            results_var['results_current'] += 1

    # SORTING
    files = _sort_by_attr(files, request.GET.get('o', 'date'))
    if request.GET.get('ot') == "desc":
        files.reverse()

    return render_to_response(
        'filebrowser/index.html', {
            'dir': dir_name,
            'files': files,
            'results_var': results_var,
            'query': query,
            'counter': counter,
            'settings_var': _get_settings_var(),
            'breadcrumbs': _get_breadcrumbs(query, dir_name, ''),
            'title': _(u'FileBrowser'),
            'root_path': URL_HOME,
        },
        context_instance=Context(request))
Beispiel #2
0
def browse(request):
    """
    Browse Files/Directories.
    """
    
    # QUERY / PATH CHECK
    query = request.GET
    directory = query.get('dir', '')
    path = _get_path(directory)

    if path is None:
        msg = _('Directory/File does not exist.')
        request.user.message_set.create(message=msg)
        if directory == '':
           # The DIRECTORY does not exist, raise an error to prevent
           # eternal redirecting.
           raise ImproperlyConfigured, _("Error finding upload directory. "+
                                         "Maybe it does not exist?")
        return HttpResponseRedirect(reverse("fb_browse"))
    abs_path = os.path.join(settings.MEDIA_ROOT, DIRECTORY, path)
    
    # INITIAL VARIABLES
    results_var = {'results_total': 0, 'results_current': 0, 'delete_total': 0, 'images_total': 0, 'select_total': 0 }
    counter = {}
    for k,v in EXTENSIONS.iteritems():
        counter[k] = 0
    
    dir_list = os.listdir(abs_path)
    files = []
    for file in dir_list:
        
        # EXCLUDE FILES MATCHING VERSIONS_PREFIX OR ANY OF THE EXCLUDE PATTERNS
        filtered = file.startswith('.')
        for re_prefix in filter_re:
            if re_prefix.search(file):
                filtered = True
        if filtered:
            continue
        results_var['results_total'] += 1
        
        # CREATE FILEOBJECT
        fileobject = FileObject(os.path.join(DIRECTORY, path, file))
        
        # COUNTER/RESULTS
        if fileobject.filetype:
            counter[fileobject.filetype] += 1
        if fileobject.filetype == 'Image':
            results_var['images_total'] += 1
        if fileobject.filetype != 'Folder':
            results_var['delete_total'] += 1
        elif fileobject.filetype == 'Folder' and fileobject.is_empty:
            results_var['delete_total'] += 1
        if query.get('type') and query.get('type') in SELECT_FORMATS and fileobject.filetype in SELECT_FORMATS[query.get('type')]:
            results_var['select_total'] += 1
        elif not query.get('type'):
            results_var['select_total'] += 1
        
        # FILTER / SEARCH
        append = False
        if fileobject.filetype == request.GET.get('filter_type', fileobject.filetype) and _get_filterdate(request.GET.get('filter_date', ''), fileobject.date):
            append = True
        if request.GET.get('q') and not re.compile(request.GET.get('q').lower(), re.M).search(file.lower()):
            append = False
        
        # APPEND FILE_LIST
        if append:
            files.append(fileobject)
            results_var['results_current'] += 1
    
    # SORTING
    files = _sort_by_attr(files, request.GET.get('o', 'date'))
    if request.GET.get('ot') == "desc":
        files.reverse()
    
    return render_to_response('filebrowser/index.html', {
        'dir': path,
        'files': files,
        'results_var': results_var,
        'counter': counter,
        'query': query,
        'title': _(u'FileBrowser'),
        'settings_var': _get_settings_var(),
        'breadcrumbs': _get_breadcrumbs(query, path, ''),
    }, context_instance=Context(request))