You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
968 B
28 lines
968 B
from rest_framework.renderers import JSONRenderer
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
|
|
from library.models import Article
|
|
from library.serializers import ArticleSerializer, ArticleDetailSerializer
|
|
|
|
|
|
class LibraryListView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request):
|
|
return Response([ArticleSerializer(i).data for i in Article.objects.filter(public=True)], self.status_code)
|
|
|
|
|
|
class LibraryDetailView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request, slug):
|
|
try:
|
|
article = Article.objects.get(slug=slug)
|
|
if not article.public:
|
|
return Response('Article not published', 403)
|
|
return Response(ArticleDetailSerializer(article).data, self.status_code)
|
|
except Article.DoesNotExist:
|
|
return Response("Article doesn't exist", status=404) |