summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 = {