Refactors en stemmen werkt

This commit is contained in:
2024-02-07 14:07:36 +01:00
parent 0f5090cadc
commit 48dcf3bd9d
8 changed files with 61 additions and 34 deletions
+24 -14
View File
@@ -4,23 +4,16 @@ from django.http import HttpResponse
from django.template.response import TemplateResponse
from django.contrib.auth.mixins import LoginRequiredMixin
import re
from random import choice
from .models import Track, Artist, Album
from .models.utils import from_json
from .models import Track, Artist, Album, Vote
from .utils import from_json, get_unvoted
from . import spotify
spt = spotify.Spotify()
# TODO auth mixins
class AuthView(View):
def get(self, request):
return TemplateResponse(request, "Login.html", {})
class TrackListView(View):
def get(self, request):
return HttpResponse("..")
class TrackDetailView(LoginRequiredMixin, View):
def get(self, request, spotify_id):
try:
@@ -35,11 +28,28 @@ class VoteView(LoginRequiredMixin, View):
return TemplateResponse(request, "Vote.html", {"songs": songs})
class VoteTrackView(LoginRequiredMixin, View):
def get(self, request):
pks = Track.objects.values_list('pk', flat=True)
track = Track.objects.get(pk=choice(pks))
return TemplateResponse(request, "SpotifyEmbed.html", {"id": track.id})
def get(self, request, error=None):
track = get_unvoted(request.user)
return TemplateResponse(request, "SpotifyEmbed.html", {"track": track, "error": error})
def post(self, request):
try:
spotify_id = self.request.POST['spotify_id']
score = int(self.request.POST['vote'])
score = min(max(-2, score), 2)
track = Track.objects.get(pk=spotify_id)
try:
Vote.objects.get(user=request.user, track=track)
except Vote.DoesNotExist:
pass #expected behaviour
else:
raise Exception(f"{request.user} already voted for {track}")
Vote.objects.create(track=track, user=request.user, points=score)
print(track)
except Exception as e:
print(e)
return self.get(request, str(e))
else:
return self.get(request)
class NominateView(LoginRequiredMixin, View):
def get(self, request):