From 1f8834c68bc7ce3dfdf88dd5f894a5445c539b8d Mon Sep 17 00:00:00 2001 From: Emanuel Rodriguez Date: Tue, 9 Aug 2022 22:14:21 -0700 Subject: [PATCH] adds owner field to the snippet creation process --- snippets/serializers.py | 4 +++- snippets/views.py | 6 +++++- tutorial/urls.py | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/snippets/serializers.py b/snippets/serializers.py index 8c5e150..88b611d 100644 --- a/snippets/serializers.py +++ b/snippets/serializers.py @@ -4,9 +4,11 @@ from django.contrib.auth.models import User class SnippetSerializer(serializers.ModelSerializer): + + owner = serializers.ReadOnlyField(source="owner.username") class Meta: model = Snippet - fields = ["id", "title", "code", "language", "line_numbers", "style"] + fields = ["id", "title", "code", "language", "line_numbers", "style", "owner"] def create(self, validated_data): return Snippet.objects.create(**validated_data) diff --git a/snippets/views.py b/snippets/views.py index 4efee61..38db5f1 100644 --- a/snippets/views.py +++ b/snippets/views.py @@ -29,6 +29,8 @@ from snippets.serializers import SnippetSerializer, UserSerializer class SnippetList(APIView): + permission_classes = [IsAuthenticatedOrReadOnly] + def get(self, request, format=None): snippets = Snippet.objects.all() serializer = SnippetSerializer(snippets, many=True) @@ -37,7 +39,7 @@ class SnippetList(APIView): def post(self, request, format=None): serializer = SnippetSerializer(data=request.data) if serializer.is_valid(): - serializer.save() + serializer.save(owner=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @@ -68,6 +70,8 @@ class SnippetList(APIView): class SnippetDetail(APIView): + permission_classes = [IsAuthenticatedOrReadOnly] + def get_object(self, pk): try: return Snippet.objects.get(pk=pk) diff --git a/tutorial/urls.py b/tutorial/urls.py index 1e5e1e4..3d72c8d 100644 --- a/tutorial/urls.py +++ b/tutorial/urls.py @@ -18,5 +18,6 @@ from django.urls import path, include urlpatterns = [ path("", include("snippets.urls")), - path('admin/', admin.site.urls) + path('admin/', admin.site.urls), + path("api-auth/", include("rest_framework.urls")) ]