111 lines
4.1 KiB
Python
111 lines
4.1 KiB
Python
"""
|
|
Migration script to add project settings fields to the projects table.
|
|
This adds support for upload location configuration and default task templates.
|
|
"""
|
|
|
|
import sqlite3
|
|
import json
|
|
|
|
def migrate_project_settings():
|
|
"""Add project settings fields to projects table"""
|
|
conn = sqlite3.connect('vfx_project_management.db')
|
|
cursor = conn.cursor()
|
|
|
|
try:
|
|
# Check if columns already exist
|
|
cursor.execute("PRAGMA table_info(projects)")
|
|
columns = [column[1] for column in cursor.fetchall()]
|
|
|
|
# Add upload_data_location column if it doesn't exist
|
|
if 'upload_data_location' not in columns:
|
|
print("Adding upload_data_location column...")
|
|
cursor.execute("""
|
|
ALTER TABLE projects
|
|
ADD COLUMN upload_data_location TEXT
|
|
""")
|
|
print("✓ Added upload_data_location column")
|
|
else:
|
|
print("✓ upload_data_location column already exists")
|
|
|
|
# Add asset_task_templates column if it doesn't exist
|
|
if 'asset_task_templates' not in columns:
|
|
print("Adding asset_task_templates column...")
|
|
cursor.execute("""
|
|
ALTER TABLE projects
|
|
ADD COLUMN asset_task_templates TEXT
|
|
""")
|
|
|
|
# Set default values for existing projects
|
|
default_asset_templates = json.dumps({
|
|
"characters": ["modeling", "surfacing", "rigging"],
|
|
"props": ["modeling", "surfacing"],
|
|
"sets": ["modeling", "surfacing"],
|
|
"vehicles": ["modeling", "surfacing", "rigging"]
|
|
})
|
|
cursor.execute("""
|
|
UPDATE projects
|
|
SET asset_task_templates = ?
|
|
WHERE asset_task_templates IS NULL
|
|
""", (default_asset_templates,))
|
|
print("✓ Added asset_task_templates column with default values")
|
|
else:
|
|
print("✓ asset_task_templates column already exists")
|
|
|
|
# Add shot_task_templates column if it doesn't exist
|
|
if 'shot_task_templates' not in columns:
|
|
print("Adding shot_task_templates column...")
|
|
cursor.execute("""
|
|
ALTER TABLE projects
|
|
ADD COLUMN shot_task_templates TEXT
|
|
""")
|
|
|
|
# Set default values for existing projects
|
|
default_shot_templates = json.dumps([
|
|
"layout", "animation", "simulation", "lighting", "compositing"
|
|
])
|
|
cursor.execute("""
|
|
UPDATE projects
|
|
SET shot_task_templates = ?
|
|
WHERE shot_task_templates IS NULL
|
|
""", (default_shot_templates,))
|
|
print("✓ Added shot_task_templates column with default values")
|
|
else:
|
|
print("✓ shot_task_templates column already exists")
|
|
|
|
# Add enabled_asset_tasks column if it doesn't exist
|
|
if 'enabled_asset_tasks' not in columns:
|
|
print("Adding enabled_asset_tasks column...")
|
|
cursor.execute("""
|
|
ALTER TABLE projects
|
|
ADD COLUMN enabled_asset_tasks TEXT
|
|
""")
|
|
print("✓ Added enabled_asset_tasks column")
|
|
else:
|
|
print("✓ enabled_asset_tasks column already exists")
|
|
|
|
# Add enabled_shot_tasks column if it doesn't exist
|
|
if 'enabled_shot_tasks' not in columns:
|
|
print("Adding enabled_shot_tasks column...")
|
|
cursor.execute("""
|
|
ALTER TABLE projects
|
|
ADD COLUMN enabled_shot_tasks TEXT
|
|
""")
|
|
print("✓ Added enabled_shot_tasks column")
|
|
else:
|
|
print("✓ enabled_shot_tasks column already exists")
|
|
|
|
conn.commit()
|
|
print("\n✅ Migration completed successfully!")
|
|
|
|
except Exception as e:
|
|
conn.rollback()
|
|
print(f"\n❌ Migration failed: {e}")
|
|
raise
|
|
finally:
|
|
conn.close()
|
|
|
|
if __name__ == "__main__":
|
|
print("Starting project settings migration...")
|
|
print("=" * 50)
|
|
migrate_project_settings()
|