]> arthur.barton.de Git - bup.git/blobdiff - lib/bup/cmd/web.py
Remove Client __del__ in favor of context management
[bup.git] / lib / bup / cmd / web.py
index ccac6faaecc8da780bcfdb60ab0d1d7d4c6c5ef6..20333cbbbb47f11b9685ef7186a029ade7c75ed8 100755 (executable)
@@ -64,7 +64,7 @@ def _dir_contents(repo, resolution, show_hidden=False):
 
     url_query = b'?hidden=1' if show_hidden else b''
 
-    def display_info(name, item, resolved_item, display_name=None):
+    def display_info(name, item, resolved_item, display_name=None, omitsize=False):
         global opt
         # link should be based on fully resolved type to avoid extra
         # HTTP redirect.
@@ -73,31 +73,36 @@ def _dir_contents(repo, resolution, show_hidden=False):
             link += '/'
         link = link.encode('ascii')
 
-        size = vfs.item_size(repo, item)
-        if opt.human_readable:
-            display_size = format_filesize(size)
+        if not omitsize:
+            size = vfs.item_size(repo, item)
+            if opt.human_readable:
+                display_size = format_filesize(size)
+            else:
+                display_size = size
         else:
-            display_size = size
+            display_size = None
 
         if not display_name:
             mode = vfs.item_mode(item)
             if stat.S_ISDIR(mode):
                 display_name = name + b'/'
+                display_size = None
             elif stat.S_ISLNK(mode):
                 display_name = name + b'@'
+                display_size = None
             else:
                 display_name = name
 
         return display_name, link + url_query, display_size
 
-    dir_item = resolution[-1][1]    
+    dir_item = resolution[-1][1]
     for name, item in vfs.contents(repo, dir_item):
         if not show_hidden:
             if (name not in (b'.', b'..')) and name.startswith(b'.'):
                 continue
         if name == b'.':
             parent_item = resolution[-2][1] if len(resolution) > 1 else dir_item
-            yield display_info(b'..', parent_item, parent_item, b'..')
+            yield display_info(b'..', parent_item, parent_item, b'..', omitsize=True)
             continue
         res_item = vfs.ensure_item_has_metadata(repo, item, include_size=True)
         yield display_info(name, item, res_item)
@@ -118,7 +123,7 @@ class BupRequestHandler(tornado.web.RequestHandler):
 
     def head(self, path):
         return self._process_request(path)
-    
+
     def _process_request(self, path):
         print('Handling request for %s' % path)
         sys.stdout.flush()
@@ -159,6 +164,7 @@ class BupRequestHandler(tornado.web.RequestHandler):
             hidden_shown=show_hidden,
             dir_contents=_dir_contents(self.repo, resolution,
                                        show_hidden=show_hidden))
+        return None
 
     @gen.coroutine
     def _get_file(self, repo, path, resolved):
@@ -173,7 +179,7 @@ class BupRequestHandler(tornado.web.RequestHandler):
         ctype = self._guess_type(path)
         self.set_header("Last-Modified", http_date_from_utc_ns(meta.mtime))
         self.set_header("Content-Type", ctype)
-        
+
         self.set_header("Content-Length", str(meta.size))
         assert len(file_item.oid) == 20
         self.set_header("Etag", hexlify(file_item.oid))