This commit is contained in:
parent
75fe0799e0
commit
b8f3621b47
1 changed files with 65 additions and 0 deletions
|
|
@ -0,0 +1,65 @@
|
|||
# Generated by Django 5.2.7 on 2025-10-24 10:04
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def convert_user_info_to_array(apps, schema_editor):
|
||||
"""
|
||||
Convert user_info from object format {"key": "value"} to array format
|
||||
[{"title": "key", "content": "value"}].
|
||||
"""
|
||||
ControlPlane = apps.get_model("core", "ControlPlane")
|
||||
|
||||
for control_plane in ControlPlane.objects.all():
|
||||
if not control_plane.user_info:
|
||||
continue
|
||||
|
||||
# If it's already an array (migration already run or new format), skip
|
||||
if isinstance(control_plane.user_info, list):
|
||||
continue
|
||||
|
||||
# Convert from dict to array
|
||||
if isinstance(control_plane.user_info, dict):
|
||||
new_user_info = []
|
||||
for key, value in control_plane.user_info.items():
|
||||
new_user_info.append({"title": key, "content": value})
|
||||
|
||||
control_plane.user_info = new_user_info
|
||||
control_plane.save(update_fields=["user_info"])
|
||||
|
||||
|
||||
def reverse_user_info_to_object(apps, schema_editor):
|
||||
"""
|
||||
Reverse the migration by converting array format back to object format.
|
||||
Note: help_text will be lost during reversal.
|
||||
"""
|
||||
ControlPlane = apps.get_model("core", "ControlPlane")
|
||||
|
||||
for control_plane in ControlPlane.objects.all():
|
||||
if not control_plane.user_info:
|
||||
continue
|
||||
|
||||
# If it's already an object, skip
|
||||
if isinstance(control_plane.user_info, dict):
|
||||
continue
|
||||
|
||||
# Convert from array to dict
|
||||
if isinstance(control_plane.user_info, list):
|
||||
new_user_info = {}
|
||||
for item in control_plane.user_info:
|
||||
if isinstance(item, dict) and "title" in item and "content" in item:
|
||||
new_user_info[item["title"]] = item["content"]
|
||||
|
||||
control_plane.user_info = new_user_info
|
||||
control_plane.save(update_fields=["user_info"])
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("core", "0011_alter_organizationorigin_billing_entity"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(convert_user_info_to_array, reverse_user_info_to_object),
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue