Refactors en stemmen werkt
This commit is contained in:
+24
-14
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user