Adds user admin view

This commit is contained in:
Mouse Reeve 2021-04-19 15:40:51 -07:00
parent 0dd8b33991
commit 1542866b6c
6 changed files with 29 additions and 8 deletions

View file

@ -8,7 +8,7 @@
{% block panel %} {% block panel %}
<div class="block"> <div class="block">
<a href="{% url 'settings-reports' %}">{% trans "Back to reports" %}</a> <a href="{% url 'settings-users' %}">{% trans "Back to users" %}</a>
</div> </div>
{% include 'user_admin/user_info.html' with user=user %} {% include 'user_admin/user_info.html' with user=user %}

View file

@ -41,7 +41,7 @@
</tr> </tr>
{% for user in users %} {% for user in users %}
<tr> <tr>
<td>{{ user.username }}</td> <td><a href="{% url 'settings-user' user.id %}">{{ user.username }}</a></td>
<td>{{ user.created_date }}</td> <td>{{ user.created_date }}</td>
<td>{{ user.last_active_date }}</td> <td>{{ user.last_active_date }}</td>
<td>{% if user.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %}</td> <td>{% if user.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %}</td>

View file

@ -5,7 +5,7 @@
<p class="mr-1"> <p class="mr-1">
<a class="button" href="{% url 'direct-messages-user' user.username %}">{% trans "Send direct message" %}</a> <a class="button" href="{% url 'direct-messages-user' user.username %}">{% trans "Send direct message" %}</a>
</p> </p>
<form name="deactivate" method="post" action="{% url 'settings-report-deactivate' report.id %}"> <form name="deactivate" method="post" action="">
{% csrf_token %} {% csrf_token %}
{% if user.is_active %} {% if user.is_active %}
<button type="submit" class="button is-danger is-light">{% trans "Deactivate user" %}</button> <button type="submit" class="button is-danger is-light">{% trans "Deactivate user" %}</button>

View file

@ -51,13 +51,20 @@ urlpatterns = [
r"^password-reset/(?P<code>[A-Za-z0-9]+)/?$", views.PasswordReset.as_view() r"^password-reset/(?P<code>[A-Za-z0-9]+)/?$", views.PasswordReset.as_view()
), ),
# admin # 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( re_path(
r"^settings/email-preview", r"^settings/email-preview/?$",
views.site.email_preview, views.site.email_preview,
name="settings-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<user>\d+)/?$",
views.UserAdmin.as_view(),
name="settings-user"
),
re_path( re_path(
r"^settings/federation/?$", r"^settings/federation/?$",
views.Federation.as_view(), views.Federation.as_view(),

View file

@ -37,5 +37,5 @@ from .status import CreateStatus, DeleteStatus, DeleteAndRedraft
from .tag import Tag, AddTag, RemoveTag from .tag import Tag, AddTag, RemoveTag
from .updates import get_notification_count, get_unread_status_count from .updates import get_notification_count, get_unread_status_count
from .user import User, EditUser, Followers, Following from .user import User, EditUser, Followers, Following
from .user_admin import UserAdmin from .user_admin import UserAdmin, UserAdminList
from .wellknown import * from .wellknown import *

View file

@ -1,6 +1,7 @@
""" manage user """ """ manage user """
from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.decorators import login_required, permission_required
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.shortcuts import get_object_or_404
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.views import View from django.views import View
@ -15,7 +16,7 @@ from bookwyrm.settings import PAGE_LENGTH
permission_required("bookwyrm.moderate_users", raise_exception=True), permission_required("bookwyrm.moderate_users", raise_exception=True),
name="dispatch", name="dispatch",
) )
class UserAdmin(View): class UserAdminList(View):
""" admin view of users on this server """ """ admin view of users on this server """
def get(self, request): def get(self, request):
@ -55,3 +56,16 @@ class UserAdmin(View):
"server": server, "server": server,
} }
return TemplateResponse(request, "user_admin/user_admin.html", data) 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})