45 lines
2.0 KiB
Python
45 lines
2.0 KiB
Python
from django.db import models
|
|
from django.db.models import Q
|
|
|
|
from .pam import PAM
|
|
|
|
from .sous_vivier import SousVivier
|
|
|
|
|
|
class StatutCalculChoices(models.TextChoices):
|
|
AUCUN = 'AUCUN', 'aucun'
|
|
EN_ATTENTE = 'EN_ATTENTE', 'en attente'
|
|
EN_ATTENTE_ARRET = 'EN_ATTENTE_ARRET', "en attente d'arrêt"
|
|
EN_COURS = 'EN_COURS', 'en cours'
|
|
TERMINE = 'TERMINE', 'terminé'
|
|
ERREUR_ADMINISTRE = 'ERREUR_ADMINISTRE','terminé en erreur administré',
|
|
ERREUR_POSTE = 'ERREUR_POSTE', 'terminé en erreur poste',
|
|
ERREUR = 'ERREUR', 'terminé en erreur'
|
|
TERMINE_DE_FORCE = 'TERMINE_DE_FORCE', 'terminé de force'
|
|
|
|
|
|
class Calcul(models.Model):
|
|
"""
|
|
Modèle pour le suivi des calculs
|
|
On y intègre également le statut du calcul
|
|
"""
|
|
id = models.CharField(max_length=100, primary_key=True, default="")
|
|
sous_vivier = models.ForeignKey(SousVivier, on_delete=models.CASCADE, verbose_name="Sous-vivier")
|
|
pam = models.ForeignKey(PAM, on_delete=models.CASCADE, null=True, blank=True)
|
|
ca_date_debut = models.DateTimeField('Date de début', null=True, blank=True)
|
|
ca_date_fin = models.DateTimeField('Date de fin', null=True, blank=True)
|
|
ca_statut = models.CharField('Statut', max_length=40, choices=StatutCalculChoices.choices)
|
|
ca_statut_pourcentage = models.FloatField('Avancement (%)',default=0)
|
|
|
|
class Meta:
|
|
constraints = [
|
|
models.CheckConstraint(
|
|
name='%(app_label)s_%(class)s_ca_statut_valid',
|
|
check=models.Q(ca_statut__in=StatutCalculChoices.values)
|
|
),
|
|
models.CheckConstraint(
|
|
name='%(app_label)s_%(class)s_ca_statut_pourcentage_valid',
|
|
check=Q(ca_statut_pourcentage__gte=0.0) & Q(ca_statut_pourcentage__lte=100.0)
|
|
),
|
|
]
|