Skip to content

Commit

Permalink
Use random endpoint instead of frontpage
Browse files Browse the repository at this point in the history
  • Loading branch information
PeterJFB committed Apr 29, 2022
1 parent ea1b6ad commit e7bcc7b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
15 changes: 1 addition & 14 deletions lego/apps/frontpage/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
DetailedPollSerializer,
HiddenResultsDetailedPollSerializer,
)
from lego.apps.users.models import AbakusGroup
from lego.apps.users.serializers.abakus_groups import PublicAbakusGroupSerializer
from lego.apps.users.constants import GROUP_INTEREST


class FrontpageViewSet(viewsets.ViewSet):
Expand Down Expand Up @@ -93,8 +90,6 @@ def get_serializer_context():

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

queryset_interestgroups = AbakusGroup.objects.filter(type=GROUP_INTEREST, active=True).order_by("?")

articles = PublicArticleSerializer(
queryset_articles[:10], context=get_serializer_context(), many=True
).data
Expand All @@ -111,15 +106,7 @@ def get_serializer_context():
poll = DetailedPollSerializer(
queryset_poll, context=get_serializer_context()
).data
interestgroups = PublicAbakusGroupSerializer(
queryset_interestgroups[:3], context=get_serializer_context(), many=True
).data

ret = {
"articles": articles,
"events": events,
"poll": poll,
"interestgroups": interestgroups,
}
ret = {"articles": articles, "events": events, "poll": poll}

return Response(ret)
24 changes: 23 additions & 1 deletion lego/apps/users/views/abakus_groups.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from rest_framework import viewsets
from random import sample

from rest_framework import status, viewsets
from rest_framework.decorators import action
from rest_framework.response import Response

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

return self.queryset

@action(detail=False, methods=["GET"])
def random_interests(self, request):
queryset = self.get_queryset().filter(type="interesse")

values = queryset.values_list("pk", flat=True)
if not values:
return Response(status=status.HTTP_204_NO_CONTENT)

values = list(values)

if len(values) <= 3:
instance = [queryset.get(pk=pk) for pk in values]
else:
instance = [queryset.get(pk=pk) for pk in sample(values, 3)]

serializer = self.get_serializer(instance, many=True)
return Response(serializer.data)

0 comments on commit e7bcc7b

Please sign in to comment.