This repository has been archived on 2022-09-23. You can view files and clone it, but cannot push or open issues or pull requests.
webdev/api/snippets/views.py

37 lines
1.3 KiB
Python
Raw Normal View History

2022-01-08 05:10:31 +05:30
from django.contrib.auth.models import User
2022-01-08 04:42:34 +05:30
from .models import Snippet
2022-01-08 05:10:31 +05:30
from .serializers import SnippetSerializer, UserSerializer
2022-01-08 09:57:26 +05:30
from snippets.permissions import IsOwnerOrReadOnly
from rest_framework import permissions, renderers
2022-01-08 06:49:47 +05:30
from rest_framework.response import Response
from rest_framework.reverse import reverse
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
2022-01-08 06:49:47 +05:30
class SnippetViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list`, `create`, `retrieve`,
`update` and `destroy` actions.
2022-01-08 04:42:34 +05:30
Additionally we also provide an extra `highlight` action.
"""
2022-01-08 04:59:57 +05:30
queryset = Snippet.objects.all()
2022-01-08 05:10:31 +05:30
serializer_class = SnippetSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly,
IsOwnerOrReadOnly]
2022-01-08 05:10:31 +05:30
@action(detail=True, renderer_classes=[renderers.StaticHTMLRenderer])
def highlight(self, request, *args, **kwargs):
2022-01-08 06:49:47 +05:30
snippet = self.get_object()
return Response(snippet.highlighted)
2022-01-08 05:10:31 +05:30
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class UserViewSet(viewsets.ReadOnlyModelViewSet):
"""
This viewset automatically provides `list` and `retrieve` actions.
"""
2022-01-08 05:10:31 +05:30
queryset = User.objects.all()
serializer_class = UserSerializer