12345678910111213141516171819202122232425262728293031323334353637383940 |
- from django.shortcuts import render
- from rest_framework.response import Response
- from rest_framework.decorators import api_view, permission_classes
- from rest_framework.generics import RetrieveAPIView
- from rest_framework.status import HTTP_201_CREATED, HTTP_400_BAD_REQUEST
- from rest_framework.permissions import IsAuthenticatedOrReadOnly
- from main.models import Ad, Comment
- from .serializers import AdSerializer, AdDetailSerializer, CommentSerializer
- # Выдаем список объявлений
- @api_view(['GET'])
- def ads(request):
- if request.method == 'GET':
- ads = Ad.objects.filter(is_active=True)[:10]
- serializer = AdSerializer(ads, many=True)
- return Response(serializer.data)
- # Выдаем сведения о выбранном объявлении
- class AdDetailView(RetrieveAPIView):
- queryset = Ad.objects.filter(is_active=True)
- serializer_class = AdDetailSerializer
- # Добавлять комментарий разрешено только зарегистрированным пользователям
- # Просматривать комментарии разрешено всем
- @api_view(['GET', 'POST'])
- @permission_classes((IsAuthenticatedOrReadOnly,))
- def comments(request, pk):
- if request.method == 'POST':
- serializer = CommentSerializer(data=request.data)
- if serializer.is_valid():
- serializer.save()
- return Response(serializer.data, status=HTTP_201_CREATED)
- else:
- return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
- else:
- comments = Comment.objects.filter(is_active=True, ad=pk)
- serializer = CommentSerializer(comments, many=True)
- return Response(serializer.data)
|