UI bugfixes with boss

This commit is contained in:
Константин Лебединский
2026-04-30 19:53:49 +05:00
parent df6e770f90
commit b72b485fce
17 changed files with 469 additions and 250 deletions
+7 -4
View File
@@ -17,7 +17,7 @@ from ..models import (
User,
UserAnswer,
)
from .test_access import is_test_author, user_has_test_access
from .test_access import is_test_author, is_test_edit_open, user_has_test_access
class HttpError(Exception):
@@ -311,6 +311,9 @@ def build_review_from_db(session: Session, attempt_id: str) -> dict:
'testId': str(test.id),
'testTitle': test.title,
'passingThreshold': int(test.passing_threshold or 0),
'timeLimit': test.time_limit,
'resultMode': test.result_mode or 'end',
'hintsEnabled': bool(test.hints_enabled),
'correctCount': int(attempt.correct_count or 0),
'totalQuestions': total,
'percent': percent,
@@ -343,7 +346,7 @@ def get_attempt_review_for_user(session_or_eng, current_user_id: str, test_id: s
is_owner = str(attempt.user_id) == str(current_user_id)
is_author = is_test_author(attempt.test_version.test.created_by, current_user_id)
if not is_owner and not is_author:
if not is_owner and not is_author and not is_test_edit_open():
raise HttpError(403, 'Доступ запрещён.')
return build_review_from_db(session, attempt_id)
@@ -387,7 +390,7 @@ def generate_missing_hints_for_test(session_or_eng, author_id: str, test_id: str
test = session.get(Test, tid)
if not test:
raise HttpError(404, 'Тест не найден.')
if not is_test_author(test.created_by, author_id):
if not is_test_author(test.created_by, author_id) and not is_test_edit_open():
raise HttpError(403, 'Доступ запрещён.')
active_version = (
@@ -507,7 +510,7 @@ def list_test_attempts_for_author(session_or_eng, author_id: str, test_id: str)
test = session.get(Test, tid)
if not test:
raise HttpError(404, 'Тест не найден.')
if not is_test_author(test.created_by, author_id):
if not is_test_author(test.created_by, author_id) and not is_test_edit_open():
raise HttpError(403, 'Доступ запрещён.')
rows = (