diff --git a/mo/web/user.py b/mo/web/user.py index 88c33fc0704fc44e7451041b588a2bd08a88552b..3c097386c912453b2be6b98013ed05a86fe94b4b 100644 --- a/mo/web/user.py +++ b/mo/web/user.py @@ -3,7 +3,7 @@ from flask_wtf import FlaskForm import flask_wtf.file import os import secrets -from sqlalchemy import or_ +from sqlalchemy import or_, and_ from sqlalchemy.orm import joinedload from typing import Optional import werkzeug.exceptions @@ -74,9 +74,8 @@ def user_contest(id: int): task_sols = (db.get_session().query(db.Task, db.Solution) .select_from(db.Task) - .outerjoin(db.Solution) + .outerjoin(db.Solution, and_(db.Solution.task_id == db.Task.task_id, db.Solution.user == g.user)) .filter(db.Task.round == contest.round) - .filter(or_(db.Solution.user_id == None, db.Solution.user == g.user)) .options(joinedload(db.Solution.final_submit_obj), joinedload(db.Solution.final_feedback_obj)) .order_by(db.Task.code)