Skip to content

Commit 8c530f2

Browse files
Attempted to speed up problems list.
1 parent 9937701 commit 8c530f2

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

gameserver/views/problem.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,29 @@
1818

1919

2020
def int_list(l):
21+
if not l:
22+
return None
2123
return list(map(int, filter(lambda x: x.isnumeric(), l)))
2224

2325

2426
class ProblemList(ListView, mixin.MetaMixin):
2527
template_name = "problem/list.html"
2628
context_object_name = "problems"
27-
paginate_by = 50
29+
paginate_by = 35
2830
title = "Practice Problems"
2931

3032
def get_queryset(self):
33+
base = models.Problem.get_visible_problems(self.request.user).prefetch_related(
34+
"problem_type", "problem_group"
35+
)
36+
37+
if self.selected_types is not None:
38+
base = base.filter(problem_type__in=self.selected_types)
39+
if self.selected_groups is not None and not self.request.in_contest:
40+
base = base.filter(problem_group__in=self.selected_groups)
41+
3142
q = (
32-
models.Problem.get_visible_problems(self.request.user)
33-
.prefetch_related("problem_type", "problem_group")
34-
.filter(
35-
Q(problem_type__in=self.selected_types) if len(self.selected_types) else Q(),
36-
(
37-
Q(problem_group__in=self.selected_groups)
38-
if len(self.selected_groups) and not self.request.in_contest
39-
else Q()
40-
),
41-
)
42-
.distinct()
43+
base.distinct()
4344
.order_by("points", "name")
4445
)
4546
if self.hide_solved and self.request.user.is_authenticated:

0 commit comments

Comments
 (0)