fix(ratingdata): add validator for model rating, forcing the value to be between 1 and 10

This commit is contained in:
Lorenzo Maffioli 2026-04-08 12:16:46 +02:00
parent c40ea7f29d
commit e657c9106e

View file

@ -7,7 +7,7 @@ from sqlalchemy.orm import Session
from open_webui.internal.db import Base, JSONField, get_db, get_db_context
from open_webui.models.users import User
from pydantic import BaseModel, ConfigDict
from pydantic import BaseModel, ConfigDict, field_validator
from sqlalchemy import BigInteger, Column, Text, JSON, Boolean
log = logging.getLogger(__name__)
@ -81,8 +81,18 @@ class RatingData(BaseModel):
sibling_model_ids: Optional[list[str]] = None
reason: Optional[str] = None
comment: Optional[str] = None
details: Optional[dict] = None
model_config = ConfigDict(extra='allow', protected_namespaces=())
@field_validator('details')
@classmethod
def clamp_details_rating(cls, v: Optional[dict]) -> Optional[dict]:
if isinstance(v, dict) and 'rating' in v:
r = v['rating']
if isinstance(r, (int, float)):
v['rating'] = max(1, min(10, int(r)))
return v
class MetaData(BaseModel):
arena: Optional[bool] = None