From 75d64762123d7c3c689e6c9f3af289f6b5b31ff2 Mon Sep 17 00:00:00 2001 From: Mikhail Ivanov Date: Mon, 23 Sep 2024 20:59:25 +0200 Subject: [PATCH] fixes the actions endpoint to make correct filtering for a single feed --- feed/views/api.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/feed/views/api.py b/feed/views/api.py index 4c72814..b47bc36 100644 --- a/feed/views/api.py +++ b/feed/views/api.py @@ -2,6 +2,7 @@ from django.core.paginator import InvalidPage from django.http import QueryDict, Http404 +from django.urls import resolve from django.utils.translation import gettext as _ from django.views.generic import TemplateView, DetailView @@ -78,6 +79,15 @@ def post(self, request, *args, **kwargs): class FeedItemActions(FullFeedList): http_method_names = ['post'] + def get_queryset(self): + queryset = super().get_queryset() + parsed_url = urlparse(self.request.headers.get('hx-current-url')) + match = resolve(parsed_url.path) + feed_slug = match.kwargs.get('slug') + if feed_slug: + return queryset.filter(feed__slug=feed_slug) + return queryset + def init_filters(self, request): url = urlparse(request.headers.get('Referer')) query_dict = QueryDict(url.query) @@ -100,11 +110,11 @@ def toggle_interesting(self, request, *args, **kwargs): user = request.user feed_item = self.model.objects.get(pk=feed_item_id) - liked_qs = user.servicefeed_set.filter(type='disliked').first().feed_items - if liked_qs.contains(feed_item): - liked_qs.remove(feed_item) + disliked_qs = user.servicefeed_set.filter(type='disliked').first().feed_items + if disliked_qs.contains(feed_item): + disliked_qs.remove(feed_item) else: - liked_qs.add(feed_item) + disliked_qs.add(feed_item) return feed_item def toggle_liked(self, request, *args, **kwargs):