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