summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-07-31 19:31:44 -0500
committerDan McGee <dan@archlinux.org>2012-07-31 19:31:44 -0500
commit5f85a1240da14e57760c2ba6585ae943d7a1d8c2 (patch)
treeb15a473edcc0db3f9cb3943ad9802e1ff1e8f692
parent5f410c000eaca4b5b25664f4dfb59cbe85ea034e (diff)
downloadarchweb-5f85a1240da14e57760c2ba6585ae943d7a1d8c2.tar.gz
archweb-5f85a1240da14e57760c2ba6585ae943d7a1d8c2.zip
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 <dan@archlinux.org>
-rw-r--r--packages/views/display.py24
-rw-r--r--templates/packages/removed.html12
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 %}
<div id="pkg-gone" class="box">
- <h2>{{ update.pkgname }} {{ update.old_version }} is no longer available</h2>
+ <h2>{{ name }} {{ version }} is no longer available</h2>
- <p>{{ update.pkgname }} {{ update.old_version }} has been removed from the [{{ update.repo.name|lower }}] repository.</p>
+ <p>{{ name }} {{ version }} has been removed from the [{{ repo.name|lower }}] repository.</p>
- {% with update.elsewhere as elsewhere %}{% if elsewhere %}
- <p>However, this package is available in other repositories:</p>
+ {% if elsewhere %}
+ <p>However, this package or replacements are available elsewhere:</p>
<ul>
{% for pkg in elsewhere %}
<li>{% pkg_details_link pkg %} {{ pkg.full_version }} [{{ pkg.repo.name|lower }}] ({{ pkg.arch.name }})</li>
@@ -23,6 +23,6 @@
Try using the <a href="{% url 'packages-search' %}?name={{ update.pkgname|urlencode }}">package search page</a>,
or try <a href="https://aur.archlinux.org/packages.php?K={{ update.pkgname|urlencode }}">searching the AUR</a>
to see if the package can be found there.</p>
- {% endif %}{% endwith %}
+ {% endif %}
</div>
{% endblock %}