24 lines
796 B
Python
24 lines
796 B
Python
"""Утилиты по цепочке теста (попытки/версии)."""
|
|
from __future__ import annotations
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ..models import TestAttempt, TestVersion
|
|
|
|
|
|
def has_any_attempt_for_test(session: Session, test_id) -> bool:
|
|
"""Возвращает True, если для теста есть хотя бы одна попытка."""
|
|
import uuid as _uuid
|
|
if not isinstance(test_id, _uuid.UUID):
|
|
try:
|
|
test_id = _uuid.UUID(str(test_id))
|
|
except (ValueError, AttributeError):
|
|
return False
|
|
|
|
return session.query(
|
|
session.query(TestAttempt)
|
|
.join(TestVersion, TestAttempt.test_version_id == TestVersion.id)
|
|
.filter(TestVersion.test_id == test_id)
|
|
.exists()
|
|
).scalar()
|