mirror of
https://github.com/daniviga/django-ram.git
synced 2025-08-04 13:17:50 +02:00
Keep media folder clean (#28)
* Reorg roster, portal and bookshelf media * Extend media reorg to consists * Delete roster and bookshelf images on delte. Do not delete others data that might be dedup! * Bump version
This commit is contained in:
51
ram/consist/migrations/0009_alter_consist_image.py
Normal file
51
ram/consist/migrations/0009_alter_consist_image.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# Generated by Django 4.2.6 on 2023-10-31 09:41
|
||||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import ram.utils
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
def move_images(apps, schema_editor):
|
||||
sys.stdout.write("\n Processing files. Please await...")
|
||||
model = apps.get_model("consist", "Consist")
|
||||
for r in model.objects.all():
|
||||
if not r.image: # exit the loop if there's no image
|
||||
continue
|
||||
fname = os.path.basename(r.image.path)
|
||||
new_image = os.path.join("images", "consists", 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 = [
|
||||
("consist", "0008_alter_consist_options"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="consist",
|
||||
name="image",
|
||||
field=models.ImageField(
|
||||
blank=True,
|
||||
null=True,
|
||||
storage=ram.utils.DeduplicatedStorage,
|
||||
upload_to="images/consists",
|
||||
),
|
||||
),
|
||||
migrations.RunPython(
|
||||
move_images,
|
||||
reverse_code=migrations.RunPython.noop
|
||||
),
|
||||
]
|
@@ -1,3 +1,5 @@
|
||||
import os
|
||||
|
||||
from uuid import uuid4
|
||||
from django.db import models
|
||||
from django.urls import reverse
|
||||
@@ -19,7 +21,10 @@ class Consist(models.Model):
|
||||
company = models.ForeignKey(Company, on_delete=models.CASCADE)
|
||||
era = models.CharField(max_length=32, blank=True)
|
||||
image = models.ImageField(
|
||||
upload_to="images/", storage=DeduplicatedStorage, null=True, blank=True
|
||||
upload_to=os.path.join("images", "consists"),
|
||||
storage=DeduplicatedStorage,
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
notes = RichTextUploadingField(blank=True)
|
||||
creation_time = models.DateTimeField(auto_now_add=True)
|
||||
|
Reference in New Issue
Block a user