# Generated by Django 3.0.6 on 2020-07-03 17:18

from django.db import migrations
import yaml


def generate_versions(version_lists):
    if not version_lists:
        yield []
    else:
        for subversion in generate_versions(version_lists[1:]):
            for version in version_lists[0]:
                yield [version] + subversion


def move_definitions(apps, schema_editor):
    YouTube = apps.get_model('youtube', 'YouTube')
    ThumbnailTemplate = apps.get_model('youtube', 'ThumbnailTemplate')
    order = 1
    for youtube in YouTube.objects.all():
        src_def = yaml.safe_load(youtube.thumbnail_definition)
        version_lists = [
            box['versions']
            for box in src_def['boxes']
        ]
        for version in generate_versions(version_lists):
            defn = yaml.dump(
                {"boxes": version},
                allow_unicode=True,
                default_flow_style=False
            )
            ThumbnailTemplate.objects.create(
                order=order,
                is_active=True,
                background=youtube.thumbnail_template,
                definition=defn,
            )
            order += 1


class Migration(migrations.Migration):

    dependencies = [
        ('youtube', '0011_thumbnailtemplate'),
    ]

    operations = [
        migrations.RunPython(
            move_definitions,
            migrations.RunPython.noop
        )
    ]
