1
0
mirror of https://github.com/pypiserver/pypiserver synced 2025-02-22 19:19:37 +01:00

sort files by their version, not alphabetically

This commit is contained in:
Ralf Schmitt 2012-12-12 23:31:58 +01:00
parent 91f04be369
commit 12d6ce6bf8
2 changed files with 14 additions and 4 deletions

@ -7,7 +7,7 @@ else:
from bottle import static_file, redirect, request, HTTPError, Bottle
from pypiserver import __version__
from pypiserver.core import is_allowed_path
from pypiserver.core import is_allowed_path, sort_files_by_version
packages = None
@ -148,7 +148,7 @@ def simple(prefix=""):
if config.redirect_to_fallback:
return redirect("%s/%s/" % (config.fallback_url.rstrip("/"), prefix))
return HTTPError(404)
files.sort()
files = sort_files_by_version(files)
res = ["<html><head><title>Links for %s</title></head><body>\n" % prefix]
res.append("<h1>Links for %s</h1>\n" % prefix)
for x in files:
@ -167,7 +167,7 @@ def list_packages():
fp += "/"
files = packages.find_packages()
files.sort()
files = sort_files_by_version(files)
res = ["<html><head><title>Index of packages</title></head><body>\n"]
for x in files:
x = x.replace("\\", "/")

@ -27,6 +27,17 @@ def guess_pkgname_and_version(path):
return pkgname, version
def sort_files_by_version(files):
from pypiserver.manage import parse_version
res = []
for x in files:
pkgname, version = guess_pkgname_and_version(x)
res.append((os.path.dirname(x), pkgname, parse_version(version), x))
res.sort()
return [x[-1] for x in res]
def is_allowed_path(path_part):
p = path_part.replace("\\", "/")
return not (p.startswith(".") or "/." in p)
@ -226,7 +237,6 @@ def main(argv=None):
err = sys.exc_info()[1]
sys.exit("Error: while trying to list %r: %s" % (root, err))
if command == "update":
packages = pkgset(root)
from pypiserver import manage