diff --git a/main/templates/main/vehicle_detail.html b/main/templates/main/vehicle_detail.html
index b8d6934..795f36b 100644
--- a/main/templates/main/vehicle_detail.html
+++ b/main/templates/main/vehicle_detail.html
@@ -42,6 +42,12 @@
{{ vehicle.name }}
{% endif %}
+ {% if last_trip_distance %}
+
+ | Dernier trajet |
+ {{ last_trip_distance }} |
+
+ {% endif %}
diff --git a/main/views.py b/main/views.py
index e5cdedd..dad4292 100644
--- a/main/views.py
+++ b/main/views.py
@@ -1,13 +1,15 @@
import datetime
+import typing
import django.http
import django.shortcuts
import django.urls
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
-from django.db.models import Q
-from django.forms import BooleanField, HiddenInput
from django.utils.translation import gettext as _
+import django.shortcuts
+from django.forms import BooleanField, HiddenInput, ModelForm
+from django.db.models import Q
from django.views.generic import CreateView, DetailView, ListView, UpdateView
from . import forms, models
@@ -26,6 +28,7 @@ class VehicleDetailView(DetailView):
template_name = "main/vehicle_detail.html"
def get_context_data(self, **kwargs):
+ self.object: models.Vehicle
context = super().get_context_data(**kwargs)
context["open_defects"] = context["vehicle"].defect_set.filter(
@@ -33,7 +36,7 @@ def get_context_data(self, **kwargs):
| Q(status=models.Defect.DefectStatus.CONFIRMED)
)
- delegated_forms = {
+ delegated_forms: dict[str, type[ModelForm]] = {
"defect_form": forms.DefectForm,
"fuel_expense_form": forms.FuelExpenseForm,
"trip_start_form": forms.TripStartForm,
@@ -51,7 +54,7 @@ def get_context_data(self, **kwargs):
try:
current_trip = self.object.trip_set.get(finished=False)
- initial = {
+ initial: dict[str, typing.Any] = {
"starting_mileage": current_trip.starting_mileage,
"starting_time": current_trip.starting_time,
"driver_name": current_trip.driver_name,
@@ -73,7 +76,12 @@ def get_context_data(self, **kwargs):
context["trip_started"] = False
except models.Trip.MultipleObjectsReturned:
- return django.http.HttpResponseServerError()
+ raise models.Trip.MultipleObjectsReturned(_("Corruption de la base de données : plusieurs trajets sont en cours !"))
+
+ try:
+ context["last_trip_distance"] = self.object.trip_set.filter(finished=True).latest("ending_time").distance
+ except models.Trip.DoesNotExist:
+ pass
return context
@@ -88,7 +96,7 @@ def get_vehicle(self):
models.Vehicle, pk=self.kwargs.get("pk")
)
- def post(self, request, *args, **kwargs):
+ def post(self, request: django.http.HttpRequest, *args, **kwargs):
form = self.form_class(request.POST, vehicle=self.get_vehicle())
form.instance.vehicle = self.get_vehicle()