def get(self, request, *args, **kwargs):
if 'data' in request.GET:
problems = self.contest.contestproblem_set.select_related('problem').all()
data = []
SUB_FIELDS = ["title", "id", "alias"]
STATISTIC_FIELDS = [
('ac1', get_problem_accept_count),
('ac2', get_problem_accept_user_count),
('tot1', get_problem_all_count),
('tot2', get_problem_all_user_count),
('ratio1', get_problem_accept_ratio),
('ratio2', get_problem_accept_user_ratio),
]
for problem in problems:
d = {k: getattr(problem.problem, k) for k in SUB_FIELDS}
d.update(pid=problem.id, identifier=problem.identifier, weight=problem.weight)
d.update({k: v(problem.problem_id, self.contest.id) for k, v in STATISTIC_FIELDS})
data.append(d)
data.sort(key=lambda x: x['identifier'])
return HttpResponse(json.dumps(data))
return super(ContestProblemManage, self).get(request, *args, **kwargs)
评论列表
文章目录