34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""Views for app advertisement"""
|
|
from rest_framework import generics
|
|
from rest_framework import permissions
|
|
|
|
from advertisement.models import Advertisement
|
|
from advertisement.serializers import AdvertisementBaseSerializer
|
|
|
|
|
|
class AdvertisementBaseView(generics.GenericAPIView):
|
|
"""Advertisement list view."""
|
|
|
|
pagination_class = None
|
|
permission_classes = (permissions.AllowAny, )
|
|
serializer_class = AdvertisementBaseSerializer
|
|
|
|
def get_queryset(self):
|
|
"""Overridden get queryset method."""
|
|
return Advertisement.objects.with_base_related()
|
|
|
|
|
|
class AdvertisementPageTypeListView(AdvertisementBaseView, generics.ListAPIView):
|
|
"""Advertisement list view by page type."""
|
|
|
|
def get_queryset(self):
|
|
"""Overridden get queryset method."""
|
|
product_type = self.kwargs.get('page_type')
|
|
qs = super(AdvertisementPageTypeListView, self).get_queryset()
|
|
if product_type:
|
|
return qs.by_page_type(product_type) \
|
|
.by_country(self.request.country_code) \
|
|
.by_locale(self.request.locale) \
|
|
.distinct('id')
|
|
return qs.none()
|