Files
DataRush/services/backend/apps/task/validators.py
T
2025-03-01 14:08:36 +03:00

25 lines
737 B
Python

from django.core.exceptions import ValidationError
from pydantic import BaseModel
from pydantic import ValidationError as PydanticValidationError
class Criteria(BaseModel):
name: str
slug: str
max_value: int
min_value: int
class ContestTaskCriteriesValidator:
def __call__(self, instance):
if instance.criteries and not isinstance(instance.criteries, list):
err = "criteries must be a valid dictionary"
raise ValidationError(err)
try:
for criteria in instance.criteries if instance.criteries else []:
Criteria(**criteria)
except PydanticValidationError:
err = "invalid criteries data"
raise ValidationError(err)