gault-millau/apps/translation/views.py
2019-11-14 22:54:27 +03:00

55 lines
1.7 KiB
Python

"""Translation app views."""
from rest_framework import generics, permissions
from translation import models, serializers
from utils.views import JWTGenericViewMixin
# Mixins
class LanguageViewMixin(generics.GenericAPIView):
"""Mixin for Language views"""
queryset = models.Language.objects.active()
serializer_class = serializers.LanguageSerializer
# Views
class LanguageListView(LanguageViewMixin, generics.ListAPIView):
"""List view for model Language"""
pagination_class = None
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
class LanguageRetrieveView(LanguageViewMixin, generics.RetrieveAPIView):
"""Retrieve, Update, Destroy view for model Language"""
class SiteInterfaceDictionaryMixin:
# todo: refactor this
def get_queryset(self):
locale = self.request.locale or 'en'
return models.SiteInterfaceDictionary.objects.annotate_localized_fields(
locale=locale)
class SiteInterfaceDictionaryView(JWTGenericViewMixin,
SiteInterfaceDictionaryMixin,
generics.ListAPIView):
"""Site interface dictionary LC view."""
pagination_class = None
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
serializer_class = serializers.SiteInterfaceDictionarySerializer
filter_fields = ['page', 'keywords']
class SiteInterfaceDictionaryRetrieveView(JWTGenericViewMixin,
SiteInterfaceDictionaryMixin,
generics.RetrieveAPIView):
"""Site interface dictionary RUD view."""
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.SiteInterfaceDictionarySerializer