Resolve and re-open reports
This commit is contained in:
parent
4583662f51
commit
bedc9e0a88
|
@ -21,6 +21,15 @@
|
||||||
{{ report.created_date | naturaltime }}
|
{{ report.created_date | naturaltime }}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer-item">
|
<div class="card-footer-item">
|
||||||
<button class="button">{% trans "Mark as resolved" %}</button>
|
<form name="resolve" method="post" action="{% url 'settings-report-resolve' report.id %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<button class="button" type="submit">
|
||||||
|
{% if report.resolved %}
|
||||||
|
{% trans "Re-open" %}
|
||||||
|
{% else %}
|
||||||
|
{% trans "Resolve" %}
|
||||||
|
{% endif %}
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -46,7 +46,7 @@ class ReportViews(TestCase):
|
||||||
request = self.factory.get("")
|
request = self.factory.get("")
|
||||||
request.user = self.local_user
|
request.user = self.local_user
|
||||||
request.user.is_superuser = True
|
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)
|
result = view(request)
|
||||||
self.assertIsInstance(result, TemplateResponse)
|
self.assertIsInstance(result, TemplateResponse)
|
||||||
|
@ -80,3 +80,21 @@ class ReportViews(TestCase):
|
||||||
report = models.Report.objects.get()
|
report = models.Report.objects.get()
|
||||||
self.assertEqual(report.reporter, self.local_user)
|
self.assertEqual(report.reporter, self.local_user)
|
||||||
self.assertEqual(report.user, self.rat)
|
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)
|
||||||
|
|
|
@ -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+)/resolve/?$",
|
||||||
|
views.resolve_report,
|
||||||
|
name="settings-report-resolve",
|
||||||
|
),
|
||||||
re_path(r"^report/?$", views.make_report, name="report"),
|
re_path(r"^report/?$", views.make_report, name="report"),
|
||||||
# landing pages
|
# landing pages
|
||||||
re_path(r"^about/?$", views.About.as_view()),
|
re_path(r"^about/?$", views.About.as_view()),
|
||||||
|
|
|
@ -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
|
from .reports import Report, Reports, make_report, resolve_report
|
||||||
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
|
||||||
|
|
|
@ -49,6 +49,21 @@ class Report(View):
|
||||||
data = {"report": get_object_or_404(models.Report, id=report_id)}
|
data = {"report": get_object_or_404(models.Report, id=report_id)}
|
||||||
return TemplateResponse(request, "moderation/report.html", data)
|
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
|
@login_required
|
||||||
@require_POST
|
@require_POST
|
||||||
|
|
Loading…
Reference in New Issue