|
8 | 8 | from django.contrib.auth.models import User |
9 | 9 | from django.db.models import Count, Exists, OuterRef, Prefetch |
10 | 10 | from django.http import Http404, HttpResponseRedirect |
11 | | -from django.shortcuts import get_object_or_404, render |
| 11 | +from django.shortcuts import get_object_or_404, redirect, render |
| 12 | +from django.template.loader import TemplateDoesNotExist, get_template |
12 | 13 | from django.urls import reverse |
13 | 14 | from django.utils import timezone |
14 | 15 | from django.views.decorators.http import require_http_methods |
@@ -108,15 +109,15 @@ def leaderboard_page(request, challenge): |
108 | 109 | def task_landing(request, challenge, task_id): |
109 | 110 | task = get_object_or_404(Task.objects.filter(challenge=challenge), pk=task_id) |
110 | 111 |
|
111 | | - # The 2019 challenge doesn't have distinct task landing pages |
112 | | - if challenge.slug == '2019': |
113 | | - return challenge_landing(request, challenge) |
| 112 | + template = f'landing/{challenge.slug}/{task_id}.html' |
114 | 113 |
|
115 | | - return render( |
116 | | - request, |
117 | | - f'landing/{challenge.slug}/{task_id}.html', |
118 | | - {'challenge': challenge, 'task': task}, |
119 | | - ) |
| 114 | + # certain challenges don't have distinct task landing pages e.g. 2019 and MILK10k |
| 115 | + try: |
| 116 | + get_template(template) |
| 117 | + except TemplateDoesNotExist: |
| 118 | + return redirect(reverse('challenge-landing', args=[challenge.slug])) |
| 119 | + |
| 120 | + return render(request, template, {'challenge': challenge, 'task': task}) |
120 | 121 |
|
121 | 122 |
|
122 | 123 | def challenge_landing(request, challenge): |
|
0 commit comments