# Generated by Django 6.1 on 2026-08-11 23:29 import coulomb_social.apps.spaces.models import django.db.models.deletion import uuid from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("members", "0001_initial"), ] operations = [ migrations.CreateModel( name="Space", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ("tenant_id", models.CharField(db_index=True, max_length=64)), ( "slug", models.SlugField( max_length=80, validators=[ coulomb_social.apps.spaces.models.validate_space_slug ], ), ), ("title", models.CharField(max_length=255)), ("description", models.TextField(blank=True)), ( "forgejo_owner", models.CharField( blank=True, help_text="Forgejo org or user owning the repo (e.g. coulomb).", max_length=128, ), ), ( "forgejo_repo", models.CharField( blank=True, help_text="Repository name (e.g. space-my-space).", max_length=128, ), ), ( "default_branch", models.CharField(blank=True, default="main", max_length=128), ), ( "content_root", models.CharField( blank=True, default="pages", help_text="Path prefix inside the repo for markdown pages.", max_length=255, ), ), ("is_active", models.BooleanField(default=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name="spaces_created", to="members.member", ), ), ], options={ "ordering": ["title", "slug"], }, ), migrations.CreateModel( name="SpaceMembership", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "role", models.CharField( choices=[ ("owner", "Owner"), ("member", "Member"), ("viewer", "Viewer"), ], default="member", max_length=16, ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ( "member", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="space_memberships", to="members.member", ), ), ( "space", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="memberships", to="spaces.space", ), ), ], ), migrations.AddIndex( model_name="space", index=models.Index( fields=["tenant_id", "is_active"], name="spaces_spac_tenant__c3a447_idx" ), ), migrations.AddConstraint( model_name="space", constraint=models.UniqueConstraint( fields=("tenant_id", "slug"), name="spaces_space_tenant_slug_uniq" ), ), migrations.AddConstraint( model_name="spacemembership", constraint=models.UniqueConstraint( fields=("space", "member"), name="spaces_membership_space_member_uniq" ), ), ]