cache rating for trending
This commit is contained in:
parent
d8d07c3777
commit
1fe394c10e
4 changed files with 27 additions and 16 deletions
|
@ -167,7 +167,8 @@ class GoodreadsTestCase(TestCase):
|
||||||
t_url = "https://www.goodreads.com/book/show/77566.Hyperion"
|
t_url = "https://www.goodreads.com/book/show/77566.Hyperion"
|
||||||
t_url2 = "https://www.goodreads.com/book/show/77566"
|
t_url2 = "https://www.goodreads.com/book/show/77566"
|
||||||
isbn = "9780553283686"
|
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.ready, False)
|
||||||
self.assertEqual(site.url, t_url2)
|
self.assertEqual(site.url, t_url2)
|
||||||
site.get_resource()
|
site.get_resource()
|
||||||
|
|
|
@ -263,6 +263,7 @@ class ItemInSchema(Schema):
|
||||||
cover_image_url: str | None
|
cover_image_url: str | None
|
||||||
rating: float | None
|
rating: float | None
|
||||||
rating_count: int | None
|
rating_count: int | None
|
||||||
|
rating_distribution: dict[str, int] | None
|
||||||
# brief is deprecated
|
# brief is deprecated
|
||||||
brief: str = Field(deprecated=True, alias="display_description")
|
brief: str = Field(deprecated=True, alias="display_description")
|
||||||
|
|
||||||
|
@ -768,25 +769,25 @@ class Item(PolymorphicModel):
|
||||||
def editable(self):
|
def editable(self):
|
||||||
return not self.is_deleted and self.merged_to_item is None
|
return not self.is_deleted and self.merged_to_item is None
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def rating(self):
|
def rating(self):
|
||||||
from journal.models import Rating
|
from journal.models import Rating
|
||||||
|
|
||||||
return Rating.get_rating_for_item(self)
|
return Rating.get_rating_for_item(self)
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def rating_count(self):
|
def rating_count(self):
|
||||||
from journal.models import Rating
|
from journal.models import Rating
|
||||||
|
|
||||||
return Rating.get_rating_count_for_item(self)
|
return Rating.get_rating_count_for_item(self)
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def rating_dist(self):
|
def rating_distribution(self):
|
||||||
from journal.models import Rating
|
from journal.models import Rating
|
||||||
|
|
||||||
return Rating.get_rating_distribution_for_item(self)
|
return Rating.get_rating_distribution_for_item(self)
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def tags(self):
|
def tags(self):
|
||||||
from journal.models import TagManager
|
from journal.models import TagManager
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,10 @@ class DiscoverGenerator(BaseJob):
|
||||||
"category": category,
|
"category": category,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
for i in items:
|
||||||
|
i.rating
|
||||||
|
i.rating_count
|
||||||
|
i.rating_distribution
|
||||||
cache.set(key, items, timeout=None)
|
cache.set(key, items, timeout=None)
|
||||||
|
|
||||||
item_ids = self.get_popular_marked_item_ids(category, DAYS_FOR_TRENDS, [])[
|
item_ids = self.get_popular_marked_item_ids(category, DAYS_FOR_TRENDS, [])[
|
||||||
|
|
|
@ -167,20 +167,25 @@
|
||||||
</div>
|
</div>
|
||||||
<div data-placement="top">
|
<div data-placement="top">
|
||||||
<ul class="chart">
|
<ul class="chart">
|
||||||
<li data-tooltip="{{ item.rating_dist.0 }}%" data-placement="left">
|
<li data-tooltip="{{ item.rating_distribution.0 }}%"
|
||||||
<span style="height:{{ item.rating_dist.0 }}%"></span>
|
data-placement="left">
|
||||||
|
<span style="height:{{ item.rating_distribution.0 }}%"></span>
|
||||||
</li>
|
</li>
|
||||||
<li data-tooltip="{{ item.rating_dist.1 }}%" data-placement="left">
|
<li data-tooltip="{{ item.rating_distribution.1 }}%"
|
||||||
<span style="height:{{ item.rating_dist.1 }}%"></span>
|
data-placement="left">
|
||||||
|
<span style="height:{{ item.rating_distribution.1 }}%"></span>
|
||||||
</li>
|
</li>
|
||||||
<li data-tooltip="{{ item.rating_dist.2 }}%" data-placement="left">
|
<li data-tooltip="{{ item.rating_distribution.2 }}%"
|
||||||
<span style="height:{{ item.rating_dist.2 }}%"></span>
|
data-placement="left">
|
||||||
|
<span style="height:{{ item.rating_distribution.2 }}%"></span>
|
||||||
</li>
|
</li>
|
||||||
<li data-tooltip="{{ item.rating_dist.3 }}%" data-placement="left">
|
<li data-tooltip="{{ item.rating_distribution.3 }}%"
|
||||||
<span style="height:{{ item.rating_dist.3 }}%"></span>
|
data-placement="left">
|
||||||
|
<span style="height:{{ item.rating_distribution.3 }}%"></span>
|
||||||
</li>
|
</li>
|
||||||
<li data-tooltip="{{ item.rating_dist.4 }}%" data-placement="left">
|
<li data-tooltip="{{ item.rating_distribution.4 }}%"
|
||||||
<span style="height:{{ item.rating_dist.4 }}%"></span>
|
data-placement="left">
|
||||||
|
<span style="height:{{ item.rating_distribution.4 }}%"></span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Reference in a new issue