mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-12-01 14:01:35 +00:00
Protect generate_preview_images command
- add `--all` argument - send computation intensive tasks to Celery
This commit is contained in:
parent
f206f61e9a
commit
61367c3f4f
2 changed files with 46 additions and 38 deletions
|
@ -6,44 +6,52 @@ from django.core.management.base import BaseCommand
|
||||||
from bookwyrm import activitystreams, models, settings, preview_images
|
from bookwyrm import activitystreams, models, settings, preview_images
|
||||||
|
|
||||||
|
|
||||||
def generate_preview_images():
|
|
||||||
"""generate preview images"""
|
|
||||||
print(" | Hello! I will be generating preview images for your instance.")
|
|
||||||
print(
|
|
||||||
"🧑🎨 ⎨ This might take quite long if your instance has a lot of books and users."
|
|
||||||
)
|
|
||||||
print(" | ✧ Thank you for your patience ✧")
|
|
||||||
|
|
||||||
# Site
|
|
||||||
sys.stdout.write(" → Site preview image: ")
|
|
||||||
preview_images.generate_site_preview_image_task()
|
|
||||||
sys.stdout.write(" OK 🖼\n")
|
|
||||||
|
|
||||||
# Users
|
|
||||||
users = models.User.objects.filter(
|
|
||||||
local=True,
|
|
||||||
is_active=True,
|
|
||||||
)
|
|
||||||
sys.stdout.write(" → User preview images ({}): ".format(len(users)))
|
|
||||||
for user in users:
|
|
||||||
preview_images.generate_user_preview_image_task(user.id)
|
|
||||||
sys.stdout.write(".")
|
|
||||||
sys.stdout.write(" OK 🖼\n")
|
|
||||||
|
|
||||||
# Books
|
|
||||||
books = models.Book.objects.select_subclasses().filter()
|
|
||||||
sys.stdout.write(" → Book preview images ({}): ".format(len(books)))
|
|
||||||
for book in books:
|
|
||||||
preview_images.generate_edition_preview_image_task(book.id)
|
|
||||||
sys.stdout.write(".")
|
|
||||||
sys.stdout.write(" OK 🖼\n")
|
|
||||||
|
|
||||||
print("🧑🎨 ⎨ I’m all done! ✧ Enjoy ✧")
|
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Generate preview images"
|
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
|
# pylint: disable=no-self-use,unused-argument
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
"""run feed builder"""
|
"""generate preview images"""
|
||||||
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 ✧")
|
||||||
|
|
||||||
|
|
||||||
|
|
2
bw-dev
2
bw-dev
|
@ -108,7 +108,7 @@ case "$CMD" in
|
||||||
runweb python manage.py populate_streams
|
runweb python manage.py populate_streams
|
||||||
;;
|
;;
|
||||||
generate_preview_images)
|
generate_preview_images)
|
||||||
runweb python manage.py generate_preview_images
|
runweb python manage.py generate_preview_images $@
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unrecognised command. Try: build, clean, up, initdb, resetdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, test, pytest, test_report, black, populate_feeds, generate_preview_images"
|
echo "Unrecognised command. Try: build, clean, up, initdb, resetdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, test, pytest, test_report, black, populate_feeds, generate_preview_images"
|
||||||
|
|
Loading…
Reference in a new issue