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()), ('used_at', models.DateTimeField(blank=True, null=True)), ('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')), ('used_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='used_invites', to=settings.AUTH_USER_MODEL)), ], 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)), ('is_manager', models.BooleanField(default=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)), ('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=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('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), ), ]