94 lines
3.1 KiB
Python
94 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Quick fix script for database path issue
|
|
Fixes the main.py file to use absolute paths
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
def fix_main_py():
|
|
"""Fix main.py to use absolute database path"""
|
|
|
|
main_file = 'main.py'
|
|
|
|
if not os.path.exists(main_file):
|
|
print("❌ main.py not found in current directory")
|
|
print(" Run this script from the urio folder")
|
|
sys.exit(1)
|
|
|
|
print("🔧 Fixing database path in main.py...")
|
|
|
|
# Read the file
|
|
with open(main_file, 'r') as f:
|
|
content = f.read()
|
|
|
|
# Check if already fixed
|
|
if 'BASE_DIR = os.path.abspath(os.path.dirname(__file__))' in content:
|
|
print("✅ main.py is already fixed!")
|
|
return
|
|
|
|
# Fix 1: Update Config class
|
|
old_config = '''class Config:
|
|
"""Flask configuration."""
|
|
SCHEDULER_API_ENABLED = True
|
|
SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "sqlite:///instance/transfer_stats.db")'''
|
|
|
|
new_config = '''class Config:
|
|
"""Flask configuration."""
|
|
SCHEDULER_API_ENABLED = True
|
|
# Use absolute path for database
|
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
INSTANCE_DIR = os.path.join(BASE_DIR, 'instance')
|
|
SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", f"sqlite:///{os.path.join(INSTANCE_DIR, 'transfer_stats.db')}")'''
|
|
|
|
if old_config in content:
|
|
content = content.replace(old_config, new_config)
|
|
print("✅ Updated Config class with absolute paths")
|
|
|
|
# Fix 2: Ensure instance folder creation happens before app init
|
|
old_init = '''# --- Flask App Initialization ---
|
|
|
|
app = Flask(__name__)
|
|
app.config.from_object(Config)
|
|
|
|
# Ensure instance folder exists
|
|
instance_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'instance')
|
|
if not os.path.exists(instance_path):
|
|
os.makedirs(instance_path)'''
|
|
|
|
new_init = '''# --- Flask App Initialization ---
|
|
|
|
# Ensure instance folder exists BEFORE creating the app
|
|
instance_path = Config.INSTANCE_DIR
|
|
if not os.path.exists(instance_path):
|
|
os.makedirs(instance_path)
|
|
logging.info(f"Created instance directory: {instance_path}")
|
|
|
|
app = Flask(__name__)
|
|
app.config.from_object(Config)'''
|
|
|
|
if old_init in content:
|
|
content = content.replace(old_init, new_init)
|
|
print("✅ Updated instance folder creation")
|
|
|
|
# Write the fixed content
|
|
with open(main_file, 'w') as f:
|
|
f.write(content)
|
|
|
|
print("\n✅ main.py has been fixed!")
|
|
print("\nYou can now run:")
|
|
print(" python3 main.py")
|
|
|
|
if __name__ == '__main__':
|
|
print("""
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ UrNetwork Stats Dashboard - Database Path Fix ║
|
|
╚════════════════════════════════════════════════════════════╝
|
|
""")
|
|
|
|
try:
|
|
fix_main_py()
|
|
except Exception as e:
|
|
print(f"\n❌ Error: {e}")
|
|
sys.exit(1)
|