Files
muzak/backend/voting/views.py
T
2025-08-20 22:48:01 +02:00

41 lines
1.4 KiB
Python

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from playlist.models import Session, Profile, Track, Vote
from playlist.serializers import TrackSerializer, SessionSerializer
from drf_spectacular.utils import extend_schema
def index(request):
return render(request, 'voting/index.html')
def session(request, session_id):
return render(request, 'voting/session.html', {'room_name': session_id})
@extend_schema(
responses={200: SessionSerializer(many=True)},
description="Retrieve a list of all available sessions."
)
class SessionListView(APIView):
def get(self, request):
if request.user.is_superuser:
sessions = Session.objects.all()
else:
sessions = Session.objects.filter(voting_open=True)
return Response(SessionSerializer(sessions, many=True).data)
@extend_schema(
responses={200: SessionSerializer()},
description="Gets session details."
)
class SessionDetailView(APIView):
def get(self, request, session_id):
session = Session.objects.get(session_id=session_id)
return Response(SessionSerializer(session).data)
class SessionInfoView(APIView):
def get(self, request, session_id):
track_count = len(Track.objects.all())
vote_count = len(Vote.objects.all())
return Response({'track_count': track_count, 'vote_count': vote_count})