gcp-hockey-results/motm_app/add_voting_deadline.py

81 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Database migration script to add voting_deadline column to motmadminsettings table.
This script adds the voting_deadline column to support countdown timers for MOTM voting.
It's safe to run multiple times - it will skip if the column already exists.
"""
from db_config import db_config
from sqlalchemy import text
import sys
def add_voting_deadline_column():
"""Add voting_deadline column to motmadminsettings or admin_settings table."""
try:
# Get database connection
engine = db_config.engine
# Try both possible table names
table_names = ['motmadminsettings', 'admin_settings']
for table_name in table_names:
try:
with engine.connect() as connection:
# Check if table exists and column already exists
try:
result = connection.execute(text(f"SELECT votingdeadline FROM {table_name} LIMIT 1"))
print(f"✓ Column 'votingdeadline' already exists in {table_name} table")
return True
except Exception as e:
# Column or table doesn't exist
pass
# Try to add the column
try:
# PostgreSQL syntax
connection.execute(text(f"ALTER TABLE {table_name} ADD COLUMN votingdeadline TIMESTAMP"))
connection.commit()
print(f"✓ Successfully added 'votingdeadline' column to {table_name} table (PostgreSQL)")
return True
except Exception as e:
# Try SQLite syntax
try:
connection.rollback()
connection.execute(text(f"ALTER TABLE {table_name} ADD COLUMN votingdeadline DATETIME"))
connection.commit()
print(f"✓ Successfully added 'votingdeadline' column to {table_name} table (SQLite)")
return True
except Exception as e2:
# This table doesn't exist, try next one
continue
except Exception as e:
continue
print(f"✗ Error: Could not find admin settings table (tried: {', '.join(table_names)})")
print(" The database may not be initialized yet. Please run database setup first.")
return False
except Exception as e:
print(f"✗ Error connecting to database: {str(e)}")
return False
if __name__ == "__main__":
print("=" * 60)
print("MOTM Voting Deadline - Database Migration")
print("=" * 60)
print("\nThis script will add the 'votingdeadline' column to the")
print("motmadminsettings table to support countdown timers.\n")
result = add_voting_deadline_column()
if result:
print("\n✓ Migration completed successfully!")
print("\nYou can now set voting deadlines in the admin interface.")
sys.exit(0)
else:
print("\n✗ Migration failed!")
print("Please check the error messages above.")
sys.exit(1)