adds owner field to the snippet creation process

This commit is contained in:
Emanuel Rodriguez 2022-08-09 22:14:21 -07:00
parent efa1329432
commit 1f8834c68b
3 changed files with 10 additions and 3 deletions

View File

@ -4,9 +4,11 @@ from django.contrib.auth.models import User
class SnippetSerializer(serializers.ModelSerializer): class SnippetSerializer(serializers.ModelSerializer):
owner = serializers.ReadOnlyField(source="owner.username")
class Meta: class Meta:
model = Snippet model = Snippet
fields = ["id", "title", "code", "language", "line_numbers", "style"] fields = ["id", "title", "code", "language", "line_numbers", "style", "owner"]
def create(self, validated_data): def create(self, validated_data):
return Snippet.objects.create(**validated_data) return Snippet.objects.create(**validated_data)

View File

@ -29,6 +29,8 @@ from snippets.serializers import SnippetSerializer, UserSerializer
class SnippetList(APIView): class SnippetList(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]
def get(self, request, format=None): def get(self, request, format=None):
snippets = Snippet.objects.all() snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True) serializer = SnippetSerializer(snippets, many=True)
@ -37,7 +39,7 @@ class SnippetList(APIView):
def post(self, request, format=None): def post(self, request, format=None):
serializer = SnippetSerializer(data=request.data) serializer = SnippetSerializer(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save(owner=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@ -68,6 +70,8 @@ class SnippetList(APIView):
class SnippetDetail(APIView): class SnippetDetail(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]
def get_object(self, pk): def get_object(self, pk):
try: try:
return Snippet.objects.get(pk=pk) return Snippet.objects.get(pk=pk)

View File

@ -18,5 +18,6 @@ from django.urls import path, include
urlpatterns = [ urlpatterns = [
path("", include("snippets.urls")), path("", include("snippets.urls")),
path('admin/', admin.site.urls) path('admin/', admin.site.urls),
path("api-auth/", include("rest_framework.urls"))
] ]