gault-millau/apps/favorites/views.py
2019-11-18 13:51:44 +03:00

56 lines
1.9 KiB
Python

"""Views for app favorites."""
from rest_framework import generics
from establishment.models import Establishment
from establishment.filters import EstablishmentFilter
from establishment.serializers import EstablishmentBaseSerializer, EstablishmentSimilarSerializer
from news.filters import NewsListFilterSet
from news.models import News
from news.serializers import NewsBaseSerializer, NewsListSerializer
from product.models import Product
from product.serializers import ProductBaseSerializer
from product.filters import ProductFilterSet
from .models import Favorites
class FavoritesBaseView(generics.GenericAPIView):
"""Base view for Favorites."""
def get_queryset(self):
"""Override get_queryset method."""
return Favorites.objects.by_user(self.request.user)
class FavoritesEstablishmentListView(generics.ListAPIView):
"""List views for establishments in favorites."""
serializer_class = EstablishmentSimilarSerializer
filter_class = EstablishmentFilter
def get_queryset(self):
"""Override get_queryset method"""
return Establishment.objects.filter(favorites__user=self.request.user) \
.order_by('-favorites')
class FavoritesProductListView(generics.ListAPIView):
"""List views for products in favorites."""
serializer_class = ProductBaseSerializer
filter_class = ProductFilterSet
def get_queryset(self):
"""Override get_queryset method"""
return Product.objects.filter(favorites__user=self.request.user) \
.order_by('-favorites')
class FavoritesNewsListView(generics.ListAPIView):
"""List views for news in favorites."""
serializer_class = NewsListSerializer
filter_class = NewsListFilterSet
def get_queryset(self):
"""Override get_queryset method"""
return News.objects.filter(favorites__user=self.request.user).order_by('-favorites')