refactoring

This commit is contained in:
Anatoly 2019-12-09 14:29:54 +03:00
parent 3e0fad2139
commit dc7a6a911a
4 changed files with 9 additions and 6 deletions

View File

@ -22,6 +22,10 @@ class AdvertisementQuerySet(models.QuerySet):
"""Filter Advertisement by page type."""
return self.filter(page_type__name=page_type)
def by_country(self, code: str):
"""Filter Advertisement by country code."""
return self.filter(sites__country__code=code)
def by_locale(self, locale):
"""Filter by locale."""
return self.filter(target_languages__locale=locale)

View File

@ -11,14 +11,11 @@ from main.models import SiteSettings
class AdvertisementBaseSerializer(serializers.ModelSerializer):
"""Base serializer for model Advertisement."""
languages = LanguageSerializer(many=True, read_only=True,
source='target_languages')
target_languages = serializers.PrimaryKeyRelatedField(
queryset=Language.objects.all(),
many=True,
write_only=True
)
sites = SiteShortSerializer(many=True, read_only=True)
target_sites = serializers.PrimaryKeyRelatedField(
queryset=SiteSettings.objects.all(),
many=True,
@ -33,9 +30,7 @@ class AdvertisementBaseSerializer(serializers.ModelSerializer):
'uuid',
'url',
'block_level',
'languages',
'target_languages',
'sites',
'target_sites',
'start',
'end',

View File

@ -28,5 +28,8 @@ class AdvertisementPageTypeListView(AdvertisementBaseView, generics.ListAPIView)
product_type = self.kwargs.get('page_type')
qs = super(AdvertisementPageTypeListView, self).get_queryset()
if product_type:
return qs.by_page_type(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()

View File

@ -7,3 +7,4 @@ class AdvertisementPageTypeWebListView(AdvertisementPageTypeListView):
"""Advertisement mobile list view."""
serializer_class = AdvertisementPageTypeWebListSerializer