nu met een hoeveelheid meer profile

This commit is contained in:
2025-05-20 23:09:34 +02:00
parent fed5612f46
commit ddb99f5056
7 changed files with 68 additions and 4 deletions
+1
View File
@@ -2,3 +2,4 @@ from .track import TrackSerializer
from .artist import ArtistSerializer
from .user import UserSerializer
from .album import AlbumSerializer
from .profile import ProfileSerializer, BackgroundSerializer
+14
View File
@@ -0,0 +1,14 @@
from playlist.models import Profile, Background
from rest_framework import serializers
class BackgroundSerializer(serializers.ModelSerializer):
class Meta:
model = Background
fields = '__all__'
class ProfileSerializer(serializers.ModelSerializer):
background = BackgroundSerializer()
class Meta:
model = Profile
fields = '__all__'
+12 -2
View File
@@ -1,7 +1,17 @@
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class UserSerializer(serializers.HyperlinkedModelSerializer):
# Add explicit reverse lookup to profile
profile = serializers.HyperlinkedRelatedField(
view_name='api-profile',
lookup_field='id',
read_only=True
)
class Meta:
model = User
fields = ['id', 'username', 'email']
fields = ['url', 'id', 'username', 'email', 'profile']
extra_kwargs = {
'url': {'view_name': 'api-user', 'lookup_field': 'id'}
}
+3
View File
@@ -11,6 +11,9 @@ urlpatterns = [
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('api/profile/<int:id>', views.ProfileDetailView.as_view(), name="api-profile"),
path('api/profile/background', views.BackgroundListView.as_view(), name="api-backgrounds"),
path('api/profile/background/<int:id>', views.BackgroundDetailView.as_view(), name="api-background"),
path('api/album/<id>', views.AlbumDetailView.as_view(), name="api-album"),
path('api/album', views.AlbumListView.as_view(), name="api-albums"),
path('track/', views.NominateView.as_view(), name="nominate"),
+1
View File
@@ -4,3 +4,4 @@ from .api.track import *
from .api.artist import *
from .api.user import *
from .api.album import *
from .api.profile import *
+35
View File
@@ -0,0 +1,35 @@
from pickle import BUILD
from playlist import serializers
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from playlist.serializers import ProfileSerializer, BackgroundSerializer
from playlist.models import Profile, Background
class ProfileDetailView(APIView):
authentication_classes = [SessionAuthentication]
permission_classes = [IsAuthenticated]
def get(self, request, id):
profile = Profile.objects.get(pk=id)
serializer = ProfileSerializer(profile)
return Response(serializer.data)
class BackgroundListView(APIView):
authentication_classes = [SessionAuthentication]
permission_classes = [IsAuthenticated]
def get(self, request):
backgrounds = Background.objects.all()
serializer = BackgroundSerializer(backgrounds, many=True)
return Response(serializer.data)
class BackgroundDetailView(APIView):
authentication_classes = [SessionAuthentication]
permission_classes = [IsAuthenticated]
def get(self, request, id):
background = Background.objects.get(pk=id)
serializer = BackgroundSerializer(background)
return Response(serializer.data)
+2 -2
View File
@@ -10,7 +10,7 @@ class UserListView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
users = User.objects.all()
serializer = UserSerializer(users, many=True)
serializer = UserSerializer(users, many=True, context={'request': request})
return Response(serializer.data)
class UserDetailView(APIView):
@@ -18,5 +18,5 @@ class UserDetailView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, id):
user = User.objects.get(pk=id)
serializer = UserSerializer(user)
serializer = UserSerializer(user, context={'request': request})
return Response(serializer.data)