summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2013-04-13 13:05:02 -0500
committerDan McGee <dan@archlinux.org>2013-04-13 13:05:02 -0500
commit7fc8da7d959556b1204b7864959e73e7f5f5ec59 (patch)
tree4418bedeefbdff3d1c7bb2678656b98c978e24d7
parentf2a6316be0b025a9ee22f22d34df1c00f60a8bdf (diff)
Show replacments for package if it has been removed
This covers the case where we can't find the package in any other repositories, but it was removed recently enough that we have a found package update object. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--packages/models.py9
-rw-r--r--packages/views/display.py2
2 files changed, 11 insertions, 0 deletions
diff --git a/packages/models.py b/packages/models.py
index 7bcdc000..92566a56 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -321,6 +321,15 @@ class Update(models.Model):
return Package.objects.normal().filter(
pkgname=self.pkgname, arch=self.arch)
+ def replacements(self):
+ pkgs = Package.objects.normal().filter(
+ replaces__name=self.pkgname)
+ if not self.arch.agnostic:
+ # make sure we match architectures if possible
+ arches = self.pkg.applicable_arches()
+ pkgs = pkgs.filter(arch__in=arches)
+ return pkgs
+
def __unicode__(self):
return u'%s of %s on %s' % (self.get_action_flag_display(),
self.pkgname, self.created)
diff --git a/packages/views/display.py b/packages/views/display.py
index fcf8fdea..50783835 100644
--- a/packages/views/display.py
+++ b/packages/views/display.py
@@ -55,6 +55,8 @@ def recently_removed_package(request, name, repo, arch, cutoff=CUTOFF):
try:
update = match.latest()
elsewhere = update.elsewhere()
+ if len(elsewhere) == 0:
+ elsewhere = update.replacements()
if len(elsewhere) == 1:
return redirect(elsewhere[0])
context = {