init CTFd source
Some checks are pending
Linting / Linting (3.11) (push) Waiting to run
Mirror core-theme / mirror (push) Waiting to run

This commit is contained in:
gkr
2025-12-25 09:39:21 +08:00
commit 2e06f92c64
1047 changed files with 150349 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
"""Convert rating values to votes
Revision ID: 24ad6790bc3c
Revises: 55623b100da8
Create Date: 2025-09-03 05:19:54.151054
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "24ad6790bc3c"
down_revision = "55623b100da8"
branch_labels = None
depends_on = None
def upgrade():
# Convert 5-star ratings to upvote/downvote system
# Values 1-2 become -1 (downvote)
# Values 3-5 become 1 (upvote)
connection = op.get_bind()
# Update ratings with values 1 or 2 to -1 (downvote)
connection.execute(sa.text("UPDATE ratings SET value = -1 WHERE value IN (1, 2)"))
# Update ratings with values 3, 4, or 5 to 1 (upvote)
connection.execute(sa.text("UPDATE ratings SET value = 1 WHERE value IN (3, 4, 5)"))
def downgrade():
# This downgrade is not reversible since we lose the original 5-star granularity
# We can only convert back to a simplified 5-star system
# -1 (downvote) becomes 1 (1 star)
# 1 (upvote) becomes 5 (5 stars)
connection = op.get_bind()
# Convert downvotes (-1) to 1-star ratings
connection.execute(sa.text("UPDATE ratings SET value = 1 WHERE value = -1"))
# Convert upvotes (1) to 5-star ratings
connection.execute(sa.text("UPDATE ratings SET value = 5 WHERE value = 1"))