From 9f3a08d39d8d79fe92e8296d01792dc419a2f43e Mon Sep 17 00:00:00 2001 From: ITQ Date: Sun, 26 Jan 2025 23:43:08 +0300 Subject: [PATCH] fix: fixed filtering by category --- solution/api/v1/user/views.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/solution/api/v1/user/views.py b/solution/api/v1/user/views.py index 2d6d570..8c106e8 100644 --- a/solution/api/v1/user/views.py +++ b/solution/api/v1/user/views.py @@ -164,13 +164,20 @@ def feed( promocodes = promocodes.order_by("-created_at") + promocodes = promocodes.all() + if filters.category: category_lower = filters.category.lower() - promocodes = promocodes.filter( - Q(target__categories__icontains=category_lower) - ) - promocodes = promocodes.all() + def matches_category(promocode: Promocode) -> bool: + categories = ( + promocode.target.categories or [] + ) + return any( + category.lower() == category_lower for category in categories + ) + + promocodes = [p for p in promocodes if matches_category(p)] if filters.active is not None: promocodes = [p for p in promocodes if p.active == filters.active]