bugfix
This commit is contained in:
@@ -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
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user