diff --git a/apps/tag/models.py b/apps/tag/models.py index 32cbfa05..3deed7d9 100644 --- a/apps/tag/models.py +++ b/apps/tag/models.py @@ -33,16 +33,21 @@ class TagCategoryQuerySet(models.QuerySet): """Extended queryset for TagCategory model.""" def with_base_related(self): + """Select related objects.""" return self.prefetch_related('tags') def for_news(self): + """Select tag categories for news.""" return self.filter(news_types__isnull=True) def for_establishments(self): - return self - # return self.filter(models.Q(est_subtype_tag_categories__isnull=True) | - # models.Q(est_type_tag_categories__isnull=True)).\ - # distinct() + """Select tag categories for establishments.""" + return self.filter(models.Q(establishment_types__isnull=False) | + models.Q(establishment_subtypes__isnull=False)) + + def with_tags(self, switcher=True): + """Filter by existing tags.""" + return self.filter(tags__isnull=not switcher) def with_related(self): return self.select_related('country').prefetch_related('tags') diff --git a/apps/tag/serializers.py b/apps/tag/serializers.py index 895fe2a1..946206f4 100644 --- a/apps/tag/serializers.py +++ b/apps/tag/serializers.py @@ -49,7 +49,7 @@ class TagCategoryBaseSerializer(serializers.ModelSerializer): class TagCategoryDetailSerializer(TagCategoryBaseSerializer): - + """Detailed serializer for TagCategory model.""" class Meta(TagCategoryBaseSerializer.Meta): """Meta class.""" diff --git a/apps/tag/views.py b/apps/tag/views.py index 2bc9d8d2..622ec849 100644 --- a/apps/tag/views.py +++ b/apps/tag/views.py @@ -1,5 +1,5 @@ """Tag views.""" -from rest_framework import generics, viewsets, mixins +from rest_framework import viewsets, mixins from tag import filters, models, serializers from rest_framework import permissions @@ -14,20 +14,11 @@ class TagViewSet(mixins.ListModelMixin, mixins.CreateModelMixin, serializer_class = serializers.TagBackOfficeSerializer -class TagCategoryListCreateView(generics.ListCreateAPIView): - """List/create tag category view.""" - - pagination_class = None - permission_classes = (permissions.AllowAny, ) - queryset = models.TagCategory.objects.all() - serializer_class = serializers.TagCategoryBackOfficeDetailSerializer - - class TagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): """ViewSet for TagCategory model.""" filterset_class = filters.TagCategoryFilterSet pagination_class = None permission_classes = (permissions.AllowAny, ) - queryset = models.TagCategory.objects.with_base_related() + queryset = models.TagCategory.objects.with_tags().with_base_related() serializer_class = serializers.TagCategoryBaseSerializer diff --git a/project/urls/back.py b/project/urls/back.py index 389c6f51..5d221932 100644 --- a/project/urls/back.py +++ b/project/urls/back.py @@ -7,7 +7,7 @@ urlpatterns = [ path('establishments/', include('establishment.urls.back')), path('location/', include('location.urls.back')), path('news/', include('news.urls.back')), - path('tags/', include(('tag.urls.back', 'tag'), namespace='tag')), + # path('tags/', include(('tag.urls.back', 'tag'), namespace='tag')), path('account/', include('account.urls.back')), path('comment/', include('comment.urls.back')), ]