skip queue
This commit is contained in:
+27
-4
@@ -26,10 +26,10 @@ class AuthView(View):
|
||||
|
||||
class VoteView(LoginRequiredMixin, View):
|
||||
def get(self, request, undo=None):
|
||||
track = get_unvoted(request.user)
|
||||
(track, skipped) = get_unvoted(request.user)
|
||||
if track and not track.album.image:
|
||||
get_and_dither_image(track.album.image_url, track.album, "image")
|
||||
return TemplateResponse(request, "Vote.html", {"track": track, "undo": undo})
|
||||
return TemplateResponse(request, "Vote.html", {"track": track, "undo": undo, "skipped": skipped})
|
||||
def post(self, request):
|
||||
(profile,_) = Profile.objects.get_or_create(user=request.user)
|
||||
try:
|
||||
@@ -40,11 +40,14 @@ class VoteView(LoginRequiredMixin, View):
|
||||
score = min(max(1, score), 5)
|
||||
track = Track.objects.get(pk=spotify_id)
|
||||
try:
|
||||
Vote.objects.get(user=request.user, track=track)
|
||||
prevote = Vote.objects.get(user=request.user, track=track)
|
||||
except Vote.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
raise Exception(f"{request.user} already voted for {track}")
|
||||
if not prevote.skipped:
|
||||
raise Exception(f"{request.user} already voted for {track}")
|
||||
else:
|
||||
prevote.delete()
|
||||
vote = Vote.objects.create(track=track, user=request.user, points=score)
|
||||
(profile,_) = Profile.objects.get_or_create(user=request.user)
|
||||
profile.last_voted = track
|
||||
@@ -186,6 +189,26 @@ class UndoView(LoginRequiredMixin, View):
|
||||
vote.delete()
|
||||
return HttpResponseRedirect('/vote/')
|
||||
|
||||
class SkipView(LoginRequiredMixin, View):
|
||||
def get(self, request):
|
||||
return HttpResponseRedirect('/vote/')
|
||||
def post(self, request):
|
||||
spotify_id = self.request.POST['spotify_id']
|
||||
track = Track.objects.get(pk=spotify_id)
|
||||
(profile,_) = Profile.objects.get_or_create(user=request.user)
|
||||
if not profile.can_vote:
|
||||
raise Exception(f"{request.user} tried to vote after closing for {track}")
|
||||
vote = None
|
||||
try:
|
||||
vote = Vote.objects.get(user=request.user, track=track)
|
||||
except Vote.DoesNotExist:
|
||||
pass
|
||||
profile.last_voted = None
|
||||
profile.save()
|
||||
vote = Vote.objects.create(track=track, user=request.user, points=0, skipped=True)
|
||||
profile.save()
|
||||
return self.get(request)
|
||||
|
||||
class OverView(LoginRequiredMixin, View):
|
||||
def get(self, request):
|
||||
votes = Vote.objects.select_related().distinct()
|
||||
|
||||
Reference in New Issue
Block a user