diff --git a/contest/views.py b/contest/views.py index 8c2e29f..6720193 100644 --- a/contest/views.py +++ b/contest/views.py @@ -134,9 +134,9 @@ class ContestAdminAPIView(APIView): response_serializer: ContestSerializer """ if request.user.admin_type == SUPER_ADMIN: - contest = Contest.objects.all().order_by("-last_updated_time") + contest = Contest.objects.all().order_by("-create_time") else: - contest = Contest.objects.filter(created_by=request.user).order_by("-last_updated_time") + contest = Contest.objects.filter(created_by=request.user).order_by("-create_time") visible = request.GET.get("visible", None) if visible: contest = contest.filter(visible=(visible == "true")) @@ -300,7 +300,7 @@ def contest_problem_page(request, contest_id, contest_problem_id): contest_problem = ContestProblem.objects.get(id=contest_problem_id, visible=True) except ContestProblem.DoesNotExist: return error_page(request, u"比赛题目不存在") - warning = u"您已经提交过本题的正确答案!" + warning = u"您已经提交过本题的正确答案,重复提交可能造成时间累计。" show_warning = False try: submission = ContestSubmission.objects.get(user=request.user, contest=contest, problem=contest_problem) @@ -394,39 +394,22 @@ def _cmp(x, y): @check_user_contest_permission def contest_rank_page(request, contest_id): + contest = Contest.objects.get(id=contest_id) + contest_problems = ContestProblem.objects.filter(contest=contest).order_by("sort_index") result = ContestSubmission.objects.values("user_id").annotate(total_submit=Count("user_id")) for i in range(0, len(result)): # 这个人所有的提交 submissions = ContestSubmission.objects.filter(user_id=result[i]["user_id"]) + result[i]["submissions"] = {} + for item in submissions: + result[i]["submissions"][item.problem_id] = item result[i]["total_ac"] = submissions.filter(ac=True).count() result[i]["user"] = User.objects.get(id=result[i]["user_id"]) - result[i]["submissions"] = submissions.order_by("problem__sort_index") result[i]["total_time"] = submissions.filter(ac=True).aggregate(total_time=Sum("total_time"))["total_time"] - print result - return render(request, "oj/contest/contest_rank.html") - # - # - # return - # contest = Contest.objects.get(id=contest_id) - # contest_submissions = ContestSubmission.objects.filter(contest=contest) - # result = {} - # # 先把数据按照用户id 为 key 整理一下 - # # {1: {"submissions": [], "total_time": 0, "total_ac": 0}} - # for item in contest_submissions: - # if item.user.id not in contest_submissions: - # result[item.user.id] = {"user": {"id": item.user.id, "username": item.user.username, - # "real_name": item.user.real_name}, - # "submissions": [], "total_time": 0, "total_ac": 0} - # result[item.user.id]["submissions"].append(ContestSubmissionSerializer(item).data) - # if item.ac: - # result[item.user.id]["total_time"] += item.total_time - # result[item.user.id]["total_ac"] += 1 - # l = [] - # for k, v in result.iteritems(): - # l.append(v) - # print sorted(l, cmp=_cmp, reverse=True) + return render(request, "oj/contest/contest_rank.html", + {"contest": contest, "contest_problems": contest_problems, "result": sorted(result, cmp=_cmp, reverse=True)}) diff --git a/mq/scripts/info.py b/mq/scripts/info.py index 661c3ff..6634b5b 100644 --- a/mq/scripts/info.py +++ b/mq/scripts/info.py @@ -61,9 +61,12 @@ class MessageQueue(object): logger.debug(contest.start_time) logger.debug(submission.create_time) logger.debug((submission.create_time - contest.start_time).total_seconds()) + logger.debug(int((submission.create_time - contest.start_time).total_seconds() / 60)) contest_submission.total_time += int((submission.create_time - contest.start_time).total_seconds() / 60) # 标记为已经通过 contest_submission.ac = True + # 提交次数加1 + contest_submission.total_submission_number += 1 # contest problem ac 计数器加1 contest_problem.total_accepted_number += 1 else: diff --git a/template/oj/contest/contest_problem.html b/template/oj/contest/contest_problem.html index cf2b7db..f5b3cb1 100644 --- a/template/oj/contest/contest_problem.html +++ b/template/oj/contest/contest_problem.html @@ -1,11 +1,13 @@ {% extends 'oj_base.html' %} {% block body %} -
{{ contest_problem.description|safe }}
-{{ contest_problem.description|safe }}
+{{ contest_problem.input_description }}
{{ contest_problem.description|safe }}
-{{ contest_problem.input_description }}
-{{ contest_problem.output_description }}k
+{{ contest_problem.output_description }}
| # | +用户名 | +AC / 总提交 | +用时 + 罚时 | + {% for item in contest_problems %} +{{ item.sort_index }} + | + {% endfor %} +
|---|---|---|---|---|
| {{ forloop.counter }} | +{{ item.user.username }} | +{{ item.total_ac }} / {{ item.total_submit }} | +{% if item.total_time %}{{ item.total_time }} min{% else %}--{% endif %} | + {% for problem in contest_problems %} ++ {% submission_problem problem item.submissions %} + | + {% endfor %} +