53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
# 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),
|
|
]
|