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):
def filter(self, qs, value):
logger.debug("CaseInsensitiveListFilter got value: %s", value)
if not value:
return qs
values = []
if isinstance(value, str):
values = [v.strip() for v in value.split(',') if v.strip()]
else:
values = [v for v in value if v]
logger.debug("CaseInsensitiveListFilter value splitted: %s", values)
if not values:
return qs
@ -46,9 +41,6 @@ class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
else:
qs = qs.filter(q).distinct()
logger.debug("CaseInsensitiveListFilter Q: %s", str(q))
logger.debug("CaseInsensitiveListFilter qs: %s", str(qs))
return qs

View file

@ -157,7 +157,7 @@ class AttributeValueViewSet(EvibesViewSet):
@extend_schema_view(**CATEGORY_SCHEMA)
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]
filterset_class = CategoryFilter
serializer_class = CategoryDetailSerializer
@ -167,8 +167,6 @@ class CategoryViewSet(EvibesViewSet):
def get_queryset(self):
qs = super().get_queryset()
if self.action == "list":
qs = qs.filter(parent=None)
if self.request.user.has_perm("core.view_category"):
return qs
return qs.filter(is_active=True)