70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
# Generated by Django 3.0.8 on 2020-10-12 15:20
|
|
|
|
from django.db import migrations, models
|
|
from django.utils.text import slugify
|
|
|
|
def forwards_func(apps, schema_editor):
|
|
SnapshotModel = apps.get_model("core", "Snapshot")
|
|
TagModel = apps.get_model("core", "Tag")
|
|
|
|
db_alias = schema_editor.connection.alias
|
|
snapshots = SnapshotModel.objects.all()
|
|
for snapshot in snapshots:
|
|
tags = snapshot.tags
|
|
tag_set = (
|
|
set(tag.strip() for tag in (snapshot.tags_old or '').split(','))
|
|
)
|
|
tag_set.discard("")
|
|
|
|
for tag in tag_set:
|
|
to_add, _ = TagModel.objects.get_or_create(name=tag, slug=slugify(tag))
|
|
snapshot.tags.add(to_add)
|
|
|
|
|
|
def reverse_func(apps, schema_editor):
|
|
SnapshotModel = apps.get_model("core", "Snapshot")
|
|
TagModel = apps.get_model("core", "Tag")
|
|
|
|
db_alias = schema_editor.connection.alias
|
|
snapshots = SnapshotModel.objects.all()
|
|
for snapshot in snapshots:
|
|
tags = snapshot.tags.values_list("name", flat=True)
|
|
snapshot.tags_old = ",".join([tag for tag in tags])
|
|
snapshot.save()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('core', '0005_auto_20200728_0326'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RenameField(
|
|
model_name='snapshot',
|
|
old_name='tags',
|
|
new_name='tags_old',
|
|
),
|
|
migrations.CreateModel(
|
|
name='Tag',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=100, unique=True, verbose_name='name')),
|
|
('slug', models.SlugField(max_length=100, unique=True, verbose_name='slug')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Tag',
|
|
'verbose_name_plural': 'Tags',
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='snapshot',
|
|
name='tags',
|
|
field=models.ManyToManyField(to='core.Tag'),
|
|
),
|
|
migrations.RunPython(forwards_func, reverse_func),
|
|
migrations.RemoveField(
|
|
model_name='snapshot',
|
|
name='tags_old',
|
|
),
|
|
]
|