mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-11-26 19:41:11 +00:00
Merge pull request #2636 from 0x29a/redundant-db-queries
Remove redundant DB queries
This commit is contained in:
commit
006ff697b9
4 changed files with 21 additions and 14 deletions
|
@ -215,10 +215,10 @@
|
|||
{% endif %}
|
||||
|
||||
|
||||
{% with work=book.parent_work %}
|
||||
{% with work=book.parent_work editions_count=book.parent_work.editions.count %}
|
||||
<p>
|
||||
<a href="{{ work.local_path }}/editions" id="tour-other-editions-link">
|
||||
{% blocktrans trimmed count counter=work.editions.count with count=work.editions.count|intcomma %}
|
||||
{% blocktrans trimmed count counter=editions_count with count=editions_count|intcomma %}
|
||||
{{ count }} edition
|
||||
{% plural %}
|
||||
{{ count }} editions
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
{% block body %}
|
||||
<nav class="navbar" aria-label="main navigation">
|
||||
<div class="container">
|
||||
{% with notification_count=request.user.unread_notification_count has_unread_mentions=request.user.has_unread_mentions %}
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="/">
|
||||
<img class="image logo" src="{% if site.logo_small %}{% get_media_prefix %}{{ site.logo_small }}{% else %}{% static "images/logo-small.png" %}{% endif %}" alt="{% blocktrans with site_name=site.name %}{{ site_name }} home page{% endblocktrans %}">
|
||||
|
@ -67,9 +68,8 @@
|
|||
>
|
||||
<i class="icon-dots-three-vertical" aria-hidden="true"></i>
|
||||
|
||||
{% with request.user.unread_notification_count as notification_count %}
|
||||
<strong
|
||||
class="{% if not notification_count %}is-hidden {% elif request.user.has_unread_mentions %}is-danger {% else %}is-primary {% endif %} tag is-small px-1"
|
||||
class="{% if not notification_count %}is-hidden {% elif has_unread_mentions %}is-danger {% else %}is-primary {% endif %} tag is-small px-1"
|
||||
data-poll-wrapper
|
||||
>
|
||||
<span class="is-sr-only">{% trans "Notifications" %}</span>
|
||||
|
@ -77,7 +77,6 @@
|
|||
{{ notification_count }}
|
||||
</strong>
|
||||
</strong>
|
||||
{% endwith %}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
@ -108,14 +107,12 @@
|
|||
<span class="is-sr-only">{% trans "Notifications" %}</span>
|
||||
</span>
|
||||
</span>
|
||||
{% with request.user.unread_notification_count as notification_count %}
|
||||
<span
|
||||
class="{% if not notification_count %}is-hidden {% elif request.user.has_unread_mentions %}is-danger {% endif %}tag is-medium transition-x"
|
||||
class="{% if not notification_count %}is-hidden {% elif has_unread_mentions %}is-danger {% endif %}tag is-medium transition-x"
|
||||
data-poll-wrapper
|
||||
>
|
||||
<span data-poll="notifications">{{ notification_count }}</span>
|
||||
</span>
|
||||
{% endwith %}
|
||||
</a>
|
||||
</div>
|
||||
{% else %}
|
||||
|
@ -154,6 +151,7 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endwith %}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
|
|
@ -19,9 +19,9 @@ uuid: a unique identifier used to make html "id" attributes unique and clarify j
|
|||
{# Supplemental fields #}
|
||||
<div>
|
||||
{% active_shelf book as active_shelf %}
|
||||
{% if active_shelf.shelf.identifier == 'reading' and book.latest_readthrough %}
|
||||
|
||||
{% if active_shelf.shelf.identifier == 'reading' %}
|
||||
{% with readthrough=book.latest_readthrough %}
|
||||
{% if readthrough %}
|
||||
<div class="field">
|
||||
<input type="hidden" name="id" value="{{ readthrough.id }}"/>
|
||||
<label class="label" for="progress_{{ uuid }}">{% trans "Progress:" %}</label>
|
||||
|
@ -66,6 +66,7 @@ uuid: a unique identifier used to make html "id" attributes unique and clarify j
|
|||
<p class="help">{% blocktrans with pages=book.pages %}of {{ pages }} pages{% endblocktrans %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
|
@ -237,16 +237,24 @@ def feed_page_data(user):
|
|||
def get_suggested_books(user, max_books=5):
|
||||
"""helper to get a user's recent books"""
|
||||
book_count = 0
|
||||
preset_shelves = [("reading", max_books), ("read", 2), ("to-read", max_books)]
|
||||
preset_shelves = {"reading": max_books, "read": 2, "to-read": max_books}
|
||||
suggested_books = []
|
||||
for (preset, shelf_max) in preset_shelves:
|
||||
|
||||
user_shelves = {
|
||||
shelf.identifier: shelf
|
||||
for shelf in user.shelf_set.filter(
|
||||
identifier__in=preset_shelves.keys()
|
||||
).exclude(books__isnull=True)
|
||||
}
|
||||
|
||||
for preset, shelf_max in preset_shelves.items():
|
||||
limit = (
|
||||
shelf_max
|
||||
if shelf_max < (max_books - book_count)
|
||||
else max_books - book_count
|
||||
)
|
||||
shelf = user.shelf_set.get(identifier=preset)
|
||||
if not shelf.books.exists():
|
||||
shelf = user_shelves.get(preset, None)
|
||||
if not shelf:
|
||||
continue
|
||||
|
||||
shelf_preview = {
|
||||
|
|
Loading…
Reference in a new issue