# coding=utf-8 from django.core.management.base import BaseCommand from django.conf import settings from utils.methods import get_url_images_in_text from news.models import News from sorl.thumbnail import get_thumbnail class Command(BaseCommand): SORL_THUMBNAIL_ALIASES = 'news_image' def add_arguments(self, parser): parser.add_argument( '-a', '--alias', default=self.SORL_THUMBNAIL_ALIASES, help='Ключ для параметров оптимизации', ) def optimize(self, text, alias): for image in get_url_images_in_text(text): optimized_image = get_thumbnail( file_=image, **settings.SORL_THUMBNAIL_ALIASES[alias] ).url text = text.replace(image, optimized_image) self.stdout.write(self.style.SUCCESS(f'Optimized {image} -> {optimized_image}...\n')) return text def handle(self, *args, **options): for news in News.objects.all(): if not isinstance(news.description, dict): continue news.description = { locale: self.optimize(text, options['alias']) for locale, text in news.description.items() } news.save()