Skip to content

Commit 10bf84a

Browse files
committed
✨ Add management command to regenerate missing avif thumbnails
1 parent 702afc4 commit 10bf84a

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from pathlib import Path
2+
3+
from django.core.management.base import BaseCommand
4+
from django.db.models.fields.files import default_storage
5+
6+
from fragdenstaat_de.fds_cms.tasks import generate_avif_thumbnail
7+
8+
9+
def walk_folder(storage, base):
10+
folders, files = storage.listdir(base)
11+
12+
for subfolder in folders:
13+
# On S3, we don't really have subfolders, so exclude "."
14+
if subfolder == ".":
15+
continue
16+
17+
new_base = str(Path(base, subfolder))
18+
yield from walk_folder(storage, new_base)
19+
20+
for file in files:
21+
yield Path(base, file)
22+
23+
24+
class Command(BaseCommand):
25+
help = "Generate missing avif files for thumbnails"
26+
27+
def add_arguments(self, parser):
28+
parser.add_argument("--base-path", type=str, default="media/thumbnails")
29+
30+
def handle(self, *args, base_path, **kwargs):
31+
storage = default_storage
32+
for file in walk_folder(storage, base_path):
33+
if file.suffix in (".avif", ".svg"):
34+
continue
35+
if not storage.exists(str(file) + ".avif"):
36+
print("Generating avif for", file)
37+
generate_avif_thumbnail(str(file), storage)

0 commit comments

Comments
 (0)