# Generated by Django 5.2.10 on 2026-01-25 11:02 import django.db.models.deletion import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Organization', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('name', models.CharField(max_length=255, unique=True)), ('description', models.TextField(blank=True, default='')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_organizations', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Organization', 'verbose_name_plural': 'Organizations', }, ), migrations.CreateModel( name='OrganizationInvitation', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('token', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('expires_at', models.DateTimeField()), ('uses', models.IntegerField(default=0)), ('max_uses', models.IntegerField(default=1)), ('is_active', models.BooleanField(default=True)), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='created_invites', to=settings.AUTH_USER_MODEL)), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='invite_tokens', to='orgs.organization')), ], options={ 'verbose_name': 'Invite Token', 'verbose_name_plural': 'Invite Tokens', }, ), migrations.CreateModel( name='OrganizationMembership', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to='orgs.organization')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='organization_memberships', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Organization Membership', 'verbose_name_plural': 'Organization Memberships', 'unique_together': {('user', 'organization')}, }, ), migrations.AddField( model_name='organization', name='members', field=models.ManyToManyField(related_name='organizations', through='orgs.OrganizationMembership', to=settings.AUTH_USER_MODEL), ), migrations.CreateModel( name='Role', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('name', models.CharField(max_length=100, unique=True)), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('description', models.TextField(blank=True, default='')), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='roles', to='orgs.organization')), ], options={ 'verbose_name': 'Role', 'verbose_name_plural': 'Roles', }, ), migrations.CreateModel( name='RoleMembership', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to='orgs.role')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='role_memberships', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Role Membership', 'verbose_name_plural': 'Role Memberships', 'unique_together': {('user', 'role')}, }, ), migrations.AddField( model_name='role', name='members', field=models.ManyToManyField(related_name='roles', through='orgs.RoleMembership', to=settings.AUTH_USER_MODEL), ), migrations.CreateModel( name='TrainingFile', fields=[ ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('id', models.BigAutoField(primary_key=True, serialize=False)), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('file', models.FileField(upload_to='training_files/%Y/%m/%d/')), ('file_name', models.CharField(max_length=255)), ('file_size', models.IntegerField()), ('file_type', models.CharField(max_length=50)), ('description', models.TextField(blank=True, default='')), ('is_processed', models.BooleanField(default=False)), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='training_files', to='orgs.organization')), ('uploaded_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='uploaded_training_files', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Training File', 'verbose_name_plural': 'Training Files', 'ordering': ['-created_at'], }, ), ]