diff --git a/playlist/admin.py b/playlist/admin.py index d3c7142..b832f3d 100644 --- a/playlist/admin.py +++ b/playlist/admin.py @@ -1,4 +1,6 @@ from django.contrib import admin +from django.utils.http import urlencode +from django.shortcuts import redirect from .models import Track, Artist, Album, Background, Vote, Profile class TrackAdmin(admin.ModelAdmin): @@ -13,8 +15,20 @@ class VoteAdmin(admin.ModelAdmin): pass class ProfileAdmin(admin.ModelAdmin): pass +class AllTrackAdmin(admin.ModelAdmin): + list_display = ["name", "artist", "old", "from_playlist"] + list_filter = ["old", "from_playlist"] + def get_queryset(self, request): + return (Track.all_tracks.all()) + def changelist_view(self, request, extra_context=None): + if 'old__exact' not in request.GET: + default_filter = urlencode({'old__exact': '0'}) # 'True' or 'False' + return redirect(f"{request.path}?{default_filter}") + return super().changelist_view(request, extra_context=extra_context) -admin.site.register(Track, TrackAdmin) + +#admin.site.register(Track, TrackAdmin) +admin.site.register(Track, AllTrackAdmin) admin.site.register(Artist, ArtistAdmin) admin.site.register(Album, AlbumAdmin) admin.site.register(Background, BackgroundAdmin) diff --git a/playlist/models/track.py b/playlist/models/track.py index 3a3516e..a5b105a 100644 --- a/playlist/models/track.py +++ b/playlist/models/track.py @@ -45,19 +45,20 @@ class Track(models.Model): id = models.CharField(primary_key=True, max_length=128) - nominated_by = models.ForeignKey(User, null=True, default=None, on_delete=models.SET_NULL) + nominated_by = models.ForeignKey(User, blank=True, null=True, default=None, on_delete=models.SET_NULL) name = models.CharField(max_length=255) artists = models.ManyToManyField(Artist) - album = models.ForeignKey(Album, null=True, on_delete=models.SET_NULL) + album = models.ForeignKey(Album, blank=True, null=True, on_delete=models.SET_NULL) explicit = models.BooleanField(default=False) - duration_ms = models.PositiveIntegerField(null=True) - popularity = models.PositiveIntegerField(null=True) + duration_ms = models.PositiveIntegerField(blank=True, null=True) + popularity = models.PositiveIntegerField(blank=True, null=True) - banter = models.TextField(blank=True) + banter = models.TextField(null=True, blank=True) banter_done = models.BooleanField(default=False) old = models.BooleanField(default=False) + from_playlist = models.CharField(max_length=255, null=True, blank=True, default=None) objects = TrackManager() all_tracks = models.Manager() diff --git a/playlist/spotify.py b/playlist/spotify.py index ee530be..8eb2658 100644 --- a/playlist/spotify.py +++ b/playlist/spotify.py @@ -91,4 +91,15 @@ class Spotify(): r.raise_for_status() return r.json() + def get_playlist_info(self, playlist_id): + token = self.get_system_token() + url = 'https://api.spotify.com/v1/playlists/' + playlist_id + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + token + } + r = requests.get(url, headers=headers) + r.raise_for_status() + return r.json() + spt = Spotify() \ No newline at end of file diff --git a/playlist/templates/Settings.html b/playlist/templates/Settings.html index 496ed49..df858d0 100644 --- a/playlist/templates/Settings.html +++ b/playlist/templates/Settings.html @@ -13,6 +13,13 @@ Instellingen +
+ {% comment %} {% if sptDisplayName %}