From 72a2de50bf0782799529aabd6cf4871feeed0f69 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 23 Dec 2025 20:56:01 +0800 Subject: [PATCH] problemset filtered by completion --- problemset/views/oj.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/problemset/views/oj.py b/problemset/views/oj.py index 946e153..d1e11e9 100644 --- a/problemset/views/oj.py +++ b/problemset/views/oj.py @@ -320,6 +320,18 @@ class ProblemSetUserProgressAPI(APIView): if class_name: progresses = progresses.filter(user__username__icontains=class_name) + # 完成度筛选 + completion_status = request.GET.get("completion_status", "").strip() + if completion_status == "completed": + # 已完成:所有题目都已完成 + progresses = progresses.filter(is_completed=True) + elif completion_status == "in_progress": + # 进行中:未完成且已开始(至少完成了一道题,排除未开始的用户) + progresses = progresses.filter(is_completed=False, completed_problems_count__gt=0) + elif completion_status == "not_started": + # 未开始:还没有完成任何题目 + progresses = progresses.filter(completed_problems_count=0) + # 排序 progresses = progresses.order_by( "-is_completed", "-progress_percentage", "join_time"