diff options
author | Dan McGee <dan@archlinux.org> | 2013-04-13 20:05:02 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2013-04-13 20:05:02 +0200 |
commit | 7fc8da7d959556b1204b7864959e73e7f5f5ec59 (patch) | |
tree | 4418bedeefbdff3d1c7bb2678656b98c978e24d7 | |
parent | f2a6316be0b025a9ee22f22d34df1c00f60a8bdf (diff) | |
download | archweb-7fc8da7d959556b1204b7864959e73e7f5f5ec59.tar.gz archweb-7fc8da7d959556b1204b7864959e73e7f5f5ec59.tar.xz |
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.py | 9 | ||||
-rw-r--r-- | packages/views/display.py | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/packages/models.py b/packages/models.py index 7bcdc00..92566a5 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 fcf8fde..5078383 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 = { |