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:
parent
91f04be369
commit
12d6ce6bf8
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user