photo26/photologue/migrations/0014_merge_related.py
2022-01-30 10:20:32 +01:00

96 lines
3.6 KiB
Python

# Generated by Django 3.2.11 on 2022-01-30 08:32
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import taggit.managers
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.template.defaultfilters import slugify
numens = User.objects.get(username="Numens").id
def migrate_related(apps, schema_editor):
Gallery = apps.get_model('photologue', 'Gallery')
Tag = apps.get_model('photologue', 'Tag')
TaggedItems = apps.get_model('taggit', 'TaggedItem')
ct_ext = ContentType.objects.get(app_label="photologue_custom", model="galleryextended")
for gallery in Gallery.objects.all():
tagged_items = TaggedItems.objects.filter(
content_type_id=ct_ext.id,
object_id=gallery.extended.id
)
tags = [tag.tag for tag in tagged_items.all()]
gallery.date_start = gallery.extended.date_start
gallery.date_end = gallery.extended.date_end
gallery.save()
for tag in tags:
try:
new_tag, created = Tag.objects.get_or_create(
name=tag.name.capitalize(),
slug=slugify(tag.name),
)
if new_tag not in gallery.tags.all():
gallery.tags.add(new_tag)
new_tag.save()
gallery.save()
except Exception:
continue
Photo = apps.get_model('photologue', 'Photo')
for photo in Photo.objects.all():
photo.owner = photo.extended.owner
photo.license = photo.extended.license
photo.save()
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('photologue', '0013_alter_gallery_photos'),
]
operations = [
migrations.CreateModel(
name='Tag',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=250, unique=True, verbose_name='name')),
('slug', models.SlugField(help_text='A "slug" is a unique URL-friendly title for an object.', max_length=250, unique=True, verbose_name='slug')),
],
options={
'verbose_name': 'tag',
'verbose_name_plural': 'tags',
'ordering': ['name'],
},
),
migrations.AddField(
model_name='gallery',
name='date_end',
field=models.DateField(blank=True, null=True, verbose_name='end date'),
),
migrations.AddField(
model_name='gallery',
name='date_start',
field=models.DateField(default=django.utils.timezone.now, verbose_name='start date'),
),
migrations.AddField(
model_name='photo',
name='license',
field=models.CharField(blank=True, max_length=255, verbose_name='license'),
),
migrations.AddField(
model_name='photo',
name='owner',
field=models.ForeignKey(default=numens, on_delete=django.db.models.deletion.CASCADE, to='auth.user', verbose_name='owner'),
preserve_default=False,
),
migrations.AddField(
model_name='gallery',
name='tags',
field=models.ManyToManyField(blank=True, related_name='galleries', to='photologue.Tag', verbose_name='tags'),
),
migrations.RunPython(migrate_related),
]