Add ability to reopen reports

This commit is contained in:
rubenwardy
2025-08-27 14:22:18 +01:00
parent 9ec215c3d4
commit 6bf94e558a
2 changed files with 35 additions and 29 deletions

View File

@@ -113,36 +113,40 @@ def list_all():
return render_template("report/list.html", reports=reports)
class ResolveForm(FlaskForm):
completed = SubmitField(lazy_gettext("Completed / resolved"))
removed = SubmitField(lazy_gettext("Content removed"))
invalid = SubmitField(lazy_gettext("Invalid / No action taken"))
@bp.route("/admin/reports/<rid>/", methods=["GET", "POST"])
def view(rid: str):
report = Report.query.get_or_404(rid)
if not report.check_perm(current_user, Permission.SEE_REPORT):
abort(404)
resolve_form = ResolveForm(request.form)
if resolve_form.validate_on_submit():
if resolve_form.completed.data:
outcome = "completed"
elif resolve_form.removed.data:
outcome = "content removed"
elif resolve_form.invalid.data:
outcome = "invalid"
if request.method == "POST":
if report.is_resolved:
if "reopen" in request.form:
report.is_resolved = False
url = url_for("report.view", rid=report.id)
add_audit_log(AuditSeverity.MODERATION, current_user, f"Reopened report \"{report.title}\"", url)
if report.thread:
add_replies(report.thread, current_user, f"Reopened report", is_status_update=True)
db.session.commit()
else:
abort(400)
if "completed" in request.form:
outcome = "completed"
elif "removed" in request.form:
outcome = "content removed"
elif "invalid" in request.form:
outcome = "invalid"
else:
abort(400)
report.is_resolved = True
url = url_for("report.view", rid=report.id)
add_audit_log(AuditSeverity.MODERATION, current_user, f"Resolved report as {outcome} \"{report.title}\"", url)
report.is_resolved = True
url = url_for("report.view", rid=report.id)
add_audit_log(AuditSeverity.MODERATION, current_user, f"Resolved report as {outcome} \"{report.title}\"", url)
if report.thread:
add_replies(report.thread, current_user, f"Report closed as {outcome}", is_status_update=True)
if report.thread:
add_replies(report.thread, current_user, f"Report closed as {outcome}", is_status_update=True)
db.session.commit()
db.session.commit()
return render_template("report/view.html", report=report, resolve_form=resolve_form)
return render_template("report/view.html", report=report)

View File

@@ -71,17 +71,19 @@
</aside>
</article>
{% if not report.is_resolved %}
<article>
<h2>Close report</h2>
<h2>{% if report.is_resolved %}Reopen report{% else %}Close report{% endif %}</h2>
<form method="POST" action="">
{{ resolve_form.hidden_tag() }}
{{ render_submit_field(resolve_form.completed) }}
{{ render_submit_field(resolve_form.removed) }}
{{ render_submit_field(resolve_form.invalid) }}
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
{% if report.is_resolved %}
<button type="submit" class="btn bg-primary" name="reopen" value="true">{{ _("Reopen") }}</button>
{% else %}
<button type="submit" class="btn bg-primary" name="completed" value="true">{{ _("Completed / resolved") }}</button>
<button type="submit" class="btn bg-primary" name="removed" value="true">{{ _("Content removed") }}</button>
<button type="submit" class="btn bg-primary" name="invalid" value="true">{{ _("Invalid") }}</button>
{% endif %}
</form>
</article>
{% endif %}
<article>
<h2>Thread</h2>