Initial release: DictIA v0.8.14-alpha (fork de Speakr, AGPL-3.0)

This commit is contained in:
InnovA AI
2026-03-16 21:47:37 +00:00
commit 42772a31ed
365 changed files with 103572 additions and 0 deletions

137
scripts/migrate_team_to_group.py Executable file
View File

@@ -0,0 +1,137 @@
#!/usr/bin/env python3
"""
Migration script to rename team tables to group tables.
This handles the refactoring from team-based to group-based terminology.
"""
import sys
import os
# Add the parent directory to the path to import app modules
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from src.app import app, db
from sqlalchemy import text
def migrate_tables():
"""Copy data from team tables to group tables and remove old tables."""
with app.app_context():
try:
# Check if old tables exist
inspector = db.inspect(db.engine)
existing_tables = inspector.get_table_names()
print("Existing tables:", existing_tables)
# Check if we need to migrate data
if 'team' in existing_tables and 'group' in existing_tables:
# Both tables exist - need to copy data
print("\nBoth 'team' and 'group' tables exist. Copying data...")
# Check if there's data in the old table
result = db.session.execute(text('SELECT COUNT(*) FROM team'))
old_count = result.scalar()
print(f"Found {old_count} records in 'team' table")
if old_count > 0:
# Copy data from team to group
print("Copying data from 'team' to 'group'...")
db.session.execute(text(
'INSERT INTO "group" (id, name, description, created_at) '
'SELECT id, name, description, created_at FROM team'
))
db.session.commit()
print(f"✓ Copied {old_count} records to 'group' table")
# Drop the old team table
print("Dropping old 'team' table...")
db.session.execute(text('DROP TABLE team'))
db.session.commit()
print("✓ Dropped old 'team' table")
elif 'team' in existing_tables and 'group' not in existing_tables:
# Only old table exists - rename it
print("\nRenaming 'team' table to 'group'...")
db.session.execute(text('ALTER TABLE team RENAME TO "group"'))
db.session.commit()
print("✓ Renamed 'team' to 'group'")
else:
print("\n'team' table not found or already migrated")
# Migrate team_membership
if 'team_membership' in existing_tables and 'group_membership' in existing_tables:
# Both tables exist - need to copy data
print("\nBoth 'team_membership' and 'group_membership' tables exist. Copying data...")
# Check if there's data in the old table
result = db.session.execute(text('SELECT COUNT(*) FROM team_membership'))
old_count = result.scalar()
print(f"Found {old_count} records in 'team_membership' table")
if old_count > 0:
# Copy data from team_membership to group_membership
print("Copying data from 'team_membership' to 'group_membership'...")
db.session.execute(text(
'INSERT INTO group_membership (id, user_id, group_id, role, joined_at) '
'SELECT id, user_id, team_id, role, joined_at FROM team_membership'
))
db.session.commit()
print(f"✓ Copied {old_count} records to 'group_membership' table")
# Drop the old team_membership table
print("Dropping old 'team_membership' table...")
db.session.execute(text('DROP TABLE team_membership'))
db.session.commit()
print("✓ Dropped old 'team_membership' table")
elif 'team_membership' in existing_tables and 'group_membership' not in existing_tables:
# Only old table exists - rename it
print("\nRenaming 'team_membership' table to 'group_membership'...")
db.session.execute(text('ALTER TABLE team_membership RENAME TO group_membership'))
db.session.commit()
print("✓ Renamed 'team_membership' to 'group_membership'")
else:
print("\n'team_membership' table not found or already migrated")
# Migrate team_id to group_id in tags table
print("\nMigrating tag associations from team_id to group_id...")
result = db.session.execute(text(
'UPDATE tag SET group_id = team_id WHERE team_id IS NOT NULL AND group_id IS NULL'
))
db.session.commit()
print(f"✓ Migrated {result.rowcount} tag associations")
# Migrate share_with_team_lead to share_with_group_lead in tags
result = db.session.execute(text(
'UPDATE tag SET share_with_group_lead = share_with_team_lead WHERE share_with_team_lead IS NOT NULL AND share_with_group_lead IS NULL'
))
db.session.commit()
print(f"✓ Migrated {result.rowcount} share_with_lead settings")
print("\n✅ Migration completed successfully!")
print("\nPlease restart the application for changes to take full effect.")
except Exception as e:
print(f"\n❌ Error during migration: {e}")
db.session.rollback()
sys.exit(1)
if __name__ == '__main__':
print("=" * 60)
print("Team to Group Migration Script")
print("=" * 60)
print("\nThis script will rename database tables:")
print(" - 'team''group'")
print(" - 'team_membership''group_membership'")
# Check for --yes flag to skip confirmation
if '--yes' in sys.argv or '-y' in sys.argv:
print("\nAuto-confirming migration (--yes flag detected)...\n")
else:
print("\nPress Ctrl+C to cancel, or Enter to continue...")
try:
input()
except KeyboardInterrupt:
print("\n\nMigration cancelled.")
sys.exit(0)
migrate_tables()