forked from mirrors/bookwyrm
Merge pull request #2138 from bookwyrm-social/ratings-query
Use general ratings rather than privacy filtered
This commit is contained in:
commit
7905be7de2
3 changed files with 9 additions and 7 deletions
|
@ -374,7 +374,7 @@ class Review(BookStatus):
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
"""clear rating caches"""
|
"""clear rating caches"""
|
||||||
if self.book.parent_work:
|
if self.book.parent_work:
|
||||||
cache.delete(f"book-rating-{self.book.parent_work.id}-*")
|
cache.delete(f"book-rating-{self.book.parent_work.id}")
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,10 @@ register = template.Library()
|
||||||
def get_rating(book, user):
|
def get_rating(book, user):
|
||||||
"""get the overall rating of a book"""
|
"""get the overall rating of a book"""
|
||||||
return cache.get_or_set(
|
return cache.get_or_set(
|
||||||
f"book-rating-{book.parent_work.id}-{user.id}",
|
f"book-rating-{book.parent_work.id}",
|
||||||
lambda u, b: models.Review.privacy_filter(u)
|
lambda u, b: models.Review.objects.filter(
|
||||||
.filter(book__parent_work__editions=b, rating__gt=0)
|
book__parent_work__editions=b, rating__gt=0
|
||||||
.aggregate(Avg("rating"))["rating__avg"]
|
).aggregate(Avg("rating"))["rating__avg"]
|
||||||
or 0,
|
or 0,
|
||||||
user,
|
user,
|
||||||
book,
|
book,
|
||||||
|
|
|
@ -40,7 +40,8 @@ class RatingTags(TestCase):
|
||||||
|
|
||||||
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
|
@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async")
|
||||||
def test_get_rating(self, *_):
|
def test_get_rating(self, *_):
|
||||||
"""privacy filtered rating"""
|
"""privacy filtered rating. Commented versions are how it ought to work with
|
||||||
|
subjective ratings, which are currenly not used for performance reasons."""
|
||||||
# follows-only: not included
|
# follows-only: not included
|
||||||
models.ReviewRating.objects.create(
|
models.ReviewRating.objects.create(
|
||||||
user=self.remote_user,
|
user=self.remote_user,
|
||||||
|
@ -48,7 +49,8 @@ class RatingTags(TestCase):
|
||||||
book=self.book,
|
book=self.book,
|
||||||
privacy="followers",
|
privacy="followers",
|
||||||
)
|
)
|
||||||
self.assertEqual(rating_tags.get_rating(self.book, self.local_user), 0)
|
# self.assertEqual(rating_tags.get_rating(self.book, self.local_user), 0)
|
||||||
|
self.assertEqual(rating_tags.get_rating(self.book, self.local_user), 5)
|
||||||
|
|
||||||
# public: included
|
# public: included
|
||||||
models.ReviewRating.objects.create(
|
models.ReviewRating.objects.create(
|
||||||
|
|
Loading…
Reference in a new issue