From 19eb5a420e2210e46d420a1db0a3df1e7154184a Mon Sep 17 00:00:00 2001 From: Alexandre Iooss <erdnaxe@crans.org> Date: Sun, 5 Dec 2021 15:16:08 +0100 Subject: [PATCH 1/3] Add rename_media management command --- .../management/commands/rename_media.py | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 photologue_custom/management/commands/rename_media.py diff --git a/photologue_custom/management/commands/rename_media.py b/photologue_custom/management/commands/rename_media.py new file mode 100644 index 0000000..6fed290 --- /dev/null +++ b/photologue_custom/management/commands/rename_media.py @@ -0,0 +1,38 @@ +from pathlib import Path +import os + +from django.core.management.base import BaseCommand +from photologue.models import Gallery +from django.conf import settings +from tqdm import tqdm + + +class Command(BaseCommand): + help = 'Rename uploaded media file to match gallery and photo names' + + def add_arguments(self, parser): + parser.add_argument('--apply', action='store_true') + + def handle(self, *args, **options): + media_dir = Path(settings.MEDIA_ROOT) + for gallery in tqdm(Gallery.objects.all()): + # Create gallery directory + gallery_year = str(gallery.extended.date_start.year) + gallery_dir = Path('photos') / gallery_year / gallery.slug + gallery_path = media_dir / gallery_dir + if not gallery_path.exists(): + tqdm.write(f"Creating {gallery_dir}") + if options["apply"]: + gallery_path.mkdir(parents=True) + + # Move photos in gallery folder + for photo in tqdm(gallery.photos.all()): + photo_name = str(gallery_dir / photo.image.name.split("/")[-1]) + if photo.image.name == photo_name: + continue + tqdm.write(f" Moving {photo.image.name} -> {photo_name}") + if options["apply"]: + if not (media_dir / photo_name).exists(): + os.rename(photo.image.path, media_dir / photo_name) + photo.image.name = photo_name + photo.save() -- GitLab From 712bf6ad850cf4b19dfabbdb55f7bd10067e242b Mon Sep 17 00:00:00 2001 From: Alexandre Iooss <erdnaxe@crans.org> Date: Wed, 15 Dec 2021 13:22:16 +0100 Subject: [PATCH 2/3] rename_media: do not depend on tqdm --- photologue_custom/management/commands/rename_media.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/photologue_custom/management/commands/rename_media.py b/photologue_custom/management/commands/rename_media.py index 6fed290..62615e9 100644 --- a/photologue_custom/management/commands/rename_media.py +++ b/photologue_custom/management/commands/rename_media.py @@ -4,7 +4,6 @@ import os from django.core.management.base import BaseCommand from photologue.models import Gallery from django.conf import settings -from tqdm import tqdm class Command(BaseCommand): @@ -15,22 +14,22 @@ class Command(BaseCommand): def handle(self, *args, **options): media_dir = Path(settings.MEDIA_ROOT) - for gallery in tqdm(Gallery.objects.all()): + for gallery in Gallery.objects.all(): # Create gallery directory gallery_year = str(gallery.extended.date_start.year) gallery_dir = Path('photos') / gallery_year / gallery.slug gallery_path = media_dir / gallery_dir if not gallery_path.exists(): - tqdm.write(f"Creating {gallery_dir}") + self.stdout.write(f"Creating {gallery_dir}") if options["apply"]: gallery_path.mkdir(parents=True) # Move photos in gallery folder - for photo in tqdm(gallery.photos.all()): + for photo in gallery.photos.all(): photo_name = str(gallery_dir / photo.image.name.split("/")[-1]) if photo.image.name == photo_name: continue - tqdm.write(f" Moving {photo.image.name} -> {photo_name}") + self.stdout.write(f" Moving {photo.image.name} -> {photo_name}") if options["apply"]: if not (media_dir / photo_name).exists(): os.rename(photo.image.path, media_dir / photo_name) -- GitLab From 211549de7ed0563f446e3637e0a4a690a317e854 Mon Sep 17 00:00:00 2001 From: Alexandre Iooss <erdnaxe@crans.org> Date: Wed, 15 Dec 2021 13:22:34 +0100 Subject: [PATCH 3/3] Test Django 2.2 and 3.2 --- tox.ini | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tox.ini b/tox.ini index 333bfcb..007b0c9 100644 --- a/tox.ini +++ b/tox.ini @@ -1,17 +1,14 @@ [tox] envlist = - # Ubuntu 20.04 Python - py38-django22 - - # Debian Bullseye Python - py39-django22 - + py39-django{22,32} linters skipsdist = True [testenv] sitepackages = True deps = + django22: Django ~= 2.2.0 + django32: Django ~= 3.2.0 -r{toxinidir}/requirements.txt coverage commands = -- GitLab