diff --git a/pulp_python/app/models.py b/pulp_python/app/models.py index bdfe9e7f..8a56e21e 100644 --- a/pulp_python/app/models.py +++ b/pulp_python/app/models.py @@ -3,7 +3,7 @@ from logging import getLogger from pathlib import PurePath -from aiohttp.web import json_response +from aiohttp.web import HTTPFound, json_response from django.conf import settings from django.contrib.postgres.fields import ArrayField from django.core.exceptions import ObjectDoesNotExist @@ -91,6 +91,9 @@ def content_handler(self, path): name = path.parts[1] elif path.match("pypi/*/json"): name = path.parts[1] + elif len(path.parts) >= 2 and path.parts[0] == "packages": + filename = "/".join(path.parts[1:]) + raise HTTPFound(location=f"../{filename}") # 302 elif len(path.parts) and path.parts[0] == "simple": # Temporary fix for PublishedMetadata not being properly served from remote storage # https://github.com/pulp/pulp_python/issues/413 diff --git a/pulp_python/app/pypi/views.py b/pulp_python/app/pypi/views.py index e228d88d..db4b598c 100644 --- a/pulp_python/app/pypi/views.py +++ b/pulp_python/app/pypi/views.py @@ -390,7 +390,7 @@ def retrieve(self, request, path, package): local_releases = { p["filename"]: { **p, - "url": urljoin(self.base_content_url, f"{path}/{p['filename']}"), + "url": urljoin(self.base_content_url, f"{path}/packages/{p['filename']}"), "upload_time": p["repo_added_time"], "provenance": ( self.get_provenance_url(normalized, p["version"], p["filename"])