Init Repo
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user