From 3223785a76a1e1bf366f071233d68114d1446551 Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Tue, 20 May 2025 22:35:18 +0200 Subject: [PATCH] nu met 100 procent meer user endpoints --- playlist/serializers/__init__.py | 1 + playlist/serializers/track.py | 3 ++- playlist/serializers/user.py | 7 +++++++ playlist/urls.py | 2 ++ playlist/views/__init__.py | 3 ++- playlist/views/api/track.py | 5 ----- playlist/views/api/user.py | 16 ++++++++++++++++ 7 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 playlist/serializers/user.py create mode 100644 playlist/views/api/user.py diff --git a/playlist/serializers/__init__.py b/playlist/serializers/__init__.py index 74134e8..1f7661a 100644 --- a/playlist/serializers/__init__.py +++ b/playlist/serializers/__init__.py @@ -1,2 +1,3 @@ from .track import TrackSerializer from .artist import ArtistSerializer +from .user import UserSerializer diff --git a/playlist/serializers/track.py b/playlist/serializers/track.py index a659f62..863826f 100644 --- a/playlist/serializers/track.py +++ b/playlist/serializers/track.py @@ -7,5 +7,6 @@ class TrackSerializer(serializers.HyperlinkedModelSerializer): fields = ['url', 'id', 'name', 'artists', 'nominated_by', 'explicit', 'duration_ms', 'popularity', 'banter', 'banter_done', 'old'] extra_kwargs = { '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'} } diff --git a/playlist/serializers/user.py b/playlist/serializers/user.py new file mode 100644 index 0000000..3a7808c --- /dev/null +++ b/playlist/serializers/user.py @@ -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'] diff --git a/playlist/urls.py b/playlist/urls.py index a6f6405..0391ed1 100644 --- a/playlist/urls.py +++ b/playlist/urls.py @@ -9,6 +9,8 @@ urlpatterns = [ path('api/track/', views.TrackDetailView.as_view(), name="api-track"), path('api/artist/', views.ArtistDetailView.as_view(), name="api-artist"), path('api/artist', views.ArtistListView.as_view(), name="api-artists"), + path('api/users', views.UserListView.as_view(), name="api-users"), + path('api/user/', views.UserDetailView.as_view(), name="api-user"), path('track/', views.NominateView.as_view(), name="nominate"), path('vote/', views.VoteView.as_view(), name="vote"), path('vote/undo', views.UndoView.as_view(), name="undo"), diff --git a/playlist/views/__init__.py b/playlist/views/__init__.py index 7a37020..edb2f40 100644 --- a/playlist/views/__init__.py +++ b/playlist/views/__init__.py @@ -1,4 +1,5 @@ from .static import * +from .api.root import * from .api.track import * from .api.artist import * -from .api.root import * +from .api.user import * diff --git a/playlist/views/api/track.py b/playlist/views/api/track.py index 497eebd..a29d9fb 100644 --- a/playlist/views/api/track.py +++ b/playlist/views/api/track.py @@ -1,13 +1,8 @@ -from rest_framework import viewsets from rest_framework.views import APIView from rest_framework.response import Response from playlist.models import Track from playlist.serializers import TrackSerializer -class TrackViewSet(viewsets.ModelViewSet): - queryset = Track.objects.all() - serializer_class = TrackSerializer - class TrackListView(APIView): def get(self, request): tracks = Track.objects.all() diff --git a/playlist/views/api/user.py b/playlist/views/api/user.py new file mode 100644 index 0000000..0f8b2f9 --- /dev/null +++ b/playlist/views/api/user.py @@ -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)