From efa1329432de9c104e2b011cefad2e56bde1ab7e Mon Sep 17 00:00:00 2001 From: Emanuel Rodriguez Date: Tue, 9 Aug 2022 20:39:16 -0700 Subject: [PATCH] adds views for user endpoints still WIP --- snippets/serializers.py | 2 +- snippets/urls.py | 4 +++- snippets/views.py | 29 ++++++++++++++++++++++++++++- subl-proj.sublime-workspace | 21 +++++++++++++-------- 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/snippets/serializers.py b/snippets/serializers.py index 892a332..8c5e150 100644 --- a/snippets/serializers.py +++ b/snippets/serializers.py @@ -27,5 +27,5 @@ class UserSerializer(serializers.ModelSerializer): class Meta: model = User - fields = ["id", "username", "snippet"] + fields = ["id", "username", "snippets"] diff --git a/snippets/urls.py b/snippets/urls.py index de7fa97..1056ae3 100644 --- a/snippets/urls.py +++ b/snippets/urls.py @@ -3,5 +3,7 @@ from snippets import views urlpatterns = [ path("snippets/", views.SnippetList.as_view()), - path("snippets//", views.SnippetDetail.as_view()) + path("snippets//", views.SnippetDetail.as_view()), + path("user/", views.UserList.as_view()), + path("user/", views.UserDetail.as_view()) ] \ No newline at end of file diff --git a/snippets/views.py b/snippets/views.py index b766a35..4efee61 100644 --- a/snippets/views.py +++ b/snippets/views.py @@ -2,10 +2,13 @@ from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.views import APIView +from rest_framework.permissions import IsAuthenticatedOrReadOnly from django.http import Http404 +from django.contrib.auth.models import User + from snippets.models import Snippet -from snippets.serializers import SnippetSerializer +from snippets.serializers import SnippetSerializer, UserSerializer # @api_view(["GET", "POST"]) # def snippet_list(request): @@ -90,3 +93,27 @@ class SnippetDetail(APIView): return Response(status=status.HTTP_204_NO_CONTENT) +class UserList(APIView): + permission_classes = [IsAuthenticatedOrReadOnly] + + def get(self, request, format=None): + user = User.objects.all() + serializer = UserSerializer(user, many=True) + return Response(serializer.data, status=status.HTTP_200_OK) + +class UserDetail(APIView): + + permission_classes = [IsAuthenticatedOrReadOnly] + + def get_user(self, pk): + try: + return User.objects.get(pk=pk) + except User.DoesNotExist: + raise Http404 + + def get(self, request, pk, format=None): + user = self.get_user(pk=pk) + serializer = UserSerializer(user) + return Response(serializer.data) + + diff --git a/subl-proj.sublime-workspace b/subl-proj.sublime-workspace index 1fe758e..d4850df 100644 --- a/subl-proj.sublime-workspace +++ b/subl-proj.sublime-workspace @@ -3,6 +3,10 @@ { "selected_items": [ + [ + "hight", + "highlighted" + ], [ "JSON", "JSONParser" @@ -81,6 +85,7 @@ }, "file_history": [ + "/C/Users/eeman/learning/django-rest-tutorial/.venv/Lib/site-packages/django/contrib/auth/migrations/0005_alter_user_last_login_null.py", "/C/Users/eeman/learning/django-rest-tutorial/snippets/models.py", "/C/Users/eeman/learning/django-rest-tutorial/snippets/serializers.py", "/C/Users/eeman/learning/django-rest-tutorial/.gitignore", @@ -146,20 +151,20 @@ "selected_items": [ [ - "views", - "snippets\\views.py" - ], - [ - "urls", - "tutorial\\urls.py" + "seria", + "snippets\\serializers.py" ], [ "model", "snippets\\models.py" ], [ - "seria", - "snippets\\serializers.py" + "urls", + "snippets\\urls.py" + ], + [ + "views", + "snippets\\views.py" ], [ "gitig",