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) ), ]