diff --git a/rowers/templates/courses_challenges.html b/rowers/templates/courses_challenges.html index 7c83ed87..dec869a1 100644 --- a/rowers/templates/courses_challenges.html +++ b/rowers/templates/courses_challenges.html @@ -48,7 +48,7 @@
  • - Challenges page + All Active Challenges

    Nearby Challenges

    diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 1c7631ef..17b31447 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/views/racesviews.py b/rowers/views/racesviews.py index 86294801..860c58cd 100644 --- a/rowers/views/racesviews.py +++ b/rowers/views/racesviews.py @@ -32,7 +32,10 @@ def courses_challenges_view(request): liked_courses = GeoCourse.objects.filter(followers=r) courses = GeoCourse.objects.filter(id__in=[course.id for course in nearby_courses]) | liked_courses - courses = sample(list(courses),3) + if courses.count() >= 3: + courses = sample(list(courses),3) + else: + courses = GeoCourse.objects.all().order_by("country", "name", "distance") coursesdicts = [] for course in courses: @@ -43,17 +46,27 @@ def courses_challenges_view(request): 'div': div, }) + allchallenges = VirtualRace.objects.all().order_by("-startdate") + totalnrchallenges = allchallenges.count() challenges = VirtualRace.objects.filter(startdate__gte=timezone.now()) challenges2 = VirtualRace.objects.filter(startdate__lte=timezone.now(), evaluation_closure__gte=timezone.now()-datetime.timedelta(days=3)) - challenges = challenges | challenges2 - while len(challenges) < 3: - allchallenges = VirtualRace.objects.all().order_by("-startdate") - challenges = list(challenges)+sample(list(allchallenges), 3-len(challenges)) - challenges = list(set(challenges)) + challenges = challenges | challenges2 + count = 3 + if totalnrchallenges > count: + allchallenges = list(allchallenges) + while len(challenges) < count: + try: + challenges = list(challenges)+sample(allchallenges, count-len(challenges)) + except ValueError: + count = count-1 + challenges = list(set(challenges)) + else: + challenges = VirtualRace.objects.all() + count = challenges.count() - challenges = sample(list(challenges),3) + challenges = sample(list(challenges),count) challengesdicts = [] for challenge in challenges: