From 1fe394c10eb370912e1c1fa8aa5f9b4cd8ebbd07 Mon Sep 17 00:00:00 2001 From: mein Name Date: Fri, 28 Feb 2025 06:19:35 -0500 Subject: [PATCH] cache rating for trending --- catalog/book/tests.py | 3 ++- catalog/common/models.py | 11 ++++++----- catalog/jobs/discover.py | 4 ++++ catalog/templates/item_base.html | 25 +++++++++++++++---------- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/catalog/book/tests.py b/catalog/book/tests.py index 3eec1250..21a11caa 100644 --- a/catalog/book/tests.py +++ b/catalog/book/tests.py @@ -167,7 +167,8 @@ class GoodreadsTestCase(TestCase): t_url = "https://www.goodreads.com/book/show/77566.Hyperion" t_url2 = "https://www.goodreads.com/book/show/77566" isbn = "9780553283686" - site = SiteManager.get_site_by_url(t_url) + site = SiteManager.get_site_by_url(t_url, False) + self.assertIsNotNone(site) self.assertEqual(site.ready, False) self.assertEqual(site.url, t_url2) site.get_resource() diff --git a/catalog/common/models.py b/catalog/common/models.py index e29e1df4..1308ee83 100644 --- a/catalog/common/models.py +++ b/catalog/common/models.py @@ -263,6 +263,7 @@ class ItemInSchema(Schema): cover_image_url: str | None rating: float | None rating_count: int | None + rating_distribution: dict[str, int] | None # brief is deprecated brief: str = Field(deprecated=True, alias="display_description") @@ -768,25 +769,25 @@ class Item(PolymorphicModel): def editable(self): return not self.is_deleted and self.merged_to_item is None - @property + @cached_property def rating(self): from journal.models import Rating return Rating.get_rating_for_item(self) - @property + @cached_property def rating_count(self): from journal.models import Rating return Rating.get_rating_count_for_item(self) - @property - def rating_dist(self): + @cached_property + def rating_distribution(self): from journal.models import Rating return Rating.get_rating_distribution_for_item(self) - @property + @cached_property def tags(self): from journal.models import TagManager diff --git a/catalog/jobs/discover.py b/catalog/jobs/discover.py index ba6fa5f1..771afce2 100644 --- a/catalog/jobs/discover.py +++ b/catalog/jobs/discover.py @@ -121,6 +121,10 @@ class DiscoverGenerator(BaseJob): "category": category, } ) + for i in items: + i.rating + i.rating_count + i.rating_distribution cache.set(key, items, timeout=None) item_ids = self.get_popular_marked_item_ids(category, DAYS_FOR_TRENDS, [])[ diff --git a/catalog/templates/item_base.html b/catalog/templates/item_base.html index b4cc964f..de8ae264 100644 --- a/catalog/templates/item_base.html +++ b/catalog/templates/item_base.html @@ -167,20 +167,25 @@