Option to deactivate reported users

This commit is contained in:
Mouse Reeve 2021-03-12 11:13:53 -08:00
parent 422cd2da73
commit 677a49fee3
6 changed files with 52 additions and 6 deletions

View file

@ -15,9 +15,18 @@
<div class="block content"> <div class="block content">
<h3>{% trans "Actions" %}</h3> <h3>{% trans "Actions" %}</h3>
<div class="field is-grouped"> <div class="is-flex">
<a class="button" href="{% url 'direct-messages-user' report.user.username %}">{% trans "Send direct message" %}</a> <p class="mr-1">
<button class="button">Suspend</button> <a class="button" href="{% url 'direct-messages-user' report.user.username %}">{% trans "Send direct message" %}</a>
</p>
<form name="deactivate" method="post" action="{% url 'settings-report-deactivate' report.id %}">
{% csrf_token %}
{% if report.user.is_active %}
<button type="submit" class="button is-danger is-light">{% trans "Deactivate user" %}</button>
{% else %}
<button class="button">{% trans "Reactivate user" %}</button>
{% endif %}
</form>
</div> </div>
{% for comment in report.reportcomment_set.all %} {% for comment in report.reportcomment_set.all %}

View file

@ -8,8 +8,11 @@
{% endblock %} {% endblock %}
{% block card-content %} {% block card-content %}
<div class="block"> <div class="block content">
{% if report.note %}{{ report.note }}{% else %}<em>{% trans "No notes provided" %}</em>{% endif %} <p>
{% if report.note %}{{ report.note }}{% else %}<em>{% trans "No notes provided" %}</em>{% endif %}
</p>
<p><a href="{{ report.user.local_path }}">{% trans "View user profile" %}</a></p>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -98,3 +98,22 @@ class ReportViews(TestCase):
views.resolve_report(request, report.id) views.resolve_report(request, report.id)
report.refresh_from_db() report.refresh_from_db()
self.assertFalse(report.resolved) self.assertFalse(report.resolved)
def test_deactivate_user(self):
""" toggle whether a user is able to log in """
self.assertTrue(self.rat.is_active)
report = models.Report.objects.create(reporter=self.local_user, user=self.rat)
request = self.factory.post("")
request.user = self.local_user
request.user.is_superuser = True
# resolve
views.deactivate_user(request, report.id)
self.rat.refresh_from_db()
self.assertFalse(self.rat.is_active)
# un-resolve
views.deactivate_user(request, report.id)
self.rat.refresh_from_db()
self.assertTrue(self.rat.is_active)

View file

@ -62,6 +62,11 @@ urlpatterns = [
views.Report.as_view(), views.Report.as_view(),
name="settings-report", name="settings-report",
), ),
re_path(
r"^settings/reports/(?P<report_id>\d+)/deactivate/?$",
views.deactivate_user,
name="settings-report-deactivate",
),
re_path( re_path(
r"^settings/reports/(?P<report_id>\d+)/resolve/?$", r"^settings/reports/(?P<report_id>\d+)/resolve/?$",
views.resolve_report, views.resolve_report,

View file

@ -20,7 +20,7 @@ from .notifications import Notifications
from .outbox import Outbox from .outbox import Outbox
from .reading import edit_readthrough, create_readthrough, delete_readthrough from .reading import edit_readthrough, create_readthrough, delete_readthrough
from .reading import start_reading, finish_reading, delete_progressupdate from .reading import start_reading, finish_reading, delete_progressupdate
from .reports import Report, Reports, make_report, resolve_report from .reports import Report, Reports, make_report, resolve_report, deactivate_user
from .rss_feed import RssFeed from .rss_feed import RssFeed
from .password import PasswordResetRequest, PasswordReset, ChangePassword from .password import PasswordResetRequest, PasswordReset, ChangePassword
from .search import Search from .search import Search

View file

@ -50,6 +50,16 @@ class Report(View):
return TemplateResponse(request, "moderation/report.html", data) return TemplateResponse(request, "moderation/report.html", data)
@login_required
@permission_required("bookwyrm_moderate_user")
def deactivate_user(_, report_id):
""" mark an account as inactive """
report = get_object_or_404(models.Report, id=report_id)
report.user.is_active = not report.user.is_active
report.user.save()
return redirect("settings-report", report.id)
@login_required @login_required
@permission_required("bookwyrm_moderate_post") @permission_required("bookwyrm_moderate_post")
def resolve_report(_, report_id): def resolve_report(_, report_id):