ad33813bc1
Instead of linking the package name, link the architecture. This will prevent the lost links we had when we collapsed the list to show multiple architectures at the same time. Signed-off-by: Dan McGee <dan@archlinux.org>
27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
from main.models import Arch, Repo, Package
|
|
|
|
def get_recent_updates():
|
|
# This is a bit of magic. We are going to show 15 on the front page, but we
|
|
# want to try and eliminate cross-architecture wasted space. Pull enough
|
|
# packages that we can later do some screening and trim out the fat.
|
|
pkgs = []
|
|
for a in Arch.objects.all():
|
|
# grab a few extra so we can hopefully catch everything we need
|
|
pkgs += list(Package.objects.select_related('arch', 'repo').filter(arch=a).order_by('-last_update')[:50])
|
|
pkgs.sort(key=lambda q: q.last_update)
|
|
updates = []
|
|
ctr = 0
|
|
while ctr < 15 and len(pkgs) > 0:
|
|
# not particularly happy with this logic, but it works.
|
|
p = pkgs.pop()
|
|
samepkgs = filter(lambda q: p.is_same_version(q) and p.repo == q.repo, pkgs)
|
|
samepkgs.append(p)
|
|
samepkgs.sort(key=lambda q: q.arch.name)
|
|
updates.append(samepkgs)
|
|
for q in samepkgs:
|
|
if p != q: pkgs.remove(q)
|
|
ctr += 1
|
|
return updates
|
|
|
|
# vim: set ts=4 sw=4 et:
|