diff --git a/bookwyrm/models/status.py b/bookwyrm/models/status.py index 8038e3ee..360288e9 100644 --- a/bookwyrm/models/status.py +++ b/bookwyrm/models/status.py @@ -71,6 +71,7 @@ class Status(OrderedCollectionPageMixin, BookWyrmModel): if self.deleted: notification_model.objects.filter(related_status=self).delete() + return if ( self.reply_parent diff --git a/bookwyrm/templates/feed/suggested_users.html b/bookwyrm/templates/feed/suggested_users.html index f66662e8..721ba3d9 100644 --- a/bookwyrm/templates/feed/suggested_users.html +++ b/bookwyrm/templates/feed/suggested_users.html @@ -3,7 +3,7 @@ {% load humanize %}
{% for user in suggested_users %} -
+
{% include 'snippets/avatar.html' with user=user large=True %} diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index 0937fcc3..80eb386a 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -87,11 +87,6 @@ {% trans "Direct Messages" %} -
  • - - {% trans 'Profile' %} - -
  • {% trans 'Directory' %} diff --git a/bookwyrm/templates/settings/manage_invite_requests.html b/bookwyrm/templates/settings/manage_invite_requests.html index f28118bf..63730893 100644 --- a/bookwyrm/templates/settings/manage_invite_requests.html +++ b/bookwyrm/templates/settings/manage_invite_requests.html @@ -79,6 +79,8 @@ {# accepted #} {% if req.invite.invitees.exists %} @{{ req.invite.invitees.first.localname }} + {% else %} +   {% endif %} {% else %}
    diff --git a/bookwyrm/templates/snippets/page_text.html b/bookwyrm/templates/snippets/page_text.html new file mode 100644 index 00000000..dc7a6a33 --- /dev/null +++ b/bookwyrm/templates/snippets/page_text.html @@ -0,0 +1,7 @@ +{% load humanize %} +{% load i18n %} +{% if total_pages %} +{% blocktrans with page=page|intcomma total_pages=total_pages|intcomma %}page {{ page }} of {{ total_pages }}{% endblocktrans %} +{% else %} +{% blocktrans with page=page|intcomma %}page {{ page }}{% endblocktrans %} +{% endif %} diff --git a/bookwyrm/templates/snippets/readthrough.html b/bookwyrm/templates/snippets/readthrough.html index 3e694f61..76611862 100644 --- a/bookwyrm/templates/snippets/readthrough.html +++ b/bookwyrm/templates/snippets/readthrough.html @@ -9,8 +9,18 @@
      {% if readthrough.finish_date or readthrough.progress %} -
    • {% if readthrough.finish_date %} {{ readthrough.finish_date | localtime | naturalday }}: {% trans "finished" %} {% else %}{% if readthrough.progress_mode == 'PG' %}on page {{ readthrough.progress }}{% if book.pages %} of {{ book.pages }}{% endif %} - {% else %}{{ readthrough.progress }}%{% endif %}{% endif %} +
    • + {% if readthrough.finish_date %} + {{ readthrough.finish_date | localtime | naturalday }}: {% trans "finished" %} + {% else %} + + {% if readthrough.progress_mode == 'PG' %} + {% include 'snippets/page_text.html' with page=readthrough.progress total_pages=book.pages %} + {% else %} + {{ readthrough.progress }}% + {% endif %} + {% endif %} + {% if readthrough.progress %} {% trans "Show all updates" as button_text %} {% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="updates" controls_uid=readthrough.id class="is-small" %} @@ -21,7 +31,7 @@ {% csrf_token %} {{ progress_update.created_date | naturalday }}: {% if progress_update.mode == 'PG' %} - page {{ progress_update.progress }} of {{ book.pages }} + {% include 'snippets/page_text.html' with page=progress_update.progress total_pages=book.pages %} {% else %} {{ progress_update.progress }}% {% endif %} diff --git a/bookwyrm/templates/snippets/shelf_selector.html b/bookwyrm/templates/snippets/shelf_selector.html index edc291e0..0be4465f 100644 --- a/bookwyrm/templates/snippets/shelf_selector.html +++ b/bookwyrm/templates/snippets/shelf_selector.html @@ -7,17 +7,15 @@ {% block dropdown-list %} {% for shelf in request.user.shelf_set.all %} -{% if shelf.identifier != current.identifier %}
    • {% csrf_token %} - +
    • -{% endif %} {% endfor %}
    • diff --git a/bookwyrm/templates/snippets/status/status_header.html b/bookwyrm/templates/snippets/status/status_header.html index dc112f4d..818c7237 100644 --- a/bookwyrm/templates/snippets/status/status_header.html +++ b/bookwyrm/templates/snippets/status/status_header.html @@ -38,6 +38,6 @@ {% if status.progress %}

      - ({% if status.progress_mode == 'PG' %}page {{ status.progress }}{%else %}{{ status.progress }}%{% endif %}) +({% if status.progress_mode == 'PG' %}{% include 'snippets/page_text.html' with page=status.progress total_pages=status.book.pages %}{% else %}{{ status.progress }}%{% endif %})

      {% endif %} diff --git a/bookwyrm/templates/user/shelf.html b/bookwyrm/templates/user/shelf.html index d1de6e00..0732327b 100644 --- a/bookwyrm/templates/user/shelf.html +++ b/bookwyrm/templates/user/shelf.html @@ -111,12 +111,14 @@ {% endif %} {% if shelf.user == request.user %} + {% with right=True %} {% if not shelf.id %} {% active_shelf book as current %} {% include 'snippets/shelf_selector.html' with current=current.shelf class="is-small" %} {% else %} {% include 'snippets/shelf_selector.html' with current=shelf class="is-small" %} {% endif %} + {% endwith %} {% endif %} diff --git a/bookwyrm/tests/views/test_helpers.py b/bookwyrm/tests/views/test_helpers.py index a9dadcad..c646b4b4 100644 --- a/bookwyrm/tests/views/test_helpers.py +++ b/bookwyrm/tests/views/test_helpers.py @@ -247,7 +247,7 @@ class ViewsHelpers(TestCase): ) self.assertFalse(views.helpers.object_visible_to_user(self.local_user, obj)) - def test_get_suggested_users(self, _): + def test_get_annotated_users(self, _): """ list of people you might know """ user_1 = models.User.objects.create_user( "nutria@local.com", @@ -279,7 +279,7 @@ class ViewsHelpers(TestCase): user=user_1, book=self.book, shelf=user_1.shelf_set.first() ) - result = views.helpers.get_suggested_users(self.local_user) + result = views.helpers.get_annotated_users(self.local_user) self.assertEqual(result.count(), 3) self.assertTrue(user_1 in result) self.assertFalse(user_2 in result) @@ -294,7 +294,7 @@ class ViewsHelpers(TestCase): self.assertEqual(remote_user_annotated.mutuals, 0) self.assertEqual(remote_user_annotated.shared_books, 0) - def test_get_suggested_users_counts(self, _): + def test_get_annotated_users_counts(self, _): """ correct counting for multiple shared attributed """ user_1 = models.User.objects.create_user( "nutria@local.com", @@ -330,7 +330,7 @@ class ViewsHelpers(TestCase): user=user_1, book=book, shelf=user_1.shelf_set.first() ) - result = views.helpers.get_suggested_users( + result = views.helpers.get_annotated_users( self.local_user, ~Q(id=self.local_user.id), ~Q(followers=self.local_user), diff --git a/bookwyrm/views/directory.py b/bookwyrm/views/directory.py index b329eede..9504734e 100644 --- a/bookwyrm/views/directory.py +++ b/bookwyrm/views/directory.py @@ -6,7 +6,7 @@ from django.template.response import TemplateResponse from django.views import View from django.utils.decorators import method_decorator -from .helpers import get_suggested_users +from .helpers import get_annotated_users # pylint: disable=no-self-use @method_decorator(login_required, name="dispatch") @@ -29,7 +29,7 @@ class Directory(View): if scope == "local": filters["local"] = True - users = get_suggested_users(request.user, **filters) + users = get_annotated_users(request.user, **filters) sort = request.GET.get("sort") if sort == "recent": users = users.order_by("-last_active_date") diff --git a/bookwyrm/views/feed.py b/bookwyrm/views/feed.py index 9f56dae5..e4be50e3 100644 --- a/bookwyrm/views/feed.py +++ b/bookwyrm/views/feed.py @@ -34,16 +34,7 @@ class Feed(View): paginated = Paginator(activities, PAGE_LENGTH) - suggested_users = ( - get_suggested_users( - request.user, - ~Q(id=request.user.id), - ~Q(followers=request.user), - bookwyrm_user=True, - ) - .order_by("-mutuals", "-last_active_date") - .all()[:5] - ) + suggested_users = get_suggested_users(request.user) data = { **feed_page_data(request.user), diff --git a/bookwyrm/views/get_started.py b/bookwyrm/views/get_started.py index 9d7600ee..a21723a3 100644 --- a/bookwyrm/views/get_started.py +++ b/bookwyrm/views/get_started.py @@ -120,17 +120,8 @@ class GetStartedUsers(View): ) if user_results.count() < 5: - suggested_users = ( - get_suggested_users( - request.user, - ~Q(id=request.user.id), - ~Q(followers=request.user), - ~Q(id__in=user_results), - bookwyrm_user=True, - ) - .order_by("shared_books", "-mutuals", "-last_active_date") - .all()[: 5 - user_results.count()] - ) + suggested_users = get_suggested_users(request.user) + data = { "suggested_users": list(user_results) + list(suggested_users), } diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py index 006c6494..75c5da8f 100644 --- a/bookwyrm/views/helpers.py +++ b/bookwyrm/views/helpers.py @@ -192,7 +192,22 @@ def get_discover_books(): ) -def get_suggested_users(user, *args, **kwargs): +def get_suggested_users(user): + """ bookwyrm users you don't already know """ + return ( + get_annotated_users( + user, + ~Q(id=user.id), + ~Q(followers=user), + ~Q(follower_requests=user), + bookwyrm_user=True, + ) + .order_by("-mutuals", "-last_active_date") + .all()[:5] + ) + + +def get_annotated_users(user, *args, **kwargs): """ Users, annotated with things they have in common """ return ( models.User.objects.filter(discoverable=True, is_active=True, *args, **kwargs)