From a5ef8aa6e928c890d09880b5a2415a0ccf213b9a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 8 Sep 2021 09:28:32 -0700 Subject: [PATCH 1/4] Adds flag on user model to hide suggested users --- .../0089_user_show_suggested_users.py | 18 ++++++++++++++++++ bookwyrm/models/user.py | 4 ++++ 2 files changed, 22 insertions(+) create mode 100644 bookwyrm/migrations/0089_user_show_suggested_users.py diff --git a/bookwyrm/migrations/0089_user_show_suggested_users.py b/bookwyrm/migrations/0089_user_show_suggested_users.py new file mode 100644 index 00000000..047bb974 --- /dev/null +++ b/bookwyrm/migrations/0089_user_show_suggested_users.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.4 on 2021-09-08 16:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0088_auto_20210905_2233"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="show_suggested_users", + field=models.BooleanField(default=True), + ), + ] diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 4b03f665..7500669f 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -122,8 +122,12 @@ class User(OrderedCollectionPageMixin, AbstractUser): updated_date = models.DateTimeField(auto_now=True) last_active_date = models.DateTimeField(default=timezone.now) manually_approves_followers = fields.BooleanField(default=False) + + # options to turn features on and off show_goal = models.BooleanField(default=True) + show_suggested_users = models.BooleanField(default=True) discoverable = fields.BooleanField(default=False) + preferred_timezone = models.CharField( choices=[(str(tz), str(tz)) for tz in pytz.all_timezones], default=str(pytz.utc), From bb29f33ca8256a2706f5ddd15b53e8a85919770c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 8 Sep 2021 09:38:36 -0700 Subject: [PATCH 2/4] Fixes goal prompt not appearing in feed --- bookwyrm/templates/feed/feed.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/feed/feed.html b/bookwyrm/templates/feed/feed.html index 265a467a..5c4e14e6 100644 --- a/bookwyrm/templates/feed/feed.html +++ b/bookwyrm/templates/feed/feed.html @@ -22,7 +22,7 @@ {% blocktrans with tab_key=tab.key %}load 0 unread status(es){% endblocktrans %} -{% if request.user.show_goal and not goal and tab.key == streams.first.key %} +{% if request.user.show_goal and not goal and tab.key == 'home' %} {% now 'Y' as year %}
{% include 'snippets/goal_card.html' with year=year %} From 527c0542af193885b546ff6e1a6871deaf674804 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 8 Sep 2021 10:02:06 -0700 Subject: [PATCH 3/4] View to hide suggestions --- bookwyrm/templates/feed/feed.html | 4 ++-- bookwyrm/templates/feed/suggested_users.html | 11 ++++++++++- bookwyrm/urls.py | 1 + bookwyrm/views/__init__.py | 2 +- bookwyrm/views/user.py | 12 ++++++++++++ 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/feed/feed.html b/bookwyrm/templates/feed/feed.html index 5c4e14e6..b8e351c9 100644 --- a/bookwyrm/templates/feed/feed.html +++ b/bookwyrm/templates/feed/feed.html @@ -37,7 +37,7 @@

{% trans "There aren't any activities right now! Try following a user to get started" %}

- {% if suggested_users %} + {% if request.user.show_suggested_users and suggested_users %} {# suggested users for when things are very lonely #} {% include 'feed/suggested_users.html' with suggested_users=suggested_users %} {% endif %} @@ -46,7 +46,7 @@ {% for activity in activities %} -{% if not activities.number > 1 and forloop.counter0 == 2 and suggested_users %} +{% if request.user.show_suggested_users and not activities.number > 1 and forloop.counter0 == 2 and suggested_users %} {# suggested users on the first page, two statuses down #} {% include 'feed/suggested_users.html' with suggested_users=suggested_users %} {% endif %} diff --git a/bookwyrm/templates/feed/suggested_users.html b/bookwyrm/templates/feed/suggested_users.html index 1de1ae13..4e9f822b 100644 --- a/bookwyrm/templates/feed/suggested_users.html +++ b/bookwyrm/templates/feed/suggested_users.html @@ -1,6 +1,15 @@ {% load i18n %}
-

{% trans "Who to follow" %}

+
+
+

{% trans "Who to follow" %}

+
+
+ {% csrf_token %} + {% trans "Don't show suggested users" as button_text %} + +
+
{% include 'snippets/suggested_users.html' with suggested_users=suggested_users %} {% trans "View directory" %}
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 991114fa..9ae1b822 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -215,6 +215,7 @@ urlpatterns = [ views.Following.as_view(), name="user-following", ), + re_path(r"^hide-suggestions/?$", views.hide_suggestions, name="hide-suggestions"), # lists re_path(r"%s/lists/?$" % USER_PATH, views.UserLists.as_view(), name="user-lists"), re_path(r"^list/?$", views.Lists.as_view(), name="lists"), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 841026a5..5142d532 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -43,6 +43,6 @@ from .shelf import shelve, unshelve from .site import Site from .status import CreateStatus, DeleteStatus, DeleteAndRedraft from .updates import get_notification_count, get_unread_status_count -from .user import User, Followers, Following +from .user import User, Followers, Following, hide_suggestions from .user_admin import UserAdmin, UserAdminList from .wellknown import * diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 87e42b4e..e335b02c 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -1,8 +1,11 @@ """ non-interactive pages """ +from django.contrib.auth.decorators import login_required from django.core.paginator import Paginator +from django.shortcuts import redirect from django.template.response import TemplateResponse from django.utils import timezone from django.views import View +from django.views.decorators.http import require_POST from bookwyrm import models from bookwyrm.activitypub import ActivitypubResponse @@ -118,3 +121,12 @@ class Following(View): "follow_list": paginated.get_page(request.GET.get("page")), } return TemplateResponse(request, "user/relationships/following.html", data) + + +@require_POST +@login_required +def hide_suggestions(request): + """not everyone wants user suggestions""" + request.user.show_suggested_users = False + request.user.save(broadcast=False, update_fields=["show_suggested_users"]) + return redirect(request.headers.get("Referer", "/")) From 90800c190f4f068a403523f6452c10f333d8bbb9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 8 Sep 2021 10:06:26 -0700 Subject: [PATCH 4/4] Show suggested users toggle in user prefs page --- bookwyrm/forms.py | 1 + bookwyrm/templates/preferences/edit_user.html | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 69052605..96a4e303 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -134,6 +134,7 @@ class EditUserForm(CustomForm): "email", "summary", "show_goal", + "show_suggested_users", "manually_approves_followers", "default_post_privacy", "discoverable", diff --git a/bookwyrm/templates/preferences/edit_user.html b/bookwyrm/templates/preferences/edit_user.html index 6732b8ef..4dc792f9 100644 --- a/bookwyrm/templates/preferences/edit_user.html +++ b/bookwyrm/templates/preferences/edit_user.html @@ -43,9 +43,19 @@
+ + + {% url 'directory' as path %} +

{% blocktrans %}Your account will show up in the directory, and may be recommended to other BookWyrm users.{% endblocktrans %}

-
- - {% url 'directory' as path %} -

{% blocktrans %}Your account will show up in the directory, and may be recommended to other BookWyrm users.{% endblocktrans %}

-