From bedc9e0a88e6e8d36f096eb7c94e3768918bc5f2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 12 Mar 2021 10:22:03 -0800 Subject: [PATCH] Resolve and re-open reports --- .../templates/moderation/report_preview.html | 11 +++++++++- bookwyrm/tests/views/test_reports.py | 20 ++++++++++++++++++- bookwyrm/urls.py | 5 +++++ bookwyrm/views/__init__.py | 2 +- bookwyrm/views/reports.py | 15 ++++++++++++++ 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/moderation/report_preview.html b/bookwyrm/templates/moderation/report_preview.html index 9acc4f771..3888be27c 100644 --- a/bookwyrm/templates/moderation/report_preview.html +++ b/bookwyrm/templates/moderation/report_preview.html @@ -21,6 +21,15 @@ {{ report.created_date | naturaltime }} {% endblock %} diff --git a/bookwyrm/tests/views/test_reports.py b/bookwyrm/tests/views/test_reports.py index 70414dcb6..1a5bfd158 100644 --- a/bookwyrm/tests/views/test_reports.py +++ b/bookwyrm/tests/views/test_reports.py @@ -46,7 +46,7 @@ class ReportViews(TestCase): request = self.factory.get("") request.user = self.local_user request.user.is_superuser = True - report = models.Report.objects.create(reporter=self.local_user, user=self.rat) + models.Report.objects.create(reporter=self.local_user, user=self.rat) result = view(request) self.assertIsInstance(result, TemplateResponse) @@ -80,3 +80,21 @@ class ReportViews(TestCase): report = models.Report.objects.get() self.assertEqual(report.reporter, self.local_user) self.assertEqual(report.user, self.rat) + + def test_resolve_report(self): + """ toggle report resolution status """ + report = models.Report.objects.create(reporter=self.local_user, user=self.rat) + self.assertFalse(report.resolved) + request = self.factory.post("") + request.user = self.local_user + request.user.is_superuser = True + + # resolve + views.resolve_report(request, report.id) + report.refresh_from_db() + self.assertTrue(report.resolved) + + # un-resolve + views.resolve_report(request, report.id) + report.refresh_from_db() + self.assertFalse(report.resolved) diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 42b9803d3..551be1e30 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -62,6 +62,11 @@ urlpatterns = [ views.Report.as_view(), name="settings-report", ), + re_path( + r"^settings/reports/(?P\d+)/resolve/?$", + views.resolve_report, + name="settings-report-resolve", + ), re_path(r"^report/?$", views.make_report, name="report"), # landing pages re_path(r"^about/?$", views.About.as_view()), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index b433dca24..63ab98e54 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -20,7 +20,7 @@ from .notifications import Notifications from .outbox import Outbox from .reading import edit_readthrough, create_readthrough, delete_readthrough from .reading import start_reading, finish_reading, delete_progressupdate -from .reports import Report, Reports, make_report +from .reports import Report, Reports, make_report, resolve_report from .rss_feed import RssFeed from .password import PasswordResetRequest, PasswordReset, ChangePassword from .search import Search diff --git a/bookwyrm/views/reports.py b/bookwyrm/views/reports.py index 875470811..59b9b9e40 100644 --- a/bookwyrm/views/reports.py +++ b/bookwyrm/views/reports.py @@ -49,6 +49,21 @@ class Report(View): data = {"report": get_object_or_404(models.Report, id=report_id)} return TemplateResponse(request, "moderation/report.html", data) + def post(self, request, report_id): + """ update a report """ + + +@login_required +@permission_required("bookwyrm_moderate_post") +def resolve_report(_, report_id): + """ mark a report as (un)resolved """ + report = get_object_or_404(models.Report, id=report_id) + report.resolved = not report.resolved + report.save() + if not report.resolved: + return redirect("settings-report", report.id) + return redirect("settings-reports") + @login_required @require_POST