mirror of https://github.com/jumpserver/jumpserver
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.
78 lines
2.7 KiB
78 lines
2.7 KiB
# Generated by Django 4.1.10 on 2023-08-03 08:28
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
import common.db.encoder
|
|
|
|
|
|
def migrate_recipients(apps, schema_editor):
|
|
account_backup_model = apps.get_model('accounts', 'AccountBackupAutomation')
|
|
execution_model = apps.get_model('accounts', 'AccountBackupExecution')
|
|
for account_backup in account_backup_model.objects.all():
|
|
recipients = list(account_backup.recipients.all())
|
|
if not recipients:
|
|
continue
|
|
account_backup.recipients_part_one.set(recipients)
|
|
|
|
objs = []
|
|
for execution in execution_model.objects.all():
|
|
snapshot = execution.snapshot
|
|
recipients = snapshot.pop('recipients', {})
|
|
snapshot.update({'recipients_part_one': recipients, 'recipients_part_two': {}})
|
|
objs.append(execution)
|
|
execution_model.objects.bulk_update(objs, ['snapshot'])
|
|
|
|
|
|
def migrate_snapshot(apps, schema_editor):
|
|
model = apps.get_model('accounts', 'AccountBackupExecution')
|
|
objs = []
|
|
for execution in model.objects.all():
|
|
execution.snapshot = execution.plan_snapshot
|
|
objs.append(execution)
|
|
model.objects.bulk_update(objs, ['snapshot'])
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
('accounts', '0012_auto_20230621_1456'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='accountbackupautomation',
|
|
name='recipients_part_one',
|
|
field=models.ManyToManyField(
|
|
blank=True, related_name='recipient_part_one_plans',
|
|
to=settings.AUTH_USER_MODEL, verbose_name='Recipient part one'
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name='accountbackupautomation',
|
|
name='recipients_part_two',
|
|
field=models.ManyToManyField(
|
|
blank=True, related_name='recipient_part_two_plans',
|
|
to=settings.AUTH_USER_MODEL, verbose_name='Recipient part two'
|
|
),
|
|
),
|
|
migrations.AddField(
|
|
model_name='accountbackupexecution',
|
|
name='snapshot',
|
|
field=models.JSONField(
|
|
default=dict, encoder=common.db.encoder.ModelJSONFieldEncoder,
|
|
null=True, blank=True, verbose_name='Account backup snapshot'
|
|
),
|
|
),
|
|
migrations.RunPython(migrate_snapshot),
|
|
migrations.RunPython(migrate_recipients),
|
|
migrations.RemoveField(
|
|
model_name='accountbackupexecution',
|
|
name='plan_snapshot',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='accountbackupautomation',
|
|
name='recipients',
|
|
),
|
|
|
|
]
|