From 2a27d58868f2202aff148564ba82f3477a772a0e Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Wed, 21 Feb 2018 19:21:10 +0000 Subject: [PATCH] Sort the funds on deadline --- opentech/public/home/models.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/opentech/public/home/models.py b/opentech/public/home/models.py index d6cfb5e69..f3a104593 100644 --- a/opentech/public/home/models.py +++ b/opentech/public/home/models.py @@ -1,3 +1,4 @@ +import datetime from django.db import models from modelcluster.fields import ParentalKey @@ -105,7 +106,17 @@ class HomePage(BasePage): yield from self.pages_from_related(base_list) selected = list(base_list.values_list('page', flat=True)) extra_needed = self.NUM_RELATED - len(selected) - yield from page_type.objects.exclude(id__in=selected)[:extra_needed] + extra_qs = page_type.objects.exclude(id__in=selected)[:extra_needed] + yield from self.sorted_by_deadline(extra_qs) + + def sorted_by_deadline(self, qs): + def sort_by_deadline(value): + try: + return value.deadline or datetime.date.max + except AttributeError: + return datetime.date.max + + yield from sorted(qs, key=sort_by_deadline) def pages_from_related(self, related): for related in related.all(): -- GitLab