diff --git a/stade/core/templates/stats.html b/stade/core/templates/stats.html index 166cd66..40fa218 100644 --- a/stade/core/templates/stats.html +++ b/stade/core/templates/stats.html @@ -90,7 +90,7 @@

Success/Total

{% endif %}
  • - + {{ task.name }} diff --git a/stade/core/views.py b/stade/core/views.py index eb46a59..d40c953 100644 --- a/stade/core/views.py +++ b/stade/core/views.py @@ -8,7 +8,8 @@ from django.contrib.auth.models import User from django.db.models import Count, Exists, OuterRef, Prefetch from django.http import Http404, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render +from django.shortcuts import get_object_or_404, redirect, render +from django.template.loader import TemplateDoesNotExist, get_template from django.urls import reverse from django.utils import timezone from django.views.decorators.http import require_http_methods @@ -108,15 +109,15 @@ def leaderboard_page(request, challenge): def task_landing(request, challenge, task_id): task = get_object_or_404(Task.objects.filter(challenge=challenge), pk=task_id) - # The 2019 challenge doesn't have distinct task landing pages - if challenge.slug == '2019': - return challenge_landing(request, challenge) + template = f'landing/{challenge.slug}/{task_id}.html' - return render( - request, - f'landing/{challenge.slug}/{task_id}.html', - {'challenge': challenge, 'task': task}, - ) + # certain challenges don't have distinct task landing pages e.g. 2019 and MILK10k + try: + get_template(template) + except TemplateDoesNotExist: + return redirect(reverse('challenge-landing', args=[challenge.slug])) + + return render(request, template, {'challenge': challenge, 'task': task}) def challenge_landing(request, challenge):