diff --git a/devel/views.py b/devel/views.py index 6f82bb4f..0724968f 100644 --- a/devel/views.py +++ b/devel/views.py @@ -25,6 +25,7 @@ from django.views.decorators.cache import cache_control, never_cache from main.models import Arch, Package, Repo +from main.utils import groupby_preserve_order from news.models import News from packages.models import FlagRequest, PackageRelation, Signoff from packages.utils import get_signoff_groups @@ -46,9 +47,14 @@ def index(request): inner_q = PackageRelation.objects.none() inner_q = inner_q.values('pkgbase') - flagged = Package.objects.normal().filter( + # select all flagged packages by pkgname + flagged_all = Package.objects.normal().filter( flag_date__isnull=False, pkgbase__in=inner_q).order_by('pkgname') + # group flagged packages by pkgbase + same_pkgbase_key = lambda x: (x.repo.name, x.arch.name, x.pkgbase) + flagged = groupby_preserve_order(flagged_all, same_pkgbase_key) + todopkgs = TodolistPackage.objects.select_related( 'todolist', 'pkg', 'arch', 'repo').exclude( status=TodolistPackage.COMPLETE).filter(removed__isnull=True) diff --git a/templates/devel/index.html b/templates/devel/index.html index f0b2c9e7..70a7b21d 100644 --- a/templates/devel/index.html +++ b/templates/devel/index.html @@ -26,19 +26,26 @@

My Flagged Packages

- {% for pkg in flagged %} - - {% pkg_details_link pkg %} - {{ pkg.full_version }} - {% with pkg.in_testing as tp %}{% if tp %} - {{ tp.full_version }} - {% endif %}{% endwith %} - {{ pkg.repo.name }} - {{ pkg.arch.name }} - {{ pkg.flag_date|date:"Y-m-d" }} - {{ pkg.last_update|date:"Y-m-d" }} - + {% for splitpkg in flagged %} + {% with splitpkg|first as pkg %} + + + {% pkg_details_link splitpkg.0 %} + {% if splitpkg|length > 1 %} + ({{ splitpkg|length }} split packages) + {% endif %} + + {{ pkg.full_version }} + {% with pkg.in_testing as tp %}{% if tp %} + {{ tp.full_version }} + {% endif %}{% endwith %} + {{ pkg.repo.name }} + {{ pkg.arch.name }} + {{ pkg.flag_date|date:"Y-m-d" }} + {{ pkg.last_update|date:"Y-m-d" }} + + {% endwith %} {% empty %} No flagged packages to display {% endfor %}