diff --git a/bookwyrm/models/federated_server.py b/bookwyrm/models/federated_server.py index ea9920a0..7283cdd8 100644 --- a/bookwyrm/models/federated_server.py +++ b/bookwyrm/models/federated_server.py @@ -27,3 +27,14 @@ class FederatedServer(BookWyrmModel): """ block a server """ self.status = "blocked" self.save() + + # deactivate all associated users + self.user_set.update(is_active=False) + + def unblock(self): + """ unblock a server """ + self.status = "federated" + self.save() + + # TODO: only reactivate users as appropriate + self.user_set.update(is_active=True) diff --git a/bookwyrm/templates/settings/federated_server.html b/bookwyrm/templates/settings/federated_server.html index 37baa4dc..31e0ffb9 100644 --- a/bookwyrm/templates/settings/federated_server.html +++ b/bookwyrm/templates/settings/federated_server.html @@ -77,16 +77,20 @@

{% trans "Actions" %}

+ {% if server.status != 'blocked' %}
{% csrf_token %} - {% if server.status != 'blocked' %}

{% trans "All users from this instance will be deactivated." %}

- {% else %} +
+ {% else %} + {% comment %} +

{% trans "All users from this instance will be re-activated." %}

- {% endif %}
+ {% endcomment %} + {% endif %}
{% endblock %} diff --git a/bookwyrm/views/federation.py b/bookwyrm/views/federation.py index e4ade554..067fa0d7 100644 --- a/bookwyrm/views/federation.py +++ b/bookwyrm/views/federation.py @@ -87,15 +87,7 @@ class FederatedServer(View): return TemplateResponse(request, "settings/federated_server.html", data) def post(self, request, server): # pylint: disable=unused-argument - """ (un)block a server """ + """ block a server """ server = get_object_or_404(models.FederatedServer, id=server) - server.status = "blocked" if server.status == "federated" else "federated" - server.save() - - # TODO: there needs to be differentiation between types of deactivated users - if server.status == "blocked": - server.user_set.update(is_active=False) - else: - server.user_set.update(is_active=True) - + server.block() return redirect("settings-federated-server", server.id)