nu met 100 procent meer user endpoints

This commit is contained in:
2025-05-20 22:35:18 +02:00
parent 8b2bbfd4d3
commit 3223785a76
7 changed files with 30 additions and 7 deletions
+1
View File
@@ -1,2 +1,3 @@
from .track import TrackSerializer from .track import TrackSerializer
from .artist import ArtistSerializer from .artist import ArtistSerializer
from .user import UserSerializer
+2 -1
View File
@@ -7,5 +7,6 @@ class TrackSerializer(serializers.HyperlinkedModelSerializer):
fields = ['url', 'id', 'name', 'artists', 'nominated_by', 'explicit', 'duration_ms', 'popularity', 'banter', 'banter_done', 'old'] fields = ['url', 'id', 'name', 'artists', 'nominated_by', 'explicit', 'duration_ms', 'popularity', 'banter', 'banter_done', 'old']
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api-track', 'lookup_field': 'id'}, 'url': {'view_name': 'api-track', 'lookup_field': 'id'},
'artists': {'view_name': 'api-artist', 'lookup_field': 'id'} 'artists': {'view_name': 'api-artist', 'lookup_field': 'id'},
'nominated_by': {'view_name': 'api-user', 'lookup_field': 'id'}
} }
+7
View File
@@ -0,0 +1,7 @@
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'email']
+2
View File
@@ -9,6 +9,8 @@ urlpatterns = [
path('api/track/<id>', views.TrackDetailView.as_view(), name="api-track"), path('api/track/<id>', views.TrackDetailView.as_view(), name="api-track"),
path('api/artist/<id>', views.ArtistDetailView.as_view(), name="api-artist"), path('api/artist/<id>', views.ArtistDetailView.as_view(), name="api-artist"),
path('api/artist', views.ArtistListView.as_view(), name="api-artists"), path('api/artist', views.ArtistListView.as_view(), name="api-artists"),
path('api/users', views.UserListView.as_view(), name="api-users"),
path('api/user/<int:id>', views.UserDetailView.as_view(), name="api-user"),
path('track/', views.NominateView.as_view(), name="nominate"), path('track/', views.NominateView.as_view(), name="nominate"),
path('vote/', views.VoteView.as_view(), name="vote"), path('vote/', views.VoteView.as_view(), name="vote"),
path('vote/undo', views.UndoView.as_view(), name="undo"), path('vote/undo', views.UndoView.as_view(), name="undo"),
+2 -1
View File
@@ -1,4 +1,5 @@
from .static import * from .static import *
from .api.root import *
from .api.track import * from .api.track import *
from .api.artist import * from .api.artist import *
from .api.root import * from .api.user import *
-5
View File
@@ -1,13 +1,8 @@
from rest_framework import viewsets
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.response import Response from rest_framework.response import Response
from playlist.models import Track from playlist.models import Track
from playlist.serializers import TrackSerializer from playlist.serializers import TrackSerializer
class TrackViewSet(viewsets.ModelViewSet):
queryset = Track.objects.all()
serializer_class = TrackSerializer
class TrackListView(APIView): class TrackListView(APIView):
def get(self, request): def get(self, request):
tracks = Track.objects.all() tracks = Track.objects.all()
+16
View File
@@ -0,0 +1,16 @@
from rest_framework.views import APIView
from rest_framework.response import Response
from django.contrib.auth.models import User
from playlist.serializers import UserSerializer
class UserListView(APIView):
def get(self, request):
users = User.objects.all()
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
class UserDetailView(APIView):
def get(self, request, id):
user = User.objects.get(pk=id)
serializer = UserSerializer(user)
return Response(serializer.data)