فهرست منبع

HUE-648. [fb] filebrowser.views.view() makes too many filesystem calls

Do only one filesystem call with stats instead of isdir and possibly isfile.
Romain Rigaux 13 سال پیش
والد
کامیت
94c2d3bb0a
1فایلهای تغییر یافته به همراه7 افزوده شده و 5 حذف شده
  1. 7 5
      apps/filebrowser/src/filebrowser/views.py

+ 7 - 5
apps/filebrowser/src/filebrowser/views.py

@@ -109,11 +109,13 @@ def view(request, path):
     if request.GET.get('default_to_home') and request.fs.isdir(home_dir_path):
         return format_preserving_redirect(request, urlresolvers.reverse(view, kwargs=dict(path=home_dir_path)))
 
-    if request.fs.isdir(path):
-        return listdir(request, path, False)
-    elif request.fs.isfile(path):
-        return display(request, path)
-    else:
+    try:
+        stats = request.fs.stats(path)
+        if stats.isDir:
+            return listdir(request, path, False)
+        else:
+            return display(request, path)
+    except IOError:
         raise Http404("File not found: %s" % escape(path))