Ctrl K
ComunidadGuías…

files/migrations/0019_add_mp4_preview_profile.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
from django.db import migrations

PREVIEW_NAME = "preview"


def add_mp4_preview_profile(apps, schema_editor):
    """Move the hover preview from an animated gif to a short mp4.

    Both profiles are kept, so every existing gif preview stays attached to the profile
    that produced it and is still served: a preview is recognised by profile name rather
    than extension. Matched on name and extension rather than a primary key, since a
    portal may have added profiles of its own.
    """
    EncodeProfile = apps.get_model("files", "EncodeProfile")

    EncodeProfile.objects.get_or_create(
        name=PREVIEW_NAME,
        extension="mp4",
        defaults={
            "resolution": None,
            "codec": None,
            "description": "",
            "active": True,
        },
    )

    EncodeProfile.objects.filter(name=PREVIEW_NAME, extension="mp4").update(active=True)

    EncodeProfile.objects.filter(name=PREVIEW_NAME, extension="gif").update(active=False)


def restore_gif_preview_profile(apps, schema_editor):
    """Hand the preview role back to the gif profile.

    The mp4 profile is deactivated rather than deleted: it may own encodings by now, and
    deleting it would cascade to them and to the files on disk.
    """
    EncodeProfile = apps.get_model("files", "EncodeProfile")

    EncodeProfile.objects.filter(name=PREVIEW_NAME, extension="mp4").update(active=False)
    EncodeProfile.objects.filter(name=PREVIEW_NAME, extension="gif").update(active=True)


class Migration(migrations.Migration):
    dependencies = [
        ("files", "0018_embedmediacourse"),
    ]

    operations = [
        migrations.RunPython(add_mp4_preview_profile, restore_gif_preview_profile),
    ]