From 96ea2b4477a064acd815bc7521001b5d2ff4e35d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 28 Mar 2021 12:34:55 -0700 Subject: [PATCH] Adds detail page for federated servers --- .../templates/settings/federated_server.html | 68 +++++++++++++++++++ bookwyrm/templates/settings/federation.html | 3 +- bookwyrm/urls.py | 9 ++- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/federation.py | 26 +++++++ 5 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 bookwyrm/templates/settings/federated_server.html diff --git a/bookwyrm/templates/settings/federated_server.html b/bookwyrm/templates/settings/federated_server.html new file mode 100644 index 00000000..dfeb6b3a --- /dev/null +++ b/bookwyrm/templates/settings/federated_server.html @@ -0,0 +1,68 @@ +{% extends 'settings/admin_layout.html' %} +{% block title %}{{ server.server_name }}{% endblock %} +{% load i18n %} + +{% block header %} +{{ server.server_name }} +{% trans "Back to server list" %} +{% endblock %} + +{% block panel %} +
+

{% trans "Details" %}

+
+
+
{% trans "Software:" %}
+
{{ server.application_type }}
+
+
+
{% trans "Version:" %}
+
{{ server.application_version }}
+
+
+
{% trans "Status:" %}
+
Federated
+
+
+
+ +
+

{% trans "Activity" %}

+
+
+
{% trans "Users:" %}
+
+ {{ users.count }} + {# {% if server.user_set.count %}({% trans "View all users" %}){% endif %} #} +
+
+
+
{% trans "Reports:" %}
+
+ {{ reports.count }} + {# {% if server.user_set.count %}({% trans "View all users" %}){% endif %} #} +
+
+
+
{% trans "Followed by us:" %}
+
+ {{ followed_by_us.count }} +
+
+
+
{% trans "Followed by them:" %}
+
+ {{ followed_by_them.count }} +
+
+
+
{% trans "Blocked by us:" %}
+
+ {{ blocked_by_us.count }} +
+
+
+
+ +{% endblock %} + diff --git a/bookwyrm/templates/settings/federation.html b/bookwyrm/templates/settings/federation.html index c08ba66c..8c87eda2 100644 --- a/bookwyrm/templates/settings/federation.html +++ b/bookwyrm/templates/settings/federation.html @@ -1,5 +1,6 @@ {% extends 'settings/admin_layout.html' %} {% load i18n %} +{% block title %}{% trans "Federated Servers" %}{% endblock %} {% block header %}{% trans "Federated Servers" %}{% endblock %} @@ -13,7 +14,7 @@ {% for server in servers %} - {{ server.server_name }} + {{ server.server_name }} {{ server.application_type }} ({{ server.application_version }}) {{ server.status }} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 44db6892..a0d8d007 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -55,7 +55,14 @@ urlpatterns = [ name="settings-email-preview", ), re_path( - r"^settings/federation", views.Federation.as_view(), name="settings-federation" + r"^settings/federation/?$", + views.Federation.as_view(), + name="settings-federation", + ), + re_path( + r"^settings/federation/(?P\d+)/?$", + views.FederatedServer.as_view(), + name="settings-federated-server", ), re_path( r"^settings/invites/?$", views.ManageInvites.as_view(), name="settings-invites" diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 3439304f..94ac8f13 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -6,7 +6,7 @@ from .books import Book, EditBook, ConfirmEditBook, Editions from .books import upload_cover, add_description, switch_edition, resolve_book from .directory import Directory from .error import not_found_page, server_error_page -from .federation import Federation +from .federation import Federation, FederatedServer from .feed import DirectMessage, Feed, Replies, Status from .follow import follow, unfollow from .follow import accept_follow_request, delete_follow_request diff --git a/bookwyrm/views/federation.py b/bookwyrm/views/federation.py index e9c0466e..c7d7a2e7 100644 --- a/bookwyrm/views/federation.py +++ b/bookwyrm/views/federation.py @@ -1,5 +1,6 @@ """ manage federated servers """ from django.contrib.auth.decorators import login_required, permission_required +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 @@ -21,3 +22,28 @@ class Federation(View): servers = models.FederatedServer.objects.all() data = {"servers": servers} return TemplateResponse(request, "settings/federation.html", data) + + +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.control_federation", raise_exception=True), + name="dispatch", +) +class FederatedServer(View): + """ views for handling a specific federated server """ + + def get(self, request, server): + """ load a server """ + server = get_object_or_404(models.FederatedServer, id=server) + users = server.user_set + data = { + "server": server, + "users": users, + "reports": models.Report.objects.filter(user__in=users.all()), + "followed_by_us": users.filter(followers__local=True), + "followed_by_them": users.filter(following__local=True), + "blocked_by_us": models.UserBlocks.objects.filter( + user_subject__in=users.all() + ), + } + return TemplateResponse(request, "settings/federated_server.html", data)