Removes get activity feed function
This commit is contained in:
parent
0caea7e9ff
commit
7eb494b4ab
8 changed files with 27 additions and 174 deletions
|
@ -19,8 +19,7 @@ from bookwyrm.activitypub import ActivitypubResponse
|
|||
from bookwyrm.connectors import connector_manager
|
||||
from bookwyrm.connectors.abstract_connector import get_image
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
from .helpers import is_api_request, get_activity_feed, get_edition
|
||||
from .helpers import privacy_filter
|
||||
from .helpers import is_api_request, get_edition, privacy_filter
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
|
@ -53,7 +52,7 @@ class Book(View):
|
|||
|
||||
# all reviews for the book
|
||||
reviews = models.Review.objects.filter(book__in=work.editions.all())
|
||||
reviews = get_activity_feed(request.user, queryset=reviews)
|
||||
reviews = privacy_filter(request.user, reviews)
|
||||
|
||||
# the reviews to show
|
||||
paginated = Paginator(
|
||||
|
|
|
@ -11,7 +11,7 @@ from django.views import View
|
|||
from bookwyrm import activitystreams, forms, models
|
||||
from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.settings import PAGE_LENGTH, STREAMS
|
||||
from .helpers import get_activity_feed, get_user_from_username
|
||||
from .helpers import get_user_from_username, privacy_filter
|
||||
from .helpers import is_api_request, is_bookwyrm_request, object_visible_to_user
|
||||
|
||||
|
||||
|
@ -58,7 +58,13 @@ class DirectMessage(View):
|
|||
except ValueError:
|
||||
page = 1
|
||||
|
||||
queryset = models.Status.objects
|
||||
# remove fancy subclasses of status, keep just good ol' notes
|
||||
queryset = models.Status.objects.filter(
|
||||
review__isnull=True,
|
||||
comment__isnull=True,
|
||||
quotation__isnull=True,
|
||||
generatednote__isnull=True,
|
||||
)
|
||||
|
||||
user = None
|
||||
if username:
|
||||
|
@ -69,8 +75,8 @@ class DirectMessage(View):
|
|||
if user:
|
||||
queryset = queryset.filter(Q(user=user) | Q(mention_users=user))
|
||||
|
||||
activities = get_activity_feed(
|
||||
request.user, privacy=["direct"], queryset=queryset
|
||||
activities = privacy_filter(
|
||||
request.user, queryset, privacy_levels=["direct"]
|
||||
)
|
||||
|
||||
paginated = Paginator(activities, PAGE_LENGTH)
|
||||
|
|
|
@ -59,6 +59,11 @@ def object_visible_to_user(viewer, obj):
|
|||
def privacy_filter(viewer, queryset, privacy_levels=None, following_only=False):
|
||||
""" filter objects that have "user" and "privacy" fields """
|
||||
privacy_levels = privacy_levels or ["public", "unlisted", "followers", "direct"]
|
||||
# if there'd a deleted field, exclude deleted items
|
||||
try:
|
||||
queryset = queryset.filter(deleted=False)
|
||||
except FieldError:
|
||||
pass
|
||||
|
||||
# exclude blocks from both directions
|
||||
if not viewer.is_anonymous:
|
||||
|
@ -102,54 +107,6 @@ def privacy_filter(viewer, queryset, privacy_levels=None, following_only=False):
|
|||
return queryset
|
||||
|
||||
|
||||
def get_activity_feed(
|
||||
user, privacy=None, local_only=False, following_only=False, queryset=None
|
||||
):
|
||||
""" get a filtered queryset of statuses """
|
||||
if queryset is None:
|
||||
queryset = models.Status.objects.select_subclasses()
|
||||
|
||||
# exclude deleted
|
||||
queryset = queryset.exclude(deleted=True).order_by("-published_date")
|
||||
|
||||
# apply privacy filters
|
||||
queryset = privacy_filter(user, queryset, privacy, following_only=following_only)
|
||||
|
||||
# only show dms if we only want dms
|
||||
if privacy == ["direct"]:
|
||||
# dms are direct statuses not related to books
|
||||
queryset = queryset.filter(
|
||||
review__isnull=True,
|
||||
comment__isnull=True,
|
||||
quotation__isnull=True,
|
||||
generatednote__isnull=True,
|
||||
)
|
||||
else:
|
||||
try:
|
||||
queryset = queryset.exclude(
|
||||
review__isnull=True,
|
||||
comment__isnull=True,
|
||||
quotation__isnull=True,
|
||||
generatednote__isnull=True,
|
||||
privacy="direct",
|
||||
)
|
||||
except FieldError:
|
||||
# if we're looking at a subtype of Status (like Review)
|
||||
pass
|
||||
|
||||
# filter for only local status
|
||||
if local_only:
|
||||
queryset = queryset.filter(user__local=True)
|
||||
|
||||
# remove statuses that have boosts in the same queryset
|
||||
try:
|
||||
queryset = queryset.filter(~Q(boosters__in=queryset))
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
return queryset
|
||||
|
||||
|
||||
def handle_remote_webfinger(query):
|
||||
""" webfingerin' other servers """
|
||||
user = None
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
""" serialize user's posts in rss feed """
|
||||
|
||||
from django.contrib.syndication.views import Feed
|
||||
from .helpers import get_activity_feed, get_user_from_username
|
||||
from .helpers import get_user_from_username, privacy_filter
|
||||
|
||||
# pylint: disable=no-self-use, unused-argument
|
||||
class RssFeed(Feed):
|
||||
|
@ -24,10 +24,10 @@ class RssFeed(Feed):
|
|||
|
||||
def items(self, obj):
|
||||
""" the user's activity feed """
|
||||
return get_activity_feed(
|
||||
return privacy_filter(
|
||||
obj,
|
||||
privacy=["public", "unlisted"],
|
||||
queryset=obj.status_set.select_subclasses(),
|
||||
obj.status_set.select_subclasses(),
|
||||
privacy_levels=["public", "unlisted"],
|
||||
)
|
||||
|
||||
def item_link(self, item):
|
||||
|
|
|
@ -16,8 +16,8 @@ from django.views import View
|
|||
from bookwyrm import forms, models
|
||||
from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
from .helpers import get_activity_feed, get_user_from_username, is_api_request
|
||||
from .helpers import is_blocked, object_visible_to_user
|
||||
from .helpers import get_user_from_username, is_api_request
|
||||
from .helpers import is_blocked, privacy_filter, object_visible_to_user
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
|
@ -72,9 +72,9 @@ class User(View):
|
|||
break
|
||||
|
||||
# user's posts
|
||||
activities = get_activity_feed(
|
||||
activities = privacy_filter(
|
||||
request.user,
|
||||
queryset=user.status_set.select_subclasses(),
|
||||
user.status_set.select_subclasses(),
|
||||
)
|
||||
paginated = Paginator(activities, PAGE_LENGTH)
|
||||
goal = models.AnnualGoal.objects.filter(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue