From 5f85a1240da14e57760c2ba6585ae943d7a1d8c2 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Tue, 31 Jul 2012 19:31:44 -0500 Subject: Reuse removed template for packages with multiple replacements For example, bitcoin-git in the Arch repos is currently marked replaced by both bitcoin-qt and bitcoin-daemon. This allows us to show a page with both options listed instead of a blank 404 page. Signed-off-by: Dan McGee --- packages/views/display.py | 24 ++++++++++++++++++++---- templates/packages/removed.html | 12 ++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/packages/views/display.py b/packages/views/display.py index d6922314..8adf3bee 100644 --- a/packages/views/display.py +++ b/packages/views/display.py @@ -50,12 +50,19 @@ def recently_removed_package(request, name, repo, arch, cutoff=CUTOFF): when = now() - cutoff match = match.filter(created__gte=when) try: - match = match.latest() - elsewhere = match.elsewhere() + update = match.latest() + elsewhere = update.elsewhere() if len(elsewhere) == 1: return redirect(elsewhere[0]) - return render(request, 'packages/removed.html', - {'update': match, }, status=410) + context = { + 'update': update, + 'elsewhere': elsewhere, + 'name': name, + 'version': update.old_version, + 'arch': arch, + 'repo': repo, + } + return render(request, 'packages/removed.html', context, status=410) except Update.DoesNotExist: return None @@ -66,6 +73,15 @@ def replaced_package(request, name, repo, arch): match = Package.objects.filter(replaces__name=name, repo=repo, arch=arch) if len(match) == 1: return redirect(match[0], permanent=True) + elif len(match) > 1: + context = { + 'elsewhere': match, + 'name': name, + 'version': '', + 'arch': arch, + 'repo': repo, + } + return render(request, 'packages/removed.html', context, status=410) return None diff --git a/templates/packages/removed.html b/templates/packages/removed.html index 17b1f989..ea20ce80 100644 --- a/templates/packages/removed.html +++ b/templates/packages/removed.html @@ -2,17 +2,17 @@ {% load url from future %} {% load package_extras %} -{% block title %}Arch Linux - Not Available - {{ update.pkgname }} {{ update.old_version }} ({{ update.arch.name }}){% endblock %} +{% block title %}Arch Linux - Not Available - {{ name }} {{ version }} ({{ arch.name }}){% endblock %} {% block navbarclass %}anb-packages{% endblock %} {% block content %}
-

{{ update.pkgname }} {{ update.old_version }} is no longer available

+

{{ name }} {{ version }} is no longer available

-

{{ update.pkgname }} {{ update.old_version }} has been removed from the [{{ update.repo.name|lower }}] repository.

+

{{ name }} {{ version }} has been removed from the [{{ repo.name|lower }}] repository.

- {% with update.elsewhere as elsewhere %}{% if elsewhere %} -

However, this package is available in other repositories:

+ {% if elsewhere %} +

However, this package or replacements are available elsewhere:

    {% for pkg in elsewhere %}
  • {% pkg_details_link pkg %} {{ pkg.full_version }} [{{ pkg.repo.name|lower }}] ({{ pkg.arch.name }})
  • @@ -23,6 +23,6 @@

    {{ update.pkgname }} {{ update.old_version }} is no longer available

    Try using the package search page, or try searching the AUR to see if the package can be found there.

    - {% endif %}{% endwith %} + {% endif %}
{% endblock %} -- cgit v1.2.3-54-g00ecf