# apps/settingsapp/models.py
from django.db import models
from django.core.exceptions import ValidationError

class GradingSettings(models.Model):
    # NOTAS
    report_weight = models.FloatField(default=2)       # Entregable
    presentation_weight = models.FloatField(default=1) # Presentación
    objective_weight = models.FloatField(default=3)    # Objetivo max

    # SIMILITUD
    R_weight  = models.FloatField(default=1)
    L_weight  = models.FloatField(default=1)
    Ph_weight = models.FloatField(default=1)
    Pcu_weight= models.FloatField(default=1)

    def clean(self):
        if GradingSettings.objects.exclude(pk=self.pk).exists():
            raise ValidationError("Solo puede existir un GradingSettings")

    def save(self, *args, **kwargs):
        self.full_clean()
        super().save(*args, **kwargs)

    @classmethod
    def get(cls):
        # devuelve la única instancia (la crea si no existe)
        obj, _ = cls.objects.get_or_create(pk=1)
        return obj
