""" Generate preview images """ from django.core.management.base import BaseCommand from bookwyrm import models, preview_images # pylint: disable=line-too-long class Command(BaseCommand): """Creates previews for existing objects""" help = "Generate preview images" def add_arguments(self, parser): parser.add_argument( "--all", "-a", action="store_true", help="Generates images for ALL types: site, users and books. Can use a lot of computing power.", ) # pylint: disable=no-self-use,unused-argument def handle(self, *args, **options): """generate preview images""" self.stdout.write( " | Hello! I will be generating preview images for your instance." ) if options["all"]: self.stdout.write( "šŸ§‘ā€šŸŽØ āŽØ This might take quite long if your instance has a lot of books and users." ) self.stdout.write(" | āœ§ Thank you for your patience āœ§") else: self.stdout.write("šŸ§‘ā€šŸŽØ āŽØ I will only generate the instance preview image.") self.stdout.write(" | āœ§ Be right back! āœ§") # Site self.stdout.write(" ā†’ Site preview image: ", ending="") preview_images.generate_site_preview_image_task.delay() self.stdout.write(" OK šŸ–¼") if options["all"]: # Users users = models.User.objects.filter( local=True, is_active=True, ) self.stdout.write( " ā†’ User preview images ({}): ".format(len(users)), ending="" ) for user in users: preview_images.generate_user_preview_image_task.delay(user.id) self.stdout.write(".", ending="") self.stdout.write(" OK šŸ–¼") # Books books = models.Book.objects.select_subclasses().filter() self.stdout.write( " ā†’ Book preview images ({}): ".format(len(books)), ending="" ) for book in books: preview_images.generate_edition_preview_image_task.delay(book.id) self.stdout.write(".", ending="") self.stdout.write(" OK šŸ–¼") self.stdout.write("šŸ§‘ā€šŸŽØ āŽØ Iā€™m all done! āœ§ Enjoy āœ§")