diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py index 231ecec9..5fab9386 100644 --- a/bookwyrm/tests/views/test_user.py +++ b/bookwyrm/tests/views/test_user.py @@ -186,3 +186,11 @@ class UserViews(TestCase): self.local_user.refresh_from_db() self.assertFalse(self.local_user.show_suggested_users) + + def test_user_redirect(self): + """test the basic redirect""" + request = self.factory.get("@mouse") + request.user = self.anonymous_user + result = views.user_redirect(request, "mouse") + + self.assertEqual(result.status_code, 302) diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 7220b545..87c1e160 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -276,6 +276,7 @@ urlpatterns = [ # users re_path(rf"{USER_PATH}\.json$", views.User.as_view()), re_path(rf"{USER_PATH}/?$", views.User.as_view(), name="user-feed"), + re_path(rf"^@(?P{regex.USERNAME})$", views.user_redirect), re_path(rf"{USER_PATH}/rss/?$", views.rss_feed.RssFeed(), name="user-rss"), re_path( rf"{USER_PATH}/followers(.json)?/?$", diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 8b1f5648..f77a3b50 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -94,7 +94,7 @@ from .search import Search from .status import CreateStatus, EditStatus, DeleteStatus, update_progress from .status import edit_readthrough from .updates import get_notification_count, get_unread_status_count -from .user import User, Followers, Following, hide_suggestions +from .user import User, Followers, Following, hide_suggestions, user_redirect from .wellknown import * from .annual_summary import ( AnnualSummary, diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 188f8e66..9deea14b 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -151,3 +151,9 @@ def hide_suggestions(request): request.user.show_suggested_users = False request.user.save(broadcast=False, update_fields=["show_suggested_users"]) return redirect(request.headers.get("Referer", "/")) + + +# pylint: disable=unused-argument +def user_redirect(request, username): + """redirect to a user's feed""" + return redirect("user-feed", username=username)