# Generated by Django 4.2.6 on 2023-10-30 13:16

import os
import sys
import shutil
import ram.utils
import roster.models

from django.db import migrations, models
from django.conf import settings


def move_images(apps, schema_editor):
    sys.stdout.write("\n  Processing files. Please await...")
    for r in roster.models.RollingStockImage.objects.all():
        fname = os.path.basename(r.image.path)
        new_image = roster.models.rolling_stock_image_upload(r, fname)
        new_path = os.path.join(settings.MEDIA_ROOT, new_image)
        os.makedirs(os.path.dirname(new_path), exist_ok=True)
        try:
            shutil.move(r.image.path, new_path)
        except FileNotFoundError:
            sys.stderr.write("  !! FileNotFoundError: {}\n".format(new_image))
            pass
        r.image.name = new_image
        r.save()


class Migration(migrations.Migration):
    dependencies = [
        ("roster", "0019_rollingstockdocument_private"),
    ]

    operations = [
        migrations.AlterField(
            model_name="rollingstockimage",
            name="image",
            field=models.ImageField(
                blank=True,
                null=True,
                storage=ram.utils.DeduplicatedStorage,
                upload_to=roster.models.rolling_stock_image_upload,
            ),
        ),
        migrations.RunPython(
            move_images,
            reverse_code=migrations.RunPython.noop
        ),
    ]
