Initial commit!
This commit is contained in:
35
images/management/commands/create_tasks.py
Normal file
35
images/management/commands/create_tasks.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from images.models import Image, ImageVariant, ImageVariantTask
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
def handle(self, *args, **options):
|
||||
images = Image.objects.filter(model_version=2).all()
|
||||
images_len = len(images)
|
||||
for index, image in enumerate(images):
|
||||
print(f"Image {index}/{images_len}")
|
||||
variants = ImageVariant.objects.filter(image=image).all()
|
||||
variant_sizes = list(set(map(lambda x: (x.width, x.height), variants)))
|
||||
|
||||
for image_type in ["avif", "webp", "jpegli"]:
|
||||
for variant_size in variant_sizes:
|
||||
avif_variant = [
|
||||
x
|
||||
for x in variants
|
||||
if x.width == variant_size[0]
|
||||
and x.height == variant_size[1]
|
||||
and x.file_type == image_type
|
||||
]
|
||||
if not avif_variant:
|
||||
ImageVariantTask(
|
||||
image=image,
|
||||
height=variant_size[1],
|
||||
width=variant_size[0],
|
||||
original_file_type=image.imagevariant_set.filter(
|
||||
is_full_size=True, file_type__in=["jpg", "png"]
|
||||
)
|
||||
.first()
|
||||
.file_type,
|
||||
file_type=image_type,
|
||||
).save()
|
Reference in New Issue
Block a user