# Generated by Django 4.2.22 on 2025-09-12 08:45 import uuid import django from django.conf import settings from django.db import migrations, models def set_page_sort_order(apps, schema_editor): Page = apps.get_model("db", "Page") batch_size = 3000 sort_order = 100 # Get page IDs ordered by name using the historical model # This should include all pages regardless of soft-delete status page_ids = list(Page.objects.all().order_by("name").values_list("id", flat=True)) updated_pages = [] for page_id in page_ids: # Create page instance with minimal data updated_pages.append(Page(id=page_id, sort_order=sort_order)) sort_order += 100 # Bulk update when batch is full if len(updated_pages) >= batch_size: Page.objects.bulk_update( updated_pages, ["sort_order"], batch_size=batch_size ) updated_pages = [] # Update remaining pages if updated_pages: Page.objects.bulk_update(updated_pages, ["sort_order"], batch_size=batch_size) def reverse_set_page_sort_order(apps, schema_editor): Page = apps.get_model("db", "Page") Page.objects.update(sort_order=Page.DEFAULT_SORT_ORDER) class Migration(migrations.Migration): dependencies = [ ("db", "0105_alter_project_cycle_view_and_more"), ] operations = [ migrations.CreateModel( name="ProjectWebhook", fields=[ ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField( auto_now=True, verbose_name="Last Modified At" ), ), ( "deleted_at", models.DateTimeField( blank=True, null=True, verbose_name="Deleted At" ), ), ( "id", models.UUIDField( db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, ), ), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_created_by", to=settings.AUTH_USER_MODEL, verbose_name="Created By", ), ), ( "project", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="project_%(class)s", to="db.project", ), ), ( "updated_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="%(class)s_updated_by", to=settings.AUTH_USER_MODEL, verbose_name="Last Modified By", ), ), ( "webhook", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="project_webhooks", to="db.webhook", ), ), ( "workspace", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="workspace_%(class)s", to="db.workspace", ), ), ], options={ "verbose_name": "Project Webhook", "verbose_name_plural": "Project Webhooks", "db_table": "project_webhooks", "ordering": ("-created_at",), }, ), migrations.AddConstraint( model_name="projectwebhook", constraint=models.UniqueConstraint( condition=models.Q(("deleted_at__isnull", True)), fields=("project", "webhook"), name="project_webhook_unique_project_webhook_when_deleted_at_null", ), ), migrations.AlterUniqueTogether( name="projectwebhook", unique_together={("project", "webhook", "deleted_at")}, ), migrations.AlterField( model_name="issuerelation", name="relation_type", field=models.CharField( default="blocked_by", max_length=20, verbose_name="Issue Relation Type" ), ), migrations.RunPython( set_page_sort_order, reverse_code=reverse_set_page_sort_order ), ]