37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from pydantic import BaseModel, field_validator
|
|
from typing import List, Dict
|
|
|
|
class ValueFunctionRequest(BaseModel):
|
|
criterion_name: str
|
|
levels: List[str]
|
|
blank_cards: List[int]
|
|
references: Dict[str, float]
|
|
|
|
@field_validator("criterion_name")
|
|
def name_not_empty(cls, v):
|
|
if not v.strip():
|
|
raise ValueError("El nombre no puede estar vacío.")
|
|
return v
|
|
|
|
@field_validator("levels")
|
|
def levels_not_empty(cls, v):
|
|
if len(v) < 2:
|
|
raise ValueError("Debe haber al menos 2 niveles.")
|
|
return v
|
|
|
|
@field_validator("blank_cards")
|
|
def cards_valid(cls, v, info):
|
|
if any(c < 0 for c in v):
|
|
raise ValueError("Las cartas no pueden ser negativas.")
|
|
|
|
levels = info.data.get("levels")
|
|
if levels and len(v) != len(levels) - 1:
|
|
raise ValueError("Debe haber uno menos de número de cartas blancas que de niveles.")
|
|
return v
|
|
|
|
@field_validator("references")
|
|
def refs_valid(cls, v):
|
|
if len(v) != 2:
|
|
raise ValueError("Debe haber 2 referencias.")
|
|
return v
|