# Generated by Django 5.2.17 on 2026-08-19 from django.db import migrations def _sqlite_flock_cycle_notnull(connection): with connection.cursor() as cursor: cursor.execute("PRAGMA table_info(flock)") cols = {row[1]: row for row in cursor.fetchall()} cycle_col = cols.get("cycle_id") return bool(cycle_col and cycle_col[3] == 1) def make_flock_cycle_nullable(apps, schema_editor): connection = schema_editor.connection if connection.vendor != "sqlite": return if not _sqlite_flock_cycle_notnull(connection): return with connection.cursor() as cursor: cursor.execute("PRAGMA foreign_keys=OFF") cursor.execute("ALTER TABLE flock RENAME TO flock_old") cursor.execute( """ CREATE TABLE flock ( id INTEGER PRIMARY KEY AUTOINCREMENT, flock_name varchar(30) NOT NULL, created_at datetime NOT NULL, updated_at datetime NOT NULL, cycle_id bigint NULL REFERENCES cycles(id) ) """ ) cursor.execute( """ INSERT INTO flock (id, flock_name, created_at, updated_at, cycle_id) SELECT id, flock_name, created_at, updated_at, cycle_id FROM flock_old """ ) cursor.execute("DROP TABLE flock_old") cursor.execute("PRAGMA foreign_keys=ON") class Migration(migrations.Migration): dependencies = [ ("farms", "0002_cycle_requires_flock"), ] operations = [ migrations.RunPython(make_flock_cycle_nullable, migrations.RunPython.noop), ]