Skip to content

Commit 51e9133

Browse files
committed
Set submissions seed on the whole queryset vs results
1 parent 4d4f3f7 commit 51e9133

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

backend/api/submissions/schema.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import random
21
from api.context import Info
32
from api.submissions.permissions import CanSeeSubmissionRestrictedFields
43

4+
from pycon.db_utils import set_seed
55
import strawberry
66

77
from api.permissions import CanSeeSubmissions, IsAuthenticated
@@ -96,14 +96,11 @@ def submissions(
9696
if audience_levels:
9797
qs = qs.filter(audience_level__id__in=audience_levels)
9898

99-
qs = qs.distinct()
100-
total_items = qs.count()
99+
with set_seed(info.context.request.user):
100+
qs = qs.order_by("?").distinct()
101101

102-
# Randomize the order of the submissions
103-
user = info.context.request.user
104-
105-
submissions = list(qs[(page - 1) * page_size : page * page_size])
106-
random.Random(user.id).shuffle(submissions)
102+
total_items = qs.count()
103+
submissions = list(qs[(page - 1) * page_size : page * page_size])
107104

108105
info.context._my_votes = {
109106
vote.submission_id: vote

backend/pycon/db_utils.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from contextlib import contextmanager
2+
from django.db import connection
3+
4+
5+
@contextmanager
6+
def set_seed(seed: int):
7+
with connection.cursor() as cursor:
8+
cursor.execute(f"SELECT setseed({seed})")
9+
yield
10+
cursor.execute("SELECT setseed(0)")

0 commit comments

Comments
 (0)