File tree Expand file tree Collapse file tree 2 files changed +22
-10
lines changed Expand file tree Collapse file tree 2 files changed +22
-10
lines changed Original file line number Diff line number Diff line change 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
2320class 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 )
Original file line number Diff line number Diff line change 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
36from lego .apps .permissions .api .views import AllowedPermissionsMixin
47from 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 )
You can’t perform that action at this time.
0 commit comments