forked from mirrors/bookwyrm
Adds books stream audience
This commit is contained in:
parent
699d9307e3
commit
a8d6dbd8a6
1 changed files with 28 additions and 0 deletions
|
@ -173,6 +173,34 @@ class FederatedStream(ActivityStream):
|
||||||
privacy_levels=["public"],
|
privacy_levels=["public"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class BooksStream(ActivityStream):
|
||||||
|
"""books on your shelves"""
|
||||||
|
|
||||||
|
key = "books"
|
||||||
|
|
||||||
|
def get_audience(self, status):
|
||||||
|
"""anyone with the mentioned book on their shelves"""
|
||||||
|
# only show public statuses on the books feed,
|
||||||
|
# and only statuses that mention books
|
||||||
|
if status.privacy != "public" or not (status.mention_books.exists() or hasattr(status, "book")):
|
||||||
|
return []
|
||||||
|
|
||||||
|
work = status.book.parent_work if hasattr(status, "book") else status.mention_books.first().parent_work
|
||||||
|
|
||||||
|
audience = super().get_audience(status)
|
||||||
|
if not audience:
|
||||||
|
return []
|
||||||
|
return audience.filter(
|
||||||
|
shelfbook__book__parent_work=work
|
||||||
|
).distinct()
|
||||||
|
|
||||||
|
def get_statuses_for_user(self, user):
|
||||||
|
"""any public status that mentions their books"""
|
||||||
|
return privacy_filter(
|
||||||
|
user,
|
||||||
|
models.Status.objects.select_subclasses().filter(,
|
||||||
|
privacy_levels=["public"],
|
||||||
|
)
|
||||||
|
|
||||||
streams = {
|
streams = {
|
||||||
"home": HomeStream(),
|
"home": HomeStream(),
|
||||||
|
|
Loading…
Reference in a new issue