14438 fix migration

This commit is contained in:
Arthur 2024-02-12 10:14:11 -08:00
parent 4fdce65e35
commit 63d3ce6e77

View File

@ -4,6 +4,31 @@ from django.db import migrations, models
import django.db.models.deletion
def update_event_rules(apps, schema_editor):
from extras.models import ScriptModule
Script = apps.get_model('extras', 'Script')
ContentType = apps.get_model('contenttypes', 'ContentType')
ct = ContentType.objects.filter(app_label='extras', model='script').first()
EventRule = apps.get_model('extras', 'EventRule')
ct_script_module = ContentType.objects.filter(app_label='extras', model='scriptmodule').first()
for rule in EventRule.objects.filter(action_object_type=ct_script_module):
name = rule.action_parameters.get('script_name')
obj, created = Script.objects.get_or_create(
module_id=rule.action_object_id,
name=name,
)
if created:
# script in action_parameters was deleted?
obj.is_valid = False
obj.save()
rule.action_object_type = ct
rule.action_object_id = obj.id
rule.save()
def update_scripts(apps, schema_editor):
from extras.models import ScriptModule
ScriptModuleNew = apps.get_model('extras', 'ScriptModule')
@ -22,24 +47,6 @@ def update_scripts(apps, schema_editor):
if ct:
module.jobs.filter(name=script).update(object_type=ct, object_id=obj.id)
EventRule = apps.get_model('extras', 'EventRule')
ct_script_module = ContentType.objects.filter(app_label='extras', model='scriptmodule').first()
for rule in EventRule.objects.filter(action_object_type=ct_script_module):
name = rule.action_parameters.get('script_name')
obj, created = Script.objects.get_or_create(
module_id=rule.action_object_id,
name=name,
)
if created:
# script in action_parameters was deleted?
obj.is_valid = False
obj.save()
rule.action_object_type = ct
rule.action_object_id = obj.id
rule.save()
class Migration(migrations.Migration):
@ -72,8 +79,18 @@ class Migration(migrations.Migration):
code=update_scripts,
reverse_code=migrations.RunPython.noop
),
migrations.RemoveField(
model_name='eventrule',
name='action_parameters',
migrations.SeparateDatabaseAndState(
database_operations=[
migrations.RunPython(
code=update_event_rules,
reverse_code=migrations.RunPython.noop
),
],
state_operations=[
migrations.RemoveField(
model_name='eventrule',
name='action_parameters',
),
]
),
]