Skip to content

Commit 3b1ad4a

Browse files
committed
Redirect to challenge landing pages when task templates don't exist
1 parent 539abe8 commit 3b1ad4a

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

stade/core/templates/stats.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ <h4>Success/Total</h4>
9090
</form>
9191
{% endif %}
9292
<li>
93-
<a href="{% if task.challenge.slug == 'milk10k' %}{% url 'challenge-landing' 'milk10k' %}{% else %}{% url 'task-landing' task.challenge.slug task.id %}{% endif %}">
93+
<a href="{% url 'task-landing' task.challenge.slug task.id %}">
9494
<span>{{ task.name }}</span>
9595
</a>
9696

stade/core/views.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
from django.contrib.auth.models import User
99
from django.db.models import Count, Exists, OuterRef, Prefetch
1010
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
1213
from django.urls import reverse
1314
from django.utils import timezone
1415
from django.views.decorators.http import require_http_methods
@@ -108,15 +109,15 @@ def leaderboard_page(request, challenge):
108109
def task_landing(request, challenge, task_id):
109110
task = get_object_or_404(Task.objects.filter(challenge=challenge), pk=task_id)
110111

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'
114113

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})
120121

121122

122123
def challenge_landing(request, challenge):

0 commit comments

Comments
 (0)