authentik.tasks.migrations.0004_remove_task_notify_enqueueing_and_more
1# Generated by Django 5.2.7 on 2025-10-08 17:03 2 3from django.apps.registry import Apps 4from django.db.backends.base.schema import BaseDatabaseSchemaEditor 5import pgtrigger.compiler 6import pgtrigger.migrations 7from django.db import migrations, models 8 9 10def remove_non_default_messages(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): 11 Task = apps.get_model("authentik_tasks", "task") 12 13 db_alias = schema_editor.connection.alias 14 Task.objects.using(db_alias).exclude(queue_name="default").delete() 15 16 17class Migration(migrations.Migration): 18 19 dependencies = [ 20 ("authentik_tasks", "0003_task_eta_task_retries"), 21 ("authentik_tenants", "0006_tenant_flags"), 22 ("contenttypes", "0002_remove_content_type_name"), 23 ] 24 25 operations = [ 26 pgtrigger.migrations.RemoveTrigger( 27 model_name="task", 28 name="notify_enqueueing", 29 ), 30 migrations.RemoveIndex( 31 model_name="task", 32 name="authentik_t_state_bb4a31_idx", 33 ), 34 migrations.AddIndex( 35 model_name="task", 36 index=models.Index(fields=["queue_name"], name="authentik_t_queue_n_7b09fb_idx"), 37 ), 38 migrations.AddIndex( 39 model_name="task", 40 index=models.Index( 41 fields=["queue_name", "state"], name="authentik_t_queue_n_7ff882_idx" 42 ), 43 ), 44 migrations.AddIndex( 45 model_name="task", 46 index=models.Index( 47 fields=["message_id", "queue_name", "state", "eta"], 48 name="authentik_t_message_8ee59b_idx", 49 ), 50 ), 51 migrations.AddIndex( 52 model_name="task", 53 index=models.Index( 54 fields=["message_id", "state", "eta"], name="authentik_t_message_74b8d7_idx" 55 ), 56 ), 57 migrations.AddIndex( 58 model_name="task", 59 index=models.Index( 60 fields=["message_id", "queue_name", "state"], name="authentik_t_message_affe69_idx" 61 ), 62 ), 63 migrations.AddIndex( 64 model_name="task", 65 index=models.Index( 66 fields=["state", "mtime", "result_expiry"], name="authentik_t_state_bef902_idx" 67 ), 68 ), 69 pgtrigger.migrations.AddTrigger( 70 model_name="task", 71 trigger=pgtrigger.compiler.Trigger( 72 name="notify_enqueueing", 73 sql=pgtrigger.compiler.UpsertTriggerSql( 74 condition='WHEN (NEW."eta" IS NULL AND NEW."state" = \'queued\')', 75 constraint="CONSTRAINT", 76 func="\n PERFORM pg_notify(\n 'authentik.tasks.' || NEW.queue_name || '.enqueue',\n NEW.message_id::text\n );\n RETURN NEW;\n ", 77 hash="da36b9a6344d384e5cf4de889a06bf578eaa10ef", 78 operation="INSERT OR UPDATE", 79 pgid="pgtrigger_notify_enqueueing_0bc94", 80 table="authentik_tasks_task", 81 timing="DEFERRABLE INITIALLY DEFERRED", 82 when="AFTER", 83 ), 84 ), 85 ), 86 migrations.RunPython(remove_non_default_messages), 87 ]
def
remove_non_default_messages( apps: django.apps.registry.Apps, schema_editor: django.db.backends.base.schema.BaseDatabaseSchemaEditor):
class
Migration(django.db.migrations.migration.Migration):
18class Migration(migrations.Migration): 19 20 dependencies = [ 21 ("authentik_tasks", "0003_task_eta_task_retries"), 22 ("authentik_tenants", "0006_tenant_flags"), 23 ("contenttypes", "0002_remove_content_type_name"), 24 ] 25 26 operations = [ 27 pgtrigger.migrations.RemoveTrigger( 28 model_name="task", 29 name="notify_enqueueing", 30 ), 31 migrations.RemoveIndex( 32 model_name="task", 33 name="authentik_t_state_bb4a31_idx", 34 ), 35 migrations.AddIndex( 36 model_name="task", 37 index=models.Index(fields=["queue_name"], name="authentik_t_queue_n_7b09fb_idx"), 38 ), 39 migrations.AddIndex( 40 model_name="task", 41 index=models.Index( 42 fields=["queue_name", "state"], name="authentik_t_queue_n_7ff882_idx" 43 ), 44 ), 45 migrations.AddIndex( 46 model_name="task", 47 index=models.Index( 48 fields=["message_id", "queue_name", "state", "eta"], 49 name="authentik_t_message_8ee59b_idx", 50 ), 51 ), 52 migrations.AddIndex( 53 model_name="task", 54 index=models.Index( 55 fields=["message_id", "state", "eta"], name="authentik_t_message_74b8d7_idx" 56 ), 57 ), 58 migrations.AddIndex( 59 model_name="task", 60 index=models.Index( 61 fields=["message_id", "queue_name", "state"], name="authentik_t_message_affe69_idx" 62 ), 63 ), 64 migrations.AddIndex( 65 model_name="task", 66 index=models.Index( 67 fields=["state", "mtime", "result_expiry"], name="authentik_t_state_bef902_idx" 68 ), 69 ), 70 pgtrigger.migrations.AddTrigger( 71 model_name="task", 72 trigger=pgtrigger.compiler.Trigger( 73 name="notify_enqueueing", 74 sql=pgtrigger.compiler.UpsertTriggerSql( 75 condition='WHEN (NEW."eta" IS NULL AND NEW."state" = \'queued\')', 76 constraint="CONSTRAINT", 77 func="\n PERFORM pg_notify(\n 'authentik.tasks.' || NEW.queue_name || '.enqueue',\n NEW.message_id::text\n );\n RETURN NEW;\n ", 78 hash="da36b9a6344d384e5cf4de889a06bf578eaa10ef", 79 operation="INSERT OR UPDATE", 80 pgid="pgtrigger_notify_enqueueing_0bc94", 81 table="authentik_tasks_task", 82 timing="DEFERRABLE INITIALLY DEFERRED", 83 when="AFTER", 84 ), 85 ), 86 ), 87 migrations.RunPython(remove_non_default_messages), 88 ]
The base class for all migrations.
Migration files will import this from django.db.migrations.Migration and subclass it as a class called Migration. It will have one or more of the following attributes:
- operations: A list of Operation instances, probably from django.db.migrations.operations
- dependencies: A list of tuples of (app_path, migration_name)
- run_before: A list of tuples of (app_path, migration_name)
- replaces: A list of migration_names
Note that all migrations come out of migrations and into the Loader or Graph as instances, having been initialized with their app label and name.
dependencies =
[('authentik_tasks', '0003_task_eta_task_retries'), ('authentik_tenants', '0006_tenant_flags'), ('contenttypes', '0002_remove_content_type_name')]
operations =
[<RemoveTrigger model_name='task', name='notify_enqueueing'>, <RemoveIndex model_name='task', name='authentik_t_state_bb4a31_idx'>, <AddIndex model_name='task', index=<Index: fields=['queue_name'] name='authentik_t_queue_n_7b09fb_idx'>>, <AddIndex model_name='task', index=<Index: fields=['queue_name', 'state'] name='authentik_t_queue_n_7ff882_idx'>>, <AddIndex model_name='task', index=<Index: fields=['message_id', 'queue_name', 'state', 'eta'] name='authentik_t_message_8ee59b_idx'>>, <AddIndex model_name='task', index=<Index: fields=['message_id', 'state', 'eta'] name='authentik_t_message_74b8d7_idx'>>, <AddIndex model_name='task', index=<Index: fields=['message_id', 'queue_name', 'state'] name='authentik_t_message_affe69_idx'>>, <AddIndex model_name='task', index=<Index: fields=['state', 'mtime', 'result_expiry'] name='authentik_t_state_bef902_idx'>>, <AddTrigger model_name='task', trigger=<pgtrigger.compiler.Trigger object>>, <RunPython <function remove_non_default_messages>>]