gault-millau/apps/translation/views.py

55 lines
1.8 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.all()
serializer_class = serializers.LanguageSerializer
# Views
class LanguageListCreateView(LanguageViewMixin, generics.ListCreateAPIView):
"""List view for model Language"""
pagination_class = None
permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
class LanguageRetrieveUpdateDestroyView(LanguageViewMixin,
generics.RetrieveUpdateDestroyAPIView):
"""Retrieve, Update, Destroy view for model Language"""
class SiteInterfaceDictionaryMixin:
# todo: refactor this
def get_queryset(self):
locale = self._get_locale(self.request) or 'en'
return models.SiteInterfaceDictionary.objects.annotate_localized_fields(
locale=locale)
class SiteInterfaceDictionaryView(JWTGenericViewMixin,
SiteInterfaceDictionaryMixin,
generics.ListCreateAPIView):
"""Site interface dictionary LC view."""
pagination_class = None
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
serializer_class = serializers.SiteInterfaceDictionarySerializer
filter_fields = ['page', 'keywords']
class SiteInterfaceDictionaryRUDView(JWTGenericViewMixin,
SiteInterfaceDictionaryMixin,
generics.RetrieveUpdateDestroyAPIView):
"""Site interface dictionary RUD view."""
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.SiteInterfaceDictionarySerializer