cache rating for trending

This commit is contained in:
mein Name 2025-02-28 06:19:35 -05:00 committed by Henri Dickson
parent d8d07c3777
commit 1fe394c10e
4 changed files with 27 additions and 16 deletions

View file

@ -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()

View file

@ -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

View file

@ -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, [])[

View file

@ -167,20 +167,25 @@
</div>
<div data-placement="top">
<ul class="chart">
<li data-tooltip="{{ item.rating_dist.0 }}%" data-placement="left">
<span style="height:{{ item.rating_dist.0 }}%"></span>
<li data-tooltip="{{ item.rating_distribution.0 }}%"
data-placement="left">
<span style="height:{{ item.rating_distribution.0 }}%"></span>
</li>
<li data-tooltip="{{ item.rating_dist.1 }}%" data-placement="left">
<span style="height:{{ item.rating_dist.1 }}%"></span>
<li data-tooltip="{{ item.rating_distribution.1 }}%"
data-placement="left">
<span style="height:{{ item.rating_distribution.1 }}%"></span>
</li>
<li data-tooltip="{{ item.rating_dist.2 }}%" data-placement="left">
<span style="height:{{ item.rating_dist.2 }}%"></span>
<li data-tooltip="{{ item.rating_distribution.2 }}%"
data-placement="left">
<span style="height:{{ item.rating_distribution.2 }}%"></span>
</li>
<li data-tooltip="{{ item.rating_dist.3 }}%" data-placement="left">
<span style="height:{{ item.rating_dist.3 }}%"></span>
<li data-tooltip="{{ item.rating_distribution.3 }}%"
data-placement="left">
<span style="height:{{ item.rating_distribution.3 }}%"></span>
</li>
<li data-tooltip="{{ item.rating_dist.4 }}%" data-placement="left">
<span style="height:{{ item.rating_dist.4 }}%"></span>
<li data-tooltip="{{ item.rating_distribution.4 }}%"
data-placement="left">
<span style="height:{{ item.rating_distribution.4 }}%"></span>
</li>
</ul>
</div>