Features: 1) Add prefetch for "tags" in CategoryViewSet queryset;

Fixes: 1) Simplify `CaseInsensitiveListFilter` by removing redundant debug logs;

Extra: 1) Remove unused conditional filtering for parent category in `CategoryViewSet`.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-16 09:33:56 +03:00
parent 4f010da204
commit ea552fc3ba
2 changed files with 1 additions and 11 deletions

View file

@ -24,19 +24,14 @@ logger = logging.getLogger(__name__)
class CaseInsensitiveListFilter(BaseInFilter, CharFilter): class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
def filter(self, qs, value): def filter(self, qs, value):
logger.debug("CaseInsensitiveListFilter got value: %s", value)
if not value: if not value:
return qs return qs
values = []
if isinstance(value, str): if isinstance(value, str):
values = [v.strip() for v in value.split(',') if v.strip()] values = [v.strip() for v in value.split(',') if v.strip()]
else: else:
values = [v for v in value if v] values = [v for v in value if v]
logger.debug("CaseInsensitiveListFilter value splitted: %s", values)
if not values: if not values:
return qs return qs
@ -46,9 +41,6 @@ class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
else: else:
qs = qs.filter(q).distinct() qs = qs.filter(q).distinct()
logger.debug("CaseInsensitiveListFilter Q: %s", str(q))
logger.debug("CaseInsensitiveListFilter qs: %s", str(qs))
return qs return qs

View file

@ -157,7 +157,7 @@ class AttributeValueViewSet(EvibesViewSet):
@extend_schema_view(**CATEGORY_SCHEMA) @extend_schema_view(**CATEGORY_SCHEMA)
class CategoryViewSet(EvibesViewSet): class CategoryViewSet(EvibesViewSet):
queryset = Category.objects.all().prefetch_related("parent", "children", "attributes") queryset = Category.objects.all().prefetch_related("parent", "children", "attributes", "tags")
filter_backends = [DjangoFilterBackend] filter_backends = [DjangoFilterBackend]
filterset_class = CategoryFilter filterset_class = CategoryFilter
serializer_class = CategoryDetailSerializer serializer_class = CategoryDetailSerializer
@ -167,8 +167,6 @@ class CategoryViewSet(EvibesViewSet):
def get_queryset(self): def get_queryset(self):
qs = super().get_queryset() qs = super().get_queryset()
if self.action == "list":
qs = qs.filter(parent=None)
if self.request.user.has_perm("core.view_category"): if self.request.user.has_perm("core.view_category"):
return qs return qs
return qs.filter(is_active=True) return qs.filter(is_active=True)