132 lines
4.6 KiB
Python
132 lines
4.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Create a fresh database with proper schema and test data.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
def create_fresh_database():
|
|
"""Create a fresh database with proper schema."""
|
|
|
|
print("Creating Fresh Database")
|
|
print("=" * 30)
|
|
|
|
# Use a new database name
|
|
new_db_name = "vfx_project_fresh.db"
|
|
|
|
# Remove if exists
|
|
if os.path.exists(new_db_name):
|
|
os.remove(new_db_name)
|
|
print(f"Removed existing {new_db_name}")
|
|
|
|
# Update database configuration temporarily
|
|
os.environ['DATABASE_URL'] = f"sqlite:///./{new_db_name}"
|
|
|
|
try:
|
|
# Import after setting environment variable
|
|
from database import engine, Base
|
|
import models # This imports all models
|
|
|
|
# Create all tables
|
|
Base.metadata.create_all(bind=engine)
|
|
print("✅ Created database schema")
|
|
|
|
# Create admin user
|
|
from database import get_db
|
|
from models.user import User, UserRole
|
|
from utils.auth import get_password_hash
|
|
|
|
db = next(get_db())
|
|
|
|
# Check if admin exists
|
|
admin_user = db.query(User).filter(User.email == "admin@vfx.com").first()
|
|
if not admin_user:
|
|
admin_user = User(
|
|
email="admin@vfx.com",
|
|
password_hash=get_password_hash("admin123"),
|
|
first_name="Admin",
|
|
last_name="User",
|
|
role=UserRole.COORDINATOR,
|
|
is_admin=True,
|
|
is_approved=True
|
|
)
|
|
db.add(admin_user)
|
|
db.commit()
|
|
print("✅ Created admin user")
|
|
else:
|
|
print("✅ Admin user already exists")
|
|
|
|
# Create test projects
|
|
from models.project import Project, ProjectStatus, ProjectType
|
|
import json
|
|
from datetime import datetime
|
|
|
|
# Project 1
|
|
project1 = Project(
|
|
name="Test VFX Project",
|
|
code_name="TEST_VFX_001",
|
|
client_name="Test Studio",
|
|
project_type=ProjectType.CINEMA,
|
|
description="Test project for VFX management system",
|
|
status=ProjectStatus.PLANNING,
|
|
frame_rate=24.0,
|
|
data_drive_path="/projects/test_vfx/data",
|
|
publish_storage_path="/projects/test_vfx/publish",
|
|
delivery_image_resolution="1920x1080",
|
|
delivery_movie_specs_by_department=json.dumps({
|
|
"layout": {"resolution": "1920x1080", "format": "mov", "codec": "h264", "quality": "medium"},
|
|
"animation": {"resolution": "1920x1080", "format": "mov", "codec": "h264", "quality": "high"}
|
|
})
|
|
)
|
|
|
|
# Project 2
|
|
project2 = Project(
|
|
name="Dragon Quest: The Awakening",
|
|
code_name="DRAGON_QUEST_2024",
|
|
client_name="Epic Fantasy Studios",
|
|
project_type=ProjectType.CINEMA,
|
|
description="A high-budget fantasy film featuring dragons and magic",
|
|
status=ProjectStatus.IN_PROGRESS,
|
|
frame_rate=24.0,
|
|
data_drive_path="/projects/dragon_quest_2024/data",
|
|
publish_storage_path="/projects/dragon_quest_2024/publish",
|
|
delivery_image_resolution="4096x2160",
|
|
delivery_movie_specs_by_department=json.dumps({
|
|
"layout": {"resolution": "1920x1080", "format": "mov", "codec": "h264", "quality": "medium"},
|
|
"animation": {"resolution": "2048x1080", "format": "mov", "codec": "h264", "quality": "high"},
|
|
"lighting": {"resolution": "4096x2160", "format": "exr", "codec": None, "quality": "high"},
|
|
"composite": {"resolution": "4096x2160", "format": "mov", "codec": "prores", "quality": "high"}
|
|
})
|
|
)
|
|
|
|
db.add(project1)
|
|
db.add(project2)
|
|
db.commit()
|
|
print("✅ Created test projects")
|
|
|
|
# Rename to replace old database
|
|
db.close()
|
|
|
|
# Now replace the old database
|
|
old_db = "vfx_project_management.db"
|
|
if os.path.exists(old_db):
|
|
os.remove(old_db)
|
|
|
|
os.rename(new_db_name, old_db)
|
|
print(f"✅ Replaced old database with fresh one")
|
|
|
|
print("\n🎉 Fresh database created successfully!")
|
|
print("Admin credentials: admin@vfx.com / admin123")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
create_fresh_database() |