From: Michael Tremer Date: Sun, 17 Jul 2022 09:20:58 +0000 (+0000) Subject: packages: Refactor filelist X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=80a410a3436506a2c3b46a7b6a87fbd7d6414edb;p=pbs.git packages: Refactor filelist Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/misc.py b/src/buildservice/misc.py index 0db857c6..5c331b58 100644 --- a/src/buildservice/misc.py +++ b/src/buildservice/misc.py @@ -5,7 +5,6 @@ import os import random import re import string -import tarfile import unicodedata from .constants import * @@ -85,16 +84,6 @@ def friendly_time(t): return " ".join(ret) -def format_filemode(filetype, filemode): - if filetype == 2: - prefix = "l" - elif filetype == 5: - prefix = "d" - else: - prefix = "-" - - return prefix + "TODO" # XXX tarfile.filemode(filemode)[1:] - def calc_hash(filename, algo="sha512"): assert algo in hashlib.algorithms diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index 0986f238..bdb7868d 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -6,6 +6,7 @@ import logging import mimetypes import os import shutil +import stat import pakfire from pakfire.constants import ( @@ -507,7 +508,7 @@ class File(base.Object): self.data = data @property - def name(self): + def path(self): return self.data.path @property @@ -516,7 +517,7 @@ class File(base.Object): @property def type(self): - return self.data.type + return stat.S_IFMT(self.mode) @property def config(self): @@ -563,7 +564,7 @@ class File(base.Object): Returns True if this file is downloadable """ # All regular files are downloadable - return self.type == 0 + return self.type == stat.S_IFREG def is_viewable(self): # Empty files cannot be viewed. @@ -571,7 +572,7 @@ class File(base.Object): return False for ext in FILE_EXTENSIONS_VIEWABLE: - if self.name.endswith(ext): + if self.path.endswith(ext): return True return False @@ -582,7 +583,7 @@ class File(base.Object): The (guessed) MIME type of this file """ # Guess the MIME type of the file. - type, encoding = mimetypes.guess_type(self.name) + type, encoding = mimetypes.guess_type(self.path) return type or "application/octet-stream" @@ -596,7 +597,7 @@ class File(base.Object): p = await self.package.open() # Create a helper function to read the entire payload - func = lambda: p.read(self.name) + func = lambda: p.read(self.path) # Read the payload in a separate thread return await asyncio.to_thread(func) diff --git a/src/templates/modules/packages-files-table.html b/src/templates/modules/packages-files-table.html index 73a8d42f..8b3c1025 100644 --- a/src/templates/modules/packages-files-table.html +++ b/src/templates/modules/packages-files-table.html @@ -1,40 +1,37 @@ -
- - - {% for file in filelist %} - - - - - - + + {% end %} + +
- {{ format_filemode(file.type, file.mode) }} - - {{ file.user }}:{{ file.group }} - - {% if file.size is None %} - - - {% else %} - {{ format_size(file.size) }} - {% end %} - - {{ file.name }} - +{% import stat %} + + + + {% for file in filelist %} + + + + - - - {% end %} - -
+ {% set mode = stat.filemode(file.mode) %} + {% set owner = "%6s:%-6s" % (file.user, file.group) %} + {% set size = "%6s" % ("-" if file.size is None else format_size(file.size)) %} + +
{{ mode }} {{ owner }} {{ size }} {{ file.path }}
+
+ - {% if file.is_downloadable() %} - - {{ _("Download") }} - - {% end %} -
- + +
diff --git a/src/templates/packages/view-file.html b/src/templates/packages/view-file.html index 831b4d48..ff1077fd 100644 --- a/src/templates/packages/view-file.html +++ b/src/templates/packages/view-file.html @@ -15,14 +15,14 @@ {{ package }}
  • - {{ _("Current") }}: {{ file.name }} + {{ _("Current") }}: {{ file.path }}
  • {% module Highlight(payload) %} - + {{ _("Download (%s)") % format_size(file.size) }} {% end block %} diff --git a/src/web/base.py b/src/web/base.py index 91fd7f55..5b84eedd 100644 --- a/src/web/base.py +++ b/src/web/base.py @@ -79,7 +79,6 @@ class BaseHandler(tornado.web.RequestHandler): "format_date" : self.format_date, "format_size" : misc.format_size, "friendly_time" : misc.friendly_time, - "format_filemode" : misc.format_filemode, "lang" : self.locale.code[:2], "session" : self.session, "version" : __version__,