Coverage for snippets/views.py: 86.67%
30 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-29 13:21 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-29 13:21 -0700
1from django.contrib.auth import get_user_model 1a
2from django.views.generic import ListView 1a
3from rest_framework import permissions, renderers, viewsets 1a
4from rest_framework.decorators import action, api_view 1a
5from rest_framework.response import Response 1a
6from rest_framework.reverse import reverse 1a
8from .models import Snippet 1a
9from .permissions import IsOwnerOrReadOnly 1a
10from .serializers import SnippetSerializer, UserSerializer 1a
12User = get_user_model() 1a
15@api_view(["GET"]) 1a
16def api_root(request, format=None): 1a
17 return Response(
18 # fmt: off
19 {
20 "users": reverse("user-list", request=request, format=format),
21 "snippets": reverse("snippet-list", request=request, format=format),
22 }
23 # fmt: on
24 )
27class SnippetViewSet(viewsets.ModelViewSet): 1a
28 """
29 This viewset autmatically provides 'list', 'create', 'retrieve',
30 'update', and 'destroy' actions.
32 Additionally we also provide an extra 'highlight' action.
33 """
35 queryset = Snippet.objects.all() 1a
36 serializer_class = SnippetSerializer 1a
37 permission_classes = ( 1a
38 permissions.IsAuthenticatedOrReadOnly,
39 IsOwnerOrReadOnly,
40 )
42 @action(detail=True, renderer_classes=[renderers.StaticHTMLRenderer]) 1a
43 def highlight(self, request, *args, **kwargs): 1a
44 snippet = self.get_object()
45 return Response(snippet.highlighted)
47 def perform_create(self, serializer): 1a
48 serializer.save(owner=self.request.user)
51class UserViewSet(viewsets.ReadOnlyModelViewSet): 1a
52 """
53 This viewset automatically provides 'list' and 'retrieve actions.
54 """
56 queryset = User.objects.all() 1a
57 serializer_class = UserSerializer 1a
60class SnippetListView(ListView): 1a
61 model = Snippet 1a
62 template_name = "snippets/snippets_list.html" 1a
64 paginate_by = 5 1a