From d98a6aeb001c5d38da8743c098e2ae0f93ba5f84 Mon Sep 17 00:00:00 2001 From: dormantman Date: Thu, 23 Jan 2020 17:45:59 +0300 Subject: [PATCH] Change structure --- apps/main/views/common.py | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/apps/main/views/common.py b/apps/main/views/common.py index c82af99e..b93096b4 100644 --- a/apps/main/views/common.py +++ b/apps/main/views/common.py @@ -101,17 +101,30 @@ class DetermineLocation(generics.GenericAPIView): raise Http404 -class ContentPageView(generics.ListAPIView): +class ContentPageBaseView(generics.GenericAPIView): + + @property + def static_page_category(self): + name = 'static' + + static_page_category = NewsType.objects.filter(name=name).first() + + if static_page_category is None: + static_page_category = NewsType.objects.create(name=name) + + return static_page_category + + def get_queryset(self): + return super().get_queryset().filter(news_type=self.static_page_category) + + +class ContentPageView(ContentPageBaseView, generics.ListAPIView): """Method to get content pages""" permission_classes = (permissions.AllowAny,) serializer_class = NewsListSerializer queryset = News.objects.all() - def get_queryset(self): - static_page_category = NewsType.objects.get(name='static') - return super().get_queryset().filter(news_type=static_page_category) - class ContentPageAdminView(generics.ListCreateAPIView): """Method to get content pages""" @@ -120,10 +133,6 @@ class ContentPageAdminView(generics.ListCreateAPIView): serializer_class = NewsListSerializer queryset = News.objects.all() - def get_queryset(self): - static_page_category = NewsType.objects.get(name='static') - return super().get_queryset().filter(news_type=static_page_category) - class ContentPageRetrieveView(NewsMixinView, generics.RetrieveAPIView): """Retrieve method to get content pages""" @@ -134,10 +143,6 @@ class ContentPageRetrieveView(NewsMixinView, generics.RetrieveAPIView): queryset = News.objects.all() renderer_classes = [StaticHTMLRenderer] - def get_queryset(self): - static_page_category = NewsType.objects.get(name='static') - return self.queryset.filter(news_type__id=static_page_category.id) - def get(self, request, *args, **kwargs): instance = self.get_object() return Response(instance.description.get(request.locale)) @@ -151,10 +156,6 @@ class ContentPageIdRetrieveView(generics.RetrieveAPIView): queryset = News.objects.all() renderer_classes = [StaticHTMLRenderer] - def get_queryset(self): - static_page_category = NewsType.objects.get(name='static') - return self.queryset.filter(news_type__id=static_page_category.id) - def get(self, request, *args, **kwargs): instance = self.get_object() return Response(instance.description.get(request.locale)) @@ -167,7 +168,3 @@ class ContentPageRetrieveAdminView(NewsMixinView, generics.RetrieveUpdateDestroy permission_classes = (permissions.IsAdminUser,) serializer_class = NewsDetailSerializer queryset = News.objects.all() - - def get_queryset(self): - static_page_category = NewsType.objects.get(name='static') - return super().get_queryset().filter(news_type=static_page_category)