From f579f88e174abfd0514788879fd190035b6bbf87 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 11 Mar 2013 09:23:44 -0500 Subject: Don't link to a one-element listing page from recent updates If a package is built as a split package where pkgname != pkgbase, but only one actual split package is produced, the link on the recent update screen requires an extra click to get to the single package. Fix this by linking directly to the package itself. (Examples in current repos: ntfs-3g, python2-south) Signed-off-by: Dan McGee --- public/utils.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'public/utils.py') diff --git a/public/utils.py b/public/utils.py index c2838212..fcfd0f77 100644 --- a/public/utils.py +++ b/public/utils.py @@ -1,3 +1,4 @@ +from collections import defaultdict from operator import attrgetter from main.models import Arch, Repo, Package @@ -44,10 +45,14 @@ def package_links(self): else: # fake out the template- this is slightly hacky but yields one # 'package-like' object per arch which is what the normal loop does - arches = set() + by_arch = defaultdict(list) for package in self.others: - if package.arch not in arches and not arches.add(package.arch): - yield PackageStandin(package) + by_arch[package.arch].append(package) + for arch, packages in by_arch.items(): + if len(packages) == 1: + yield packages[0] + else: + yield PackageStandin(packages[0]) def __unicode__(self): return "RecentUpdate '%s %s' <%d packages>" % ( -- cgit v1.2.3-54-g00ecf