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))
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))