This commit is contained in:
Константин Лебединский
2026-04-30 14:26:09 +05:00
parent e6b85f3944
commit 2b429f0b08
3 changed files with 24 additions and 5 deletions
+16 -1
View File
@@ -6,7 +6,7 @@ from dataclasses import dataclass
from sqlalchemy import exists, select
from ..db import get_session
from ..models import Test, TestAssignment, TestAssignmentTarget, TestVersion, User
from ..models import Test, TestAssignment, TestAssignmentTarget, TestAttempt, TestVersion, User
def is_test_author(created_by, user_id) -> bool:
@@ -57,7 +57,12 @@ def user_has_test_access(user_id: str, test_id: str) -> AccessResult:
def list_visible_tests(user_id: str) -> list[dict]:
"""В dev-режиме возвращает все активные тесты независимо от назначения."""
import uuid as _uuid
session = get_session()
try:
uid = _uuid.UUID(user_id)
except (ValueError, AttributeError):
uid = None
rows = (
session.query(Test, TestVersion, User)
@@ -80,6 +85,16 @@ def list_visible_tests(user_id: str) -> list[dict]:
'version': tv.version,
'created_by': str(t.created_by) if t.created_by else None,
'author_full_name': u.full_name if u else '',
'has_in_progress_attempt': bool(
uid and session.query(
exists().where(
TestAttempt.user_id == uid,
TestAttempt.status == 'in_progress',
TestAttempt.test_version_id == TestVersion.id,
TestVersion.test_id == t.id,
)
).scalar()
),
}
for t, tv, u in rows
]