Merge branch 'main' into smaller-statuses
This commit is contained in:
commit
d62cf3fecb
|
@ -109,7 +109,10 @@
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<p class="mb-2"><label class="label" for="id_series">{% trans "Series:" %}</label> {{ form.series }} </p>
|
<p class="mb-2">
|
||||||
|
<label class="label" for="id_series">{% trans "Series:" %}</label>
|
||||||
|
<input type="text" class="input" name="series" id="id_series" value="{{ form.series.value|default:'' }}">
|
||||||
|
</p>
|
||||||
{% for error in form.series.errors %}
|
{% for error in form.series.errors %}
|
||||||
<p class="help is-danger">{{ error | escape }}</p>
|
<p class="help is-danger">{{ error | escape }}</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -30,26 +30,32 @@
|
||||||
{% include 'snippets/shelve_button/shelve_button.html' with book=item.book %}
|
{% include 'snippets/shelve_button/shelve_button.html' with book=item.book %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer has-background-white-bis">
|
<div class="card-footer has-background-white-bis is-align-items-baseline">
|
||||||
<div class="card-footer-item">
|
<div class="card-footer-item">
|
||||||
|
<div>
|
||||||
<p>{% blocktrans with username=item.user.display_name user_path=user.local_path %}Added by <a href="{{ user_path }}">{{ username }}</a>{% endblocktrans %}</p>
|
<p>{% blocktrans with username=item.user.display_name user_path=user.local_path %}Added by <a href="{{ user_path }}">{{ username }}</a>{% endblocktrans %}</p>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{% if list.user == request.user or list.curation == 'open' and item.user == request.user %}
|
{% if list.user == request.user or list.curation == 'open' and item.user == request.user %}
|
||||||
|
<div class="card-footer-item">
|
||||||
|
<form name="set-position" method="post" action="{% url 'list-set-book-position' item.id %}">
|
||||||
|
<div class="field has-addons mb-0">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="control">
|
||||||
|
<input id="input-list-position" class="input is-small" type="number" min="1" name="position" value="{{ item.order }}">
|
||||||
|
</div>
|
||||||
|
<div class="control">
|
||||||
|
<button type="submit" class="button is-info is-small is-tablet">{% trans "Set" %}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<label for="input-list-position" class="help">{% trans "List position" %}</label>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
<form name="add-book" method="post" action="{% url 'list-remove-book' list.id %}" class="card-footer-item">
|
<form name="add-book" method="post" action="{% url 'list-remove-book' list.id %}" class="card-footer-item">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="item" value="{{ item.id }}">
|
<input type="hidden" name="item" value="{{ item.id }}">
|
||||||
<button type="submit" class="button is-small is-danger">{% trans "Remove" %}</button>
|
<button type="submit" class="button is-small is-danger">{% trans "Remove" %}</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
|
||||||
<div class="card-footer has-background-white-bis">
|
|
||||||
<div>
|
|
||||||
<form name="set-position" method="post" action="{% url 'list-set-book-position' item.id %}" class="card-footer-item">
|
|
||||||
{% csrf_token %}
|
|
||||||
<label for="input-list-position" class="is-sr-only">{% trans "List position" %}</label>
|
|
||||||
<input id="input-list-position" class="input" type="number" min="1" name="position" value="{{ item.order }}">
|
|
||||||
<button type="submit" class="button is-small is-info">{% trans "List position" %}</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{% spaceless %}
|
|
||||||
|
|
||||||
{% load bookwyrm_tags %}
|
{% load bookwyrm_tags %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
|
@ -127,4 +125,4 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endspaceless %}
|
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
{% load bookwyrm_tags %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% with status_type=status.status_type %}
|
||||||
|
<div
|
||||||
|
class="block"
|
||||||
|
|
||||||
|
{% if status_type == 'Review' %}
|
||||||
|
{% firstof "reviewBody" as body_prop %}
|
||||||
|
{% firstof 'itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating"' as rating_type %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if status_type == 'Rating' %}
|
||||||
|
itemprop="rating"
|
||||||
|
itemtype="https://schema.org/Rating"
|
||||||
|
{% endif %}
|
||||||
|
>
|
||||||
|
{% if status_type == 'Review' or status_type == 'Rating' %}
|
||||||
|
<div>
|
||||||
|
{% if status.name %}
|
||||||
|
<h3
|
||||||
|
class="title is-5 has-subtitle"
|
||||||
|
dir="auto"
|
||||||
|
itemprop="name"
|
||||||
|
>
|
||||||
|
{{ status.name|escape }}
|
||||||
|
</h3>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<span
|
||||||
|
class="is-sr-only"
|
||||||
|
{{ rating_type }}
|
||||||
|
>
|
||||||
|
<meta itemprop="ratingValue" content="{{ status.rating|floatformat }}">
|
||||||
|
|
||||||
|
{% if status_type == 'Rating' %}
|
||||||
|
{# @todo Is it possible to not hard-code the value? #}
|
||||||
|
<meta itemprop="bestRating" content="5">
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
{% include 'snippets/stars.html' with rating=status.rating %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if status.content_warning %}
|
||||||
|
<div>
|
||||||
|
<p>{{ status.content_warning }}</p>
|
||||||
|
|
||||||
|
{% trans "Show more" as button_text %}
|
||||||
|
|
||||||
|
{% with text=button_text class="is-small" controls_text="show-status-cw" controls_uid=status.id %}
|
||||||
|
{% include 'snippets/toggle/open_button.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div
|
||||||
|
{% if status.content_warning %}
|
||||||
|
id="show-status-cw-{{ status.id }}"
|
||||||
|
class="is-hidden"
|
||||||
|
{% endif %}
|
||||||
|
>
|
||||||
|
{% if status.content_warning %}
|
||||||
|
{% trans "Show less" as button_text %}
|
||||||
|
|
||||||
|
{% with text=button_text class="is-small" controls_text="show-status-cw" controls_uid=status.id %}
|
||||||
|
{% include 'snippets/toggle/close_button.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if status.quote %}
|
||||||
|
<div class="quote block">
|
||||||
|
<blockquote dir="auto" class="content mb-2">{{ status.quote | safe }}</blockquote>
|
||||||
|
|
||||||
|
<p> — {% include 'snippets/book_titleby.html' with book=status.book %}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if status.content and status_type != 'GeneratedNote' and status_type != 'Announce' %}
|
||||||
|
{% with full=status.content|safe no_trim=status.content_warning itemprop=body_prop %}
|
||||||
|
{% include 'snippets/trimmed_text.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if status.attachments.exists %}
|
||||||
|
<div class="block">
|
||||||
|
<div class="columns">
|
||||||
|
{% for attachment in status.attachments.all %}
|
||||||
|
<div class="column is-narrow">
|
||||||
|
<figure class="image is-128x128">
|
||||||
|
<a
|
||||||
|
href="/images/{{ attachment.image }}"
|
||||||
|
target="_blank"
|
||||||
|
aria-label="{% trans 'Open image in new window' %}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
src="/images/{{ attachment.image }}"
|
||||||
|
|
||||||
|
{% if attachment.caption %}
|
||||||
|
alt="{{ attachment.caption }}"
|
||||||
|
title="{{ attachment.caption }}"
|
||||||
|
{% endif %}
|
||||||
|
>
|
||||||
|
</a>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if not hide_book %}
|
||||||
|
{% if status.book or status.mention_books.count %}
|
||||||
|
<div
|
||||||
|
{% if status_type != 'GeneratedNote' %}
|
||||||
|
class="box has-background-white-bis"
|
||||||
|
{% endif %}
|
||||||
|
>
|
||||||
|
{% if status.book %}
|
||||||
|
{% with book=status.book %}
|
||||||
|
{% include 'snippets/status/book_preview.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
{% elif status.mention_books.count %}
|
||||||
|
{% with book=status.mention_books.first %}
|
||||||
|
{% include 'snippets/status/book_preview.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endwith %}
|
|
@ -1,4 +1,3 @@
|
||||||
{% spaceless %}
|
|
||||||
{% load bookwyrm_tags %}
|
{% load bookwyrm_tags %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
|
@ -46,4 +45,3 @@
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{% endspaceless %}
|
|
||||||
|
|
|
@ -30,6 +30,14 @@ class UserViews(TestCase):
|
||||||
self.rat = models.User.objects.create_user(
|
self.rat = models.User.objects.create_user(
|
||||||
"rat@local.com", "rat@rat.rat", "password", local=True, localname="rat"
|
"rat@local.com", "rat@rat.rat", "password", local=True, localname="rat"
|
||||||
)
|
)
|
||||||
|
self.book = models.Edition.objects.create(title="test")
|
||||||
|
with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay"):
|
||||||
|
models.ShelfBook.objects.create(
|
||||||
|
book=self.book,
|
||||||
|
user=self.local_user,
|
||||||
|
shelf=self.local_user.shelf_set.first(),
|
||||||
|
)
|
||||||
|
|
||||||
models.SiteSettings.objects.create()
|
models.SiteSettings.objects.create()
|
||||||
self.anonymous_user = AnonymousUser
|
self.anonymous_user = AnonymousUser
|
||||||
self.anonymous_user.is_authenticated = False
|
self.anonymous_user.is_authenticated = False
|
||||||
|
|
|
@ -270,10 +270,10 @@ class Editions(View):
|
||||||
if request.GET.get("format"):
|
if request.GET.get("format"):
|
||||||
filters["physical_format__iexact"] = request.GET.get("format")
|
filters["physical_format__iexact"] = request.GET.get("format")
|
||||||
|
|
||||||
editions = work.editions.order_by("-edition_rank").all()
|
editions = work.editions.order_by("-edition_rank")
|
||||||
languages = set(sum([e.languages for e in editions], []))
|
languages = set(sum([e.languages for e in editions], []))
|
||||||
|
|
||||||
paginated = Paginator(editions.filter(**filters).all(), PAGE_LENGTH)
|
paginated = Paginator(editions.filter(**filters), PAGE_LENGTH)
|
||||||
data = {
|
data = {
|
||||||
"editions": paginated.get_page(request.GET.get("page")),
|
"editions": paginated.get_page(request.GET.get("page")),
|
||||||
"work": work,
|
"work": work,
|
||||||
|
|
|
@ -59,7 +59,7 @@ class User(View):
|
||||||
{
|
{
|
||||||
"name": user_shelf.name,
|
"name": user_shelf.name,
|
||||||
"local_path": user_shelf.local_path,
|
"local_path": user_shelf.local_path,
|
||||||
"books": user_shelf.books[:3],
|
"books": user_shelf.books.all()[:3],
|
||||||
"size": user_shelf.books.count(),
|
"size": user_shelf.books.count(),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue