Skip to content

Commit 6902fe4

Browse files
committed
Use random endpoint instead of frontpage
1 parent bc94c24 commit 6902fe4

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

lego/apps/frontpage/views.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
DetailedPollSerializer,
1616
HiddenResultsDetailedPollSerializer,
1717
)
18-
from lego.apps.users.models import AbakusGroup
19-
from lego.apps.users.serializers.abakus_groups import PublicAbakusGroupSerializer
20-
from lego.apps.users.constants import GROUP_INTEREST
2118

2219

2320
class FrontpageViewSet(viewsets.ViewSet):
@@ -93,8 +90,6 @@ def get_serializer_context():
9390

9491
queryset_poll = Poll.objects.filter(pinned=True).order_by("created_at").last()
9592

96-
queryset_interestgroups = AbakusGroup.objects.filter(type=GROUP_INTEREST, active=True).order_by("?")
97-
9893
articles = PublicArticleSerializer(
9994
queryset_articles[:10], context=get_serializer_context(), many=True
10095
).data
@@ -111,15 +106,11 @@ def get_serializer_context():
111106
poll = DetailedPollSerializer(
112107
queryset_poll, context=get_serializer_context()
113108
).data
114-
interestgroups = PublicAbakusGroupSerializer(
115-
queryset_interestgroups[:3], context=get_serializer_context(), many=True
116-
).data
117109

118110
ret = {
119111
"articles": articles,
120112
"events": events,
121113
"poll": poll,
122-
"interestgroups": interestgroups,
123114
}
124115

125116
return Response(ret)

lego/apps/users/views/abakus_groups.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
from rest_framework import viewsets
1+
from random import sample
2+
from rest_framework import status, viewsets
3+
from rest_framework.decorators import action
4+
from rest_framework.response import Response
25

36
from lego.apps.permissions.api.views import AllowedPermissionsMixin
47
from lego.apps.permissions.constants import EDIT
@@ -43,3 +46,21 @@ def get_queryset(self):
4346
return AbakusGroup.objects_with_text.prefetch_related("users").all()
4447

4548
return self.queryset
49+
50+
@action(detail=False, methods=["GET"])
51+
def random_interests(self, request):
52+
queryset = self.get_queryset().filter(type="interesse")
53+
54+
values = queryset.values_list("pk", flat=True)
55+
if not values:
56+
return Response(status=status.HTTP_204_NO_CONTENT)
57+
58+
values = list(values)
59+
60+
if len(values) <= 3:
61+
instance = [queryset.get(pk=pk) for pk in values]
62+
else:
63+
instance = [queryset.get(pk=pk) for pk in sample(values, 3)]
64+
65+
serializer = self.get_serializer(instance, many=True)
66+
return Response(serializer.data)

0 commit comments

Comments
 (0)