"""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