diff --git a/bookwyrm/templates/user_admin/user.html b/bookwyrm/templates/user_admin/user.html index 7bb6abfa..a33c7110 100644 --- a/bookwyrm/templates/user_admin/user.html +++ b/bookwyrm/templates/user_admin/user.html @@ -8,7 +8,7 @@ {% block panel %}
- {% trans "Back to reports" %} + {% trans "Back to users" %}
{% include 'user_admin/user_info.html' with user=user %} diff --git a/bookwyrm/templates/user_admin/user_admin.html b/bookwyrm/templates/user_admin/user_admin.html index 554fbdd3..2ab526a9 100644 --- a/bookwyrm/templates/user_admin/user_admin.html +++ b/bookwyrm/templates/user_admin/user_admin.html @@ -41,7 +41,7 @@ {% for user in users %} - {{ user.username }} + {{ user.username }} {{ user.created_date }} {{ user.last_active_date }} {% if user.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %} diff --git a/bookwyrm/templates/user_admin/user_moderation_actions.html b/bookwyrm/templates/user_admin/user_moderation_actions.html index 41010994..043ef386 100644 --- a/bookwyrm/templates/user_admin/user_moderation_actions.html +++ b/bookwyrm/templates/user_admin/user_moderation_actions.html @@ -5,7 +5,7 @@

{% trans "Send direct message" %}

-
+ {% csrf_token %} {% if user.is_active %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 9e280f3e..5768ee01 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -51,13 +51,20 @@ urlpatterns = [ r"^password-reset/(?P[A-Za-z0-9]+)/?$", views.PasswordReset.as_view() ), # admin - re_path(r"^settings/site-settings", views.Site.as_view(), name="settings-site"), + re_path(r"^settings/site-settings/?$", views.Site.as_view(), name="settings-site"), re_path( - r"^settings/email-preview", + r"^settings/email-preview/?$", views.site.email_preview, name="settings-email-preview", ), - re_path(r"^settings/users", views.UserAdmin.as_view(), name="settings-users"), + re_path( + r"^settings/users/?$", views.UserAdminList.as_view(), name="settings-users" + ), + re_path( + r"^settings/users/(?P\d+)/?$", + views.UserAdmin.as_view(), + name="settings-user" + ), re_path( r"^settings/federation/?$", views.Federation.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 9f8463b4..7714bbda 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -37,5 +37,5 @@ from .status import CreateStatus, DeleteStatus, DeleteAndRedraft from .tag import Tag, AddTag, RemoveTag from .updates import get_notification_count, get_unread_status_count from .user import User, EditUser, Followers, Following -from .user_admin import UserAdmin +from .user_admin import UserAdmin, UserAdminList from .wellknown import * diff --git a/bookwyrm/views/user_admin.py b/bookwyrm/views/user_admin.py index 8b4704d0..895c1464 100644 --- a/bookwyrm/views/user_admin.py +++ b/bookwyrm/views/user_admin.py @@ -1,6 +1,7 @@ """ manage user """ from django.contrib.auth.decorators import login_required, permission_required from django.core.paginator import Paginator +from django.shortcuts import get_object_or_404 from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View @@ -15,7 +16,7 @@ from bookwyrm.settings import PAGE_LENGTH permission_required("bookwyrm.moderate_users", raise_exception=True), name="dispatch", ) -class UserAdmin(View): +class UserAdminList(View): """ admin view of users on this server """ def get(self, request): @@ -55,3 +56,16 @@ class UserAdmin(View): "server": server, } return TemplateResponse(request, "user_admin/user_admin.html", data) + +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.moderate_users", raise_exception=True), + name="dispatch", +) +class UserAdmin(View): + """ moderate an individual user """ + + def get(self, request, user): + """ user view """ + user = get_object_or_404(models.User, id=user) + return TemplateResponse(request, "user_admin/user.html", {"user": user})