From 8db72faf3ccb134bb08fdfa2c8c94b8faf825874 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 26 Aug 2025 15:26:07 +0100 Subject: [PATCH] Use random string ids for reports --- app/blueprints/report/__init__.py | 7 +++--- app/models/__init__.py | 2 +- migrations/versions/9689a71efe88_.py | 32 ++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 migrations/versions/9689a71efe88_.py diff --git a/app/blueprints/report/__init__.py b/app/blueprints/report/__init__.py index bbaa6982..e2765c51 100644 --- a/app/blueprints/report/__init__.py +++ b/app/blueprints/report/__init__.py @@ -25,7 +25,7 @@ from wtforms.validators import InputRequired, Length, Optional from app.models import User, UserRank, Report, db, AuditSeverity, Thread from app.tasks.webhooktasks import post_discord_webhook from app.utils import is_no, abs_url_samesite, normalize_line_endings, rank_required, add_audit_log, abs_url_for, \ - add_replies + add_replies, random_string bp = Blueprint("report", __name__) @@ -55,6 +55,7 @@ def report(): if form and form.validate_on_submit(): report = Report() + report.id = random_string(8) report.user = current_user if current_user.is_authenticated else None form.populate_obj(report) @@ -98,9 +99,9 @@ class ResolveForm(FlaskForm): invalid = SubmitField(lazy_gettext("Invalid / No action taken")) -@bp.route("/admin/reports//", methods=["GET", "POST"]) +@bp.route("/admin/reports//", methods=["GET", "POST"]) @rank_required(UserRank.MODERATOR) -def view(rid: int): +def view(rid: str): report = Report.query.get_or_404(rid) resolve_form = ResolveForm(request.form) diff --git a/app/models/__init__.py b/app/models/__init__.py index 5126dca2..0946ef63 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -131,7 +131,7 @@ class AuditLogEntry(db.Model): class Report(db.Model): - id = db.Column(db.Integer, primary_key=True) + id = db.Column(db.String(24), primary_key=True) created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) diff --git a/migrations/versions/9689a71efe88_.py b/migrations/versions/9689a71efe88_.py new file mode 100644 index 00000000..726ca8ea --- /dev/null +++ b/migrations/versions/9689a71efe88_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: 9689a71efe88 +Revises: 3052712496e4 +Create Date: 2025-08-26 14:24:02.045713 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '9689a71efe88' +down_revision = '3052712496e4' +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table('report', schema=None) as batch_op: + batch_op.alter_column('id', + existing_type=sa.INTEGER(), + type_=sa.String(length=24), + existing_nullable=False) + + +def downgrade(): + with op.batch_alter_table('report', schema=None) as batch_op: + batch_op.alter_column('id', + existing_type=sa.String(length=24), + type_=sa.INTEGER(), + existing_nullable=False)