You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jumpserver/apps/assets/migrations/0115_auto_20230417_1425.py

50 lines
1.8 KiB

# Generated by Django 3.2.17 on 2023-04-17 06:32
from django.db import migrations, models
def migrate_platform_automation_id(apps, *args):
platform_model = apps.get_model('assets', 'Platform')
for platform in platform_model.objects.all():
if platform.automation:
platform._automation_id = platform.automation.id
platform.save(update_fields=['_automation_id'])
def migrate_automation_platform(apps, *args):
platform_model = apps.get_model('assets', 'Platform')
automation_model = apps.get_model('assets', 'PlatformAutomation')
platforms = platform_model.objects.all()
for platform in platforms:
if not platform._automation_id:
continue
automation = automation_model.objects.filter(id=platform._automation_id).first()
if not automation:
continue
automation.platform = platform
automation.save(update_fields=['platform'])
class Migration(migrations.Migration):
dependencies = [
('assets', '0114_baseautomation_params'),
]
operations = [
migrations.AddField(
model_name='platform',
name='_automation_id',
field=models.UUIDField(editable=False, null=True),
),
migrations.RunPython(migrate_platform_automation_id),
migrations.RemoveField(model_name='platform', name='automation'),
migrations.AddField(
model_name='platformautomation',
name='platform',
field=models.OneToOneField(null=True, on_delete=models.deletion.CASCADE,
related_name='automation', to='assets.platform'),
),
migrations.RunPython(migrate_automation_platform),
migrations.RemoveField(model_name='platform', name='_automation_id'),
]