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.

47 lines
1.6 KiB
Python
Raw Normal View History

2022-01-08 04:54:32 +05:30
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
2022-01-08 04:42:34 +05:30
from .models import Snippet
from .serializers import SnippetSerializer
2022-01-08 04:54:32 +05:30
@api_view(['GET', 'POST'])
def snippet_list(request, format=None):
2022-01-08 04:42:34 +05:30
"""
List all code snippets, or create a new snippet.
"""
if request.method == 'GET':
snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True)
2022-01-08 04:54:32 +05:30
return Response(serializer.data)
2022-01-08 04:42:34 +05:30
elif request.method == 'POST':
2022-01-08 04:54:32 +05:30
serializer = SnippetSerializer(data=request.data)
2022-01-08 04:42:34 +05:30
if serializer.is_valid():
serializer.save()
2022-01-08 04:54:32 +05:30
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
2022-01-08 04:42:34 +05:30
2022-01-08 04:54:32 +05:30
@api_view(['GET', 'PUT', 'DELETE'])
def snippet_detail(request, pk, format=None):
2022-01-08 04:42:34 +05:30
"""
Retrieve, update or delete a code snippet.
"""
try:
snippet = Snippet.objects.get(pk=pk)
except Snippet.DoesNotExist:
2022-01-08 04:54:32 +05:30
return Response(status=status.HTTP_404_NOT_FOUND)
2022-01-08 04:42:34 +05:30
if request.method == 'GET':
serializer = SnippetSerializer(snippet)
2022-01-08 04:54:32 +05:30
return Response(serializer.data)
2022-01-08 04:42:34 +05:30
elif request.method == 'PUT':
2022-01-08 04:54:32 +05:30
serializer = SnippetSerializer(snippet, data=request.data)
2022-01-08 04:42:34 +05:30
if serializer.is_valid():
serializer.save()
2022-01-08 04:54:32 +05:30
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
2022-01-08 04:42:34 +05:30
elif request.method == 'DELETE':
snippet.delete()
2022-01-08 04:54:32 +05:30
return Response(status=status.HTTP_204_NO_CONTENT)