Files
sgl/gestion_vehicule/models.py

120 lines
4.1 KiB
Python
Raw Normal View History

2025-12-19 09:43:33 +00:00
"""Modèles de l'application gestion_vehicule."""
from django.db import models
from authentification.models import Profile
class Vehicule(models.Model):
"""Modèle représentant un véhicule."""
immatriculation = models.TextField(
verbose_name="Immatriculation",
max_length=15
)
image = models.ImageField(
verbose_name="Image de la voiture", upload_to="vehicule_image"
)
disponible = models.BooleanField(
verbose_name="Vehicule disponible ?",
default=True)
def __str__(self):
"""Retourne une représentation en chaîne de caractères du véhicule."""
return f"{self.immatriculation}"
class DemandeVehicule(models.Model):
"""Modèle représentant une demande de véhicule."""
vehicule = models.ForeignKey(Vehicule, on_delete=models.CASCADE, null=True)
nom_passager = models.ForeignKey(
Profile,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="passager_de_la_demande",
)
chauffeur = models.ForeignKey(
Profile,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="chauffeur_affecter_course",
)
lieu_depart = models.TextField(verbose_name="Lieu de départ")
lieu_arrive = models.TextField(verbose_name="Lieu d'arrivée")
date_heure = models.DateTimeField(verbose_name="Date et heure de départ")
validation = models.BooleanField(
verbose_name="Validation par le logisticien", default=None, null=True
)
motif_refus = models.TextField(verbose_name="Motifs du refus", default="")
def __str__(self):
"""Retourne une représentation en chaîne de caractères."""
return (f"DemandeVehicule {self.pk} -"
f"{self.lieu_depart} à {self.lieu_arrive}"
f" le {self.date_heure}"
)
class CarnetBord(models.Model):
"""Modèle représentant le carnet de bord d'un véhicule."""
vehicule = models.ForeignKey(
Vehicule, null=True, blank=True, on_delete=models.CASCADE
)
course = models.ForeignKey(
DemandeVehicule, on_delete=models.CASCADE,
default=None, null=True, blank=True
)
heure_effectif_depart = models.DateTimeField(
verbose_name="Date et heure effectif de départ :",
default=None,
null=True,
blank=True,
)
km_depart = models.PositiveIntegerField(
verbose_name="Kilometrage de départ :", default=None, null=True,
blank=True
)
heure_arrive = models.DateTimeField(
verbose_name="Date et heure d'arrivee :", default=None, null=True,
blank=True
)
km_arrive = models.PositiveIntegerField(
verbose_name="Kilometrage d'arrivé :", default=0
)
course_termine = models.BooleanField(
verbose_name="Course terminée :", default=False
)
def __str__(self):
"""Retourne une représentation en chaîne de caractères."""
return f"CarnetBord {self.pk} - Vehicule: {self.vehicule}"
class CarnetCarburant(models.Model):
"""Modèle représentant le carnet de carburant d'un véhicule."""
date = models.DateField(verbose_name="Date")
nom_station = models.TextField(verbose_name="Nom de la station-service")
type_carburant = models.TextField(
verbose_name="Type du carburant",
choices={
"essence": "Essence",
"gazoil": "Gazoil",
},
)
litre = models.PositiveIntegerField(verbose_name="Litre")
prix = models.PositiveIntegerField(verbose_name="Prix par litre (en GNF)")
kilometrage = models.PositiveIntegerField(verbose_name="Kilometrage")
observation = models.TextField(verbose_name="Observation")
course = models.ForeignKey(
DemandeVehicule,
default=None,
on_delete=models.CASCADE
)
def __str__(self):
"""Retourne une représentation en chaîne de caractères."""
return (
f"CarnetCarburant {self.pk} - Station: {self.nom_station} - "
f"Date: {self.date}"
)