mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-25 14:50:24 +00:00
perf: 合并 migrations (#13187)
* perf: 修改 Migrations * perf: 合并 migrations * perf: remove unuse * perf: change to file --------- Co-authored-by: ibuler <ibuler@qq.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Generated by Django 4.1.10 on 2023-11-06 10:38
|
||||
# Generated by Django 4.1.13 on 2024-05-09 03:16
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
@@ -22,11 +22,11 @@ class Migration(migrations.Migration):
|
||||
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')),
|
||||
('date_updated', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
|
||||
('comment', models.TextField(blank=True, default='', verbose_name='Comment')),
|
||||
('internal', models.BooleanField(default=False, verbose_name='Internal')),
|
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
||||
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
||||
('name', models.CharField(db_index=True, max_length=64, verbose_name='Name')),
|
||||
('value', models.CharField(max_length=64, verbose_name='Value')),
|
||||
('internal', models.BooleanField(default=False, verbose_name='Internal')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Label',
|
||||
@@ -44,11 +44,12 @@ class Migration(migrations.Migration):
|
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
|
||||
('org_id', models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
|
||||
('res_id', models.CharField(db_index=True, max_length=36, verbose_name='Resource ID')),
|
||||
('label', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='labels.label')),
|
||||
('label', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='labeled_resources', to='labels.label', verbose_name='Label')),
|
||||
('res_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
'verbose_name': 'Labeled resource',
|
||||
'unique_together': {('label', 'res_type', 'res_id', 'org_id')},
|
||||
},
|
||||
),
|
||||
]
|
||||
|
@@ -1,52 +0,0 @@
|
||||
# Generated by Django 4.1.10 on 2023-11-03 08:59
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def migrate_assets_labels(apps, schema_editor):
|
||||
old_label_model = apps.get_model('assets', 'Label')
|
||||
new_label_model = apps.get_model('labels', 'Label')
|
||||
asset_model = apps.get_model('assets', 'Asset')
|
||||
labeled_item_model = apps.get_model('labels', 'LabeledResource')
|
||||
|
||||
old_labels = old_label_model.objects.all()
|
||||
new_labels = []
|
||||
old_new_label_map = {}
|
||||
for label in old_labels:
|
||||
new_label = new_label_model(name=label.name, value=label.value, org_id=label.org_id, id=label.id)
|
||||
old_new_label_map[label.id] = new_label
|
||||
new_labels.append(new_label)
|
||||
new_label_model.objects.bulk_create(new_labels, ignore_conflicts=True)
|
||||
|
||||
label_relations = asset_model.labels.through.objects.all()
|
||||
bulk_size = 1000
|
||||
count = 0
|
||||
content_type = apps.get_model('contenttypes', 'contenttype').objects.get_for_model(asset_model)
|
||||
|
||||
while True:
|
||||
relations = label_relations[count:count + bulk_size]
|
||||
if not relations:
|
||||
break
|
||||
count += bulk_size
|
||||
|
||||
tagged_items = []
|
||||
for relation in relations:
|
||||
new_label = old_new_label_map[relation.label_id]
|
||||
tagged_item = labeled_item_model(
|
||||
label_id=new_label.id, res_type=content_type,
|
||||
res_id=relation.asset_id, org_id=new_label.org_id
|
||||
)
|
||||
tagged_items.append(tagged_item)
|
||||
labeled_item_model.objects.bulk_create(tagged_items, ignore_conflicts=True)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('labels', '0001_initial'),
|
||||
('assets', '0125_auto_20231011_1053')
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(migrate_assets_labels),
|
||||
]
|
@@ -1,28 +0,0 @@
|
||||
# Generated by Django 4.1.10 on 2023-11-15 10:58
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
('labels', '0002_auto_20231103_1659'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='labeledresource',
|
||||
options={'verbose_name': 'Labeled resource'},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='labeledresource',
|
||||
name='label',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='labeled_resources', to='labels.label', verbose_name='Label'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='labeledresource',
|
||||
unique_together={('label', 'res_type', 'res_id', 'org_id')},
|
||||
),
|
||||
]
|
Reference in New Issue
Block a user