Template refactors

En iets met de playlist-maker. URLs opnieuw ingedeeld.
This commit is contained in:
2024-03-18 12:48:33 +01:00
parent 8dca25f861
commit c44db12d30
8 changed files with 91 additions and 90 deletions
+30 -23
View File
@@ -53,7 +53,7 @@ class NominateView(LoginRequiredMixin, View):
def post(self, request):
(profile,_) = Profile.objects.get_or_create(user=request.user)
if profile.quota < 1:
return TemplateResponse(request, "Nominate.html", {"error": "Nee nee nee, dat gaan we dus even niet doen."})
return TemplateResponse(request, "Nominate.html", {"message_type": "error", "message": "Nee nee nee, dat gaan we dus even niet doen."})
try:
spotify_link = self.request.POST['spotify_link']
@@ -64,7 +64,7 @@ class NominateView(LoginRequiredMixin, View):
m = re.match(r"^https:\/\/open.spotify.com\/track\/([a-zA-Z0-9]+)\??", spotify_link)
spotify_id = m.group(1)
except:
return TemplateResponse(request, "Nominate.html", {"error": "Geef een geldige spotify link op!"})
return TemplateResponse(request, "Nominate.html", {"message_type": "error", "message": "Geef een geldige spotify link op!"})
try:
track = Track.all_tracks.get(pk=spotify_id)
@@ -72,19 +72,21 @@ class NominateView(LoginRequiredMixin, View):
track.old = False
track.save()
return TemplateResponse(request, "Nominate.html", {
"warning": "Hey een klassieker.",
"nominated": track
"message_type": "warning",
"message": "Hey een klassieker.",
"message_title": str(track)
})
return TemplateResponse(request, "Nominate.html", {
"error": "Deze is al genomineerd dit jaar, probeer eens iets anders.",
"nominated": track
"message_type": "error",
"message_title": str(track),
"message": "Deze is al genomineerd dit jaar, probeer eens iets anders.",
})
except Track.DoesNotExist:
try:
json = spt.get_song_info(spotify_id)
except Exception as e:
print(e)
return TemplateResponse(request, "Nominate.html", {"error": "Fout bij het ophalen van het liedje."})
return TemplateResponse(request, "Nominate.html", {"message_type": "error", "message": "Fout bij het ophalen van het liedje."})
# Album artists
album_artists = []
@@ -115,8 +117,9 @@ class NominateView(LoginRequiredMixin, View):
if dup:
track.delete()
return TemplateResponse(request, "Nominate.html", {
"error": f"Die hadden we al knul.",
"nominated": dup
"message_type": "error",
"message": "Die hadden we al knul.",
"message_title": str(dup)
})
track.album = album
track.save()
@@ -124,7 +127,7 @@ class NominateView(LoginRequiredMixin, View):
profile.quota -= 1
profile.save()
return TemplateResponse(request, "Nominate.html", {"nominated": track})
return TemplateResponse(request, "Nominate.html", {"message_type": "nominated", "message_title": str(track), "message": "Genomineerd!"})
class SettingsView(LoginRequiredMixin, View):
def get(self, request):
@@ -196,14 +199,25 @@ class OverView(LoginRequiredMixin, View):
}
return TemplateResponse(request, "Overview.html", context)
class PlaylistMake(LoginRequiredMixin, View):
class PlaylistListView(LoginRequiredMixin, View):
def get(self, request, count=None):
return TemplateResponse(request, "PlaylistList.html", context)
def post(self, request):
name = self.request.POST.get('name', None)
if name:
new_playlist = Playlist(name=name)
return TemplateResponse(request, "PlaylistList.html", context)
return self.get(request, count=count)
class PlaylistDetailView(LoginRequiredMixin, View):
def get(self, request, count=None):
context = {}
if count:
#tracks = Track.objects.order_by('score')[count]
tracks = Track.objects.annotate(average_points=Avg('vote__points')).order_by('-average_points')[:count]
context["tracks"] = tracks
return TemplateResponse(request, "PlaylistMaker.html", context)
return TemplateResponse(request, "PlaylistDetail.html", context)
def post(self, request):
try:
count = int(self.request.POST['count'])
@@ -222,18 +236,11 @@ class SpotifyCallbackView(LoginRequiredMixin, View):
error = self.request.GET.get('error')
code = self.request.GET.get('code')
if error:
return TemplateResponse(request, "Nominate.html", {"error": "Je moet wel accepteren, pannenkoek."})
return TemplateResponse(request, "Settings.html", {"message": "Je moet wel accepteren"})
elif code:
(profile,_) = Profile.objects.get_or_create(user=request.user)
profile.init_spt(code)
# data = spt.get_user_token(code)
# access = data.get('access_token', None)
# refresh = data.get('refresh_token', None)
# expires = data.get('expires_in', 3600)
# if access and refresh:
# profile.set_spotify(access, refresh, expires)
# else:
# return TemplateResponse(request, "Nominate.html", {"error": "No."})
return HttpResponseRedirect(reverse('settings'))
#return TemplateResponse(request, "Nominate.html", {"warning": code})
else:
url = spt.get_oauth_redirect()
return HttpResponseRedirect(url)