| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # 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, defaults={'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',
- ),
- ]
|