Spaces:
Configuration error
Configuration error
| #!/usr/bin/env python3 | |
| """ | |
| Migration script to add admin columns to users table | |
| Run this script to update the database schema for admin functionality | |
| """ | |
| import os | |
| import sys | |
| from dotenv import load_dotenv | |
| # Load environment variables | |
| load_dotenv() | |
| # Add current directory to Python path | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| from flask import Flask | |
| from flask_sqlalchemy import SQLAlchemy | |
| from models import db, User | |
| import uuid | |
| from sqlalchemy import text | |
| def migrate_database(): | |
| """Add is_admin and role columns to users table""" | |
| app = Flask(__name__) | |
| app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-production') | |
| app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('SQLALCHEMY_DATABASE_URI') | |
| app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False | |
| db.init_app(app) | |
| with app.app_context(): | |
| # Check if columns already exist | |
| inspector = db.inspect(db.engine) | |
| columns = [column['name'] for column in inspector.get_columns('users')] | |
| if 'is_admin' not in columns: | |
| print("Adding is_admin column...") | |
| db.session.execute(text('ALTER TABLE users ADD COLUMN is_admin BOOLEAN DEFAULT FALSE')) | |
| if 'role' not in columns: | |
| print("Adding role column...") | |
| db.session.execute(text('ALTER TABLE users ADD COLUMN role VARCHAR(50) DEFAULT \'User\'')) | |
| db.session.commit() | |
| print("Migration completed successfully!") | |
| # Update admin user if exists | |
| admin_email = os.environ.get('ADMIN_EMAIL') | |
| if admin_email: | |
| admin_user = User.query.filter_by(email=admin_email).first() | |
| if admin_user: | |
| admin_user.is_admin = True | |
| admin_user.role = 'Admin' | |
| db.session.commit() | |
| print(f"Updated {admin_email} as admin user") | |
| else: | |
| print(f"Admin user {admin_email} not found in database") | |
| if __name__ == '__main__': | |
| migrate_database() |