From 4382d174677d4500684635f3ea313fa95fb88c32 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Wed, 4 Sep 2019 13:48:22 +0200
Subject: [PATCH] Raise proper 404 error if no lesson is found.

---
 .../alsijil/templates/alsijil/lesson.html     | 86 ++++++++-----------
 biscuit/apps/alsijil/views.py                 |  6 +-
 2 files changed, 38 insertions(+), 54 deletions(-)

diff --git a/biscuit/apps/alsijil/templates/alsijil/lesson.html b/biscuit/apps/alsijil/templates/alsijil/lesson.html
index 0c61a8739..ad483edcf 100644
--- a/biscuit/apps/alsijil/templates/alsijil/lesson.html
+++ b/biscuit/apps/alsijil/templates/alsijil/lesson.html
@@ -24,63 +24,47 @@
 {% endblock %}
 
 {% block content %}
- {% if lesson_period %}
-  <form method="post">
-   {% csrf_token %}
+ <form method="post">
+  {% csrf_token %}
 
-   <div class="card">
-    <div class="card-header bg-light text-dark">
-     {% blocktrans %}Lesson documentation{% endblocktrans %}
-    </div>
-    <div class="card-body">
-     {% csrf_token %}
-     {% bootstrap_form lesson_documentation_form %}
-    </div>
+  <div class="card">
+   <div class="card-header bg-light text-dark">
+    {% blocktrans %}Lesson documentation{% endblocktrans %}
    </div>
+   <div class="card-body">
+    {% csrf_token %}
+    {% bootstrap_form lesson_documentation_form %}
+   </div>
+  </div>
 
-   <div class="card">
-    <div class="card-header bg-light text-dark">
-     {% blocktrans %}Personal notes{% endblocktrans %}
-    </div>
-    <div class="card-body">
-     {{ personal_note_formset.management_form }}
+  <div class="card">
+   <div class="card-header bg-light text-dark">
+    {% blocktrans %}Personal notes{% endblocktrans %}
+   </div>
+   <div class="card-body">
+    {{ personal_note_formset.management_form }}
 
-     <table class="table table-striped table-bordered table-hover table-responsive-xl">
+    <table class="table table-striped table-bordered table-hover table-responsive-xl">
+     <tr>
+      <th>{% blocktrans %}Person{% endblocktrans %}</th>
+      <th>{% blocktrans %}Absent{% endblocktrans %}</th>
+      <th>{% blocktrans %}Tardiness{% endblocktrans %}</th>
+      <th>{% blocktrans %}Excused{% endblocktrans %}</th>
+      <th>{% blocktrans %}Remarks{% endblocktrans %}</th>
+     </tr>
+     {% for form in personal_note_formset %}
+      {{ form.id }}
       <tr>
-       <th>{% blocktrans %}Person{% endblocktrans %}</th>
-       <th>{% blocktrans %}Absent{% endblocktrans %}</th>
-       <th>{% blocktrans %}Tardiness{% endblocktrans %}</th>
-       <th>{% blocktrans %}Excused{% endblocktrans %}</th>
-       <th>{% blocktrans %}Remarks{% endblocktrans %}</th>
+       <td>{{ form.person_name }}</td>
+       <td>{{ form.absent }}</td>
+       <td>{{ form.late }}</td>
+       <td>{{ form.excused }}</td>
+       <td>{{ form.remarks }}</td>
       </tr>
-      {% for form in personal_note_formset %}
-       {{ form.id }}
-       <tr>
-        <td>{{ form.person_name }}</td>
-        <td>{{ form.absent }}</td>
-        <td>{{ form.late }}</td>
-        <td>{{ form.excused }}</td>
-        <td>{{ form.remarks }}</td>
-       </tr>
-      {% endfor %}
-     </table>
-    </div>
-   </div>
-   <input type="submit" value="{% blocktrans %}Save{% endblocktrans %}" />
-  </form>
- {% else %}
-  <div class="card text-white bg-danger">
-   <div class="card-header">
-    {% blocktrans %}No lesson found{% endblocktrans %}
-   </div>
-   <div class="card-body">
-    <p>
-     {% blocktrans %}
-      You either selected an invalid lesson or there
-      is currently no lesson in progress.
-     {% endblocktrans %}
-    </p>
+     {% endfor %}
+    </table>
    </div>
   </div>
- {% endif %}
+  <input type="submit" value="{% blocktrans %}Save{% endblocktrans %}" />
+ </form>
 {% endblock %}
diff --git a/biscuit/apps/alsijil/views.py b/biscuit/apps/alsijil/views.py
index bba07d956..4f6fa11f1 100644
--- a/biscuit/apps/alsijil/views.py
+++ b/biscuit/apps/alsijil/views.py
@@ -3,8 +3,9 @@ from typing import Optional
 
 from django.contrib.auth.decorators import login_required
 from django.db.models import Exists, OuterRef, Q
-from django.http import HttpRequest, HttpResponse, HttpResponseNotFound
+from django.http import Http404, HttpRequest, HttpResponse
 from django.shortcuts import render
+from django.utils.translation import ugettext as _
 from django.views.decorators.cache import cache_page
 
 from biscuit.apps.chronos.models import LessonPeriod, TimePeriod
@@ -30,8 +31,7 @@ def lesson(request: HttpRequest, week: Optional[int] = None, period_id: Optional
         wanted_week = current_week()
 
     if not lesson_period:
-        #XXX TODO: nice error page (“no lesson currently running for you?” or so)
-        return HttpResponseNotFound("no current lesson found for you")
+        raise Http404(_('You either selected an invalid lesson or there is currently no lesson in progress.'))
 
     context['lesson_period'] = lesson_period
     context['week'] = wanted_week
-- 
GitLab