diff --git a/bookwyrm/templates/moderation/reports.html b/bookwyrm/templates/moderation/reports.html
index f486711f..72cadae5 100644
--- a/bookwyrm/templates/moderation/reports.html
+++ b/bookwyrm/templates/moderation/reports.html
@@ -8,6 +8,7 @@
{% trans "Reports" %}
{% endif %}
{% endblock %}
+
{% block header %}
{% if server %}
{% blocktrans with server_name=server.server_name %}Reports: {{ server_name }}{% endblocktrans %}
@@ -29,6 +30,8 @@
+{% include 'settings/user_admin_filters.html' %}
+
{% if not reports %}
{% trans "No reports found." %}
diff --git a/bookwyrm/templates/settings/federated_server.html b/bookwyrm/templates/settings/federated_server.html
index 14b78af0..386433f3 100644
--- a/bookwyrm/templates/settings/federated_server.html
+++ b/bookwyrm/templates/settings/federated_server.html
@@ -39,14 +39,14 @@
{% trans "Users:" %}
{{ users.count }}
- {% if server.user_set.count %}({% trans "View all" %}){% endif %}
+ {% if server.user_set.count %}({% trans "View all" %}){% endif %}
diff --git a/bookwyrm/templates/settings/server_filter.html b/bookwyrm/templates/settings/server_filter.html
new file mode 100644
index 00000000..fd8760cc
--- /dev/null
+++ b/bookwyrm/templates/settings/server_filter.html
@@ -0,0 +1,7 @@
+{% extends 'snippets/filters_panel/filter_field.html' %}
+{% load i18n %}
+
+{% block filter %}
+
+
+{% endblock %}
diff --git a/bookwyrm/templates/settings/user_admin.html b/bookwyrm/templates/settings/user_admin.html
index bb0534e0..a96d37f5 100644
--- a/bookwyrm/templates/settings/user_admin.html
+++ b/bookwyrm/templates/settings/user_admin.html
@@ -13,6 +13,8 @@
{% block panel %}
+{% include 'settings/user_admin_filters.html' %}
+
{% url 'settings-users' as url %}
diff --git a/bookwyrm/templates/settings/user_admin_filters.html b/bookwyrm/templates/settings/user_admin_filters.html
new file mode 100644
index 00000000..a7b5c8aa
--- /dev/null
+++ b/bookwyrm/templates/settings/user_admin_filters.html
@@ -0,0 +1,6 @@
+{% extends 'snippets/filters_panel/filters_panel.html' %}
+
+{% block filter_fields %}
+{% include 'settings/server_filter.html' %}
+{% include 'settings/username_filter.html' %}
+{% endblock %}
diff --git a/bookwyrm/templates/settings/username_filter.html b/bookwyrm/templates/settings/username_filter.html
new file mode 100644
index 00000000..d7da033a
--- /dev/null
+++ b/bookwyrm/templates/settings/username_filter.html
@@ -0,0 +1,8 @@
+{% extends 'snippets/filters_panel/filter_field.html' %}
+{% load i18n %}
+
+{% block filter %}
+
+
+{% endblock %}
+
diff --git a/bookwyrm/views/federation.py b/bookwyrm/views/federation.py
index 3803e92e..8712c463 100644
--- a/bookwyrm/views/federation.py
+++ b/bookwyrm/views/federation.py
@@ -29,7 +29,7 @@ class Federation(View):
except ValueError:
page = 1
- servers = models.FederatedServer.objects.all()
+ servers = models.FederatedServer.objects
sort = request.GET.get("sort")
sort_fields = ["created_date", "application_type", "server_name"]
diff --git a/bookwyrm/views/reports.py b/bookwyrm/views/reports.py
index cb1a62ff..b6c87c50 100644
--- a/bookwyrm/views/reports.py
+++ b/bookwyrm/views/reports.py
@@ -29,8 +29,10 @@ class Reports(View):
resolved = request.GET.get("resolved") == "true"
server = request.GET.get("server")
if server:
- server = get_object_or_404(models.FederatedServer, id=server)
- filters["user__federated_server"] = server
+ filters["user__federated_server__server_name"] = server
+ username = request.GET.get("username")
+ if username:
+ filters["user__username__icontains"] = username
filters["resolved"] = resolved
data = {
"resolved": resolved,
diff --git a/bookwyrm/views/user_admin.py b/bookwyrm/views/user_admin.py
index 1eb6089f..dd430f35 100644
--- a/bookwyrm/views/user_admin.py
+++ b/bookwyrm/views/user_admin.py
@@ -1,7 +1,6 @@
""" 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
@@ -29,10 +28,14 @@ class UserAdmin(View):
filters = {}
server = request.GET.get("server")
if server:
- server = get_object_or_404(models.FederatedServer, id=server)
+ server = models.FederatedServer.objects.filter(server_name=server).first()
filters["federated_server"] = server
+ filters["federated_server__isnull"] = False
+ username = request.GET.get("username")
+ if username:
+ filters["username__icontains"] = username
- users = models.User.objects.filter(**filters).all()
+ users = models.User.objects.filter(**filters)
sort = request.GET.get("sort", "-created_date")
sort_fields = [
@@ -46,5 +49,8 @@ class UserAdmin(View):
users = users.order_by(sort)
paginated = Paginator(users, PAGE_LENGTH)
- data = {"users": paginated.get_page(page), "sort": sort, "server": server}
+ data = {
+ "users": paginated.get_page(page),
+ "sort": sort, "server": server,
+ }
return TemplateResponse(request, "settings/user_admin.html", data)