diff --git a/app/blueprints/admin/audit.py b/app/blueprints/admin/audit.py index 6cc15744..81d81108 100644 --- a/app/blueprints/admin/audit.py +++ b/app/blueprints/admin/audit.py @@ -15,7 +15,11 @@ # along with this program. If not, see . from flask import render_template, request, abort +from flask_babel import lazy_gettext from flask_login import current_user, login_required +from flask_wtf import FlaskForm +from wtforms import StringField, SubmitField +from wtforms.validators import Optional, Length from app.models import db, AuditLogEntry, UserRank, User, Permission from app.utils import rank_required, get_int_or_abort @@ -23,6 +27,13 @@ from app.utils import rank_required, get_int_or_abort from . import bp +class AuditForm(FlaskForm): + username = StringField(lazy_gettext("Username"), [Optional(), Length(0, 25)]) + q = StringField(lazy_gettext("Query"), [Optional(), Length(0, 300)]) + url = StringField(lazy_gettext("URL"), [Optional(), Length(0, 300)]) + submit = SubmitField(lazy_gettext("Search"), name=None) + + @bp.route("/admin/audit/") @rank_required(UserRank.MODERATOR) def audit(): @@ -31,18 +42,22 @@ def audit(): query = AuditLogEntry.query.order_by(db.desc(AuditLogEntry.created_at)) - if "username" in request.args: - user = User.query.filter_by(username=request.args.get("username")).first() - if not user: - abort(404) + form = AuditForm(request.args) + username = form.username.data + q = form.q.data + url = form.url.data + if username: + user = User.query.filter_by(username=username).first_or_404() query = query.filter_by(causer=user) - if "q" in request.args: - q = request.args["q"] + if q: query = query.filter(AuditLogEntry.title.ilike(f"%{q}%")) + if url: + query = query.filter(AuditLogEntry.url.ilike(f"%{url}%")) + pagination = query.paginate(page=page, per_page=num) - return render_template("admin/audit.html", log=pagination.items, pagination=pagination) + return render_template("admin/audit.html", log=pagination.items, pagination=pagination, form=form) @bp.route("/admin/audit//") diff --git a/app/templates/admin/audit.html b/app/templates/admin/audit.html index 1f3dcc47..5f4b9bac 100644 --- a/app/templates/admin/audit.html +++ b/app/templates/admin/audit.html @@ -7,6 +7,14 @@ Audit Log {% block content %}

Audit Log

+ {% from "macros/forms.html" import render_field, render_submit_field %} +
+ {{ render_field(form.username) }} + {{ render_field(form.q) }} + {{ render_field(form.url) }} + {{ render_submit_field(form.submit) }} +
+ {% from "macros/pagination.html" import render_pagination %} {% from "macros/audit_log.html" import render_audit_log %} diff --git a/app/templates/report/view.html b/app/templates/report/view.html index 4a3b8579..d7035107 100644 --- a/app/templates/report/view.html +++ b/app/templates/report/view.html @@ -11,7 +11,9 @@ {% block content %} +{% set url = url_for("report.view", rid=report.id) %}

+ View audit log {{ _("Edit") }}