Add env var to enable/disable thumbnail generation

This commit is contained in:
Joachim 2021-06-07 19:52:25 +02:00
parent 7ed2ed116a
commit 2731ea9aa9
6 changed files with 117 additions and 103 deletions

View file

@ -50,5 +50,8 @@ EMAIL_HOST_PASSWORD=emailpassword123
EMAIL_USE_TLS=true
EMAIL_USE_SSL=false
# Thumbnails Generation
ENABLE_THUMBNAIL_GENERATION=false
# Set this to true when initializing certbot for domain, false when not
CERTBOT_INIT=false

View file

@ -50,5 +50,8 @@ EMAIL_HOST_PASSWORD=emailpassword123
EMAIL_USE_TLS=true
EMAIL_USE_SSL=false
# Thumbnails Generation
ENABLE_THUMBNAIL_GENERATION=false
# Set this to true when initializing certbot for domain, false when not
CERTBOT_INIT=false

View file

@ -1,5 +1,5 @@
""" customize the info available in context for rendering templates """
from bookwyrm import models
from bookwyrm import models, settings
def site_settings(request): # pylint: disable=unused-argument
@ -7,4 +7,5 @@ def site_settings(request): # pylint: disable=unused-argument
return {
"site": models.SiteSettings.objects.get(),
"active_announcements": models.Announcement.active_announcements(),
"enable_thumbnail_generation": settings.ENABLE_THUMBNAIL_GENERATION,
}

View file

@ -6,7 +6,7 @@ from model_utils.managers import InheritanceManager
from imagekit.models import ImageSpecField
from bookwyrm import activitypub
from bookwyrm.settings import DOMAIN, DEFAULT_LANGUAGE
from bookwyrm.settings import DOMAIN, DEFAULT_LANGUAGE, ENABLE_THUMBNAIL_GENERATION
from .activitypub_mixin import OrderedCollectionPageMixin, ObjectMixin
from .base_model import BookWyrmModel
@ -88,20 +88,21 @@ class Book(BookDataModel):
objects = InheritanceManager()
cover_bw_book_xsmall_webp = ImageSpecField(source="cover", id="bw:book:xsmall:webp")
cover_bw_book_xsmall_jpg = ImageSpecField(source="cover", id="bw:book:xsmall:jpg")
cover_bw_book_small_webp = ImageSpecField(source="cover", id="bw:book:small:webp")
cover_bw_book_small_jpg = ImageSpecField(source="cover", id="bw:book:small:jpg")
cover_bw_book_medium_webp = ImageSpecField(source="cover", id="bw:book:medium:webp")
cover_bw_book_medium_jpg = ImageSpecField(source="cover", id="bw:book:medium:jpg")
cover_bw_book_large_webp = ImageSpecField(source="cover", id="bw:book:large:webp")
cover_bw_book_large_jpg = ImageSpecField(source="cover", id="bw:book:large:jpg")
cover_bw_book_xlarge_webp = ImageSpecField(source="cover", id="bw:book:xlarge:webp")
cover_bw_book_xlarge_jpg = ImageSpecField(source="cover", id="bw:book:xlarge:jpg")
cover_bw_book_xxlarge_webp = ImageSpecField(
source="cover", id="bw:book:xxlarge:webp"
)
cover_bw_book_xxlarge_jpg = ImageSpecField(source="cover", id="bw:book:xxlarge:jpg")
if ENABLE_THUMBNAIL_GENERATION:
cover_bw_book_xsmall_webp = ImageSpecField(source="cover", id="bw:book:xsmall:webp")
cover_bw_book_xsmall_jpg = ImageSpecField(source="cover", id="bw:book:xsmall:jpg")
cover_bw_book_small_webp = ImageSpecField(source="cover", id="bw:book:small:webp")
cover_bw_book_small_jpg = ImageSpecField(source="cover", id="bw:book:small:jpg")
cover_bw_book_medium_webp = ImageSpecField(source="cover", id="bw:book:medium:webp")
cover_bw_book_medium_jpg = ImageSpecField(source="cover", id="bw:book:medium:jpg")
cover_bw_book_large_webp = ImageSpecField(source="cover", id="bw:book:large:webp")
cover_bw_book_large_jpg = ImageSpecField(source="cover", id="bw:book:large:jpg")
cover_bw_book_xlarge_webp = ImageSpecField(source="cover", id="bw:book:xlarge:webp")
cover_bw_book_xlarge_jpg = ImageSpecField(source="cover", id="bw:book:xlarge:jpg")
cover_bw_book_xxlarge_webp = ImageSpecField(
source="cover", id="bw:book:xxlarge:webp"
)
cover_bw_book_xxlarge_jpg = ImageSpecField(source="cover", id="bw:book:xxlarge:jpg")
@property
def author_text(self):

View file

@ -187,4 +187,5 @@ USER_AGENT = "%s (BookWyrm/%s; +https://%s/)" % (
)
# Imagekit generated thumbnails
ENABLE_THUMBNAIL_GENERATION = env.bool("ENABLE_THUMBNAIL_GENERATION", False)
IMAGEKIT_CACHEFILE_DIR = "thumbnails"

View file

@ -1,6 +1,7 @@
{% spaceless %}
{% load i18n %}
{% load static %}
{% load imagekit %}
{% if book.cover %}
@ -14,97 +15,101 @@
>
{% else %}
{% if size_mobile == 'xsmall' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_xsmall_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_xsmall_jpg.url }}"
/>
{% elif size_mobile == 'small' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_small_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_small_jpg.url }}"
/>
{% elif size_mobile == 'medium' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_medium_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_medium_jpg.url }}"
/>
{% elif size_mobile == 'large' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_large_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_large_jpg.url }}"
/>
{% elif size_mobile == 'xlarge' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_xlarge_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_xlarge_jpg.url }}"
/>
{% elif size_mobile == 'xxlarge' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_xxlarge_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_xxlarge_jpg.url }}"
/>
{% endif %}
{% if enable_thumbnail_generation %}
{% if size_mobile == 'xsmall' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_xsmall_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_xsmall_jpg.url }}"
/>
{% elif size_mobile == 'small' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_small_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_small_jpg.url }}"
/>
{% elif size_mobile == 'medium' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_medium_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_medium_jpg.url }}"
/>
{% elif size_mobile == 'large' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_large_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_large_jpg.url }}"
/>
{% elif size_mobile == 'xlarge' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_xlarge_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_xlarge_jpg.url }}"
/>
{% elif size_mobile == 'xxlarge' %}
<source
media="(max-width: 768px)"
type="image/webp"
srcset="{{ book.cover_bw_book_xxlarge_webp.url }}"
/>
<source
media="(max-width: 768px)"
type="image/jpg"
srcset="{{ book.cover_bw_book_xxlarge_jpg.url }}"
/>
{% endif %}
{% if size == 'xsmall' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_xsmall_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_xsmall_jpg.url }}"/>
{% elif size == 'small' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_small_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_small_jpg.url }}"/>
{% elif size == 'medium' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_medium_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_medium_jpg.url }}"/>
{% elif size == 'large' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_large_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_large_jpg.url }}"/>
{% elif size == 'xlarge' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_xlarge_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_xlarge_jpg.url }}"/>
{% elif size == 'xxlarge' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_xxlarge_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_xxlarge_jpg.url }}"/>
{% endif %}
{% if size == 'xsmall' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_xsmall_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_xsmall_jpg.url }}"/>
{% elif size == 'small' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_small_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_small_jpg.url }}"/>
{% elif size == 'medium' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_medium_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_medium_jpg.url }}"/>
{% elif size == 'large' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_large_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_large_jpg.url }}"/>
{% elif size == 'xlarge' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_xlarge_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_xlarge_jpg.url }}"/>
{% elif size == 'xxlarge' %}
<source type="image/webp" srcset="{{ book.cover_bw_book_xxlarge_webp.url }}"/>
<source type="image/jpg" srcset="{{ book.cover_bw_book_xxlarge_jpg.url }}"/>
{% endif %}
<img
class="book-cover"
src="/images/{{ book.cover }}"
src="{% get_media_prefix %}{{ book.cover }}"
itemprop="thumbnailUrl"
alt="{{ book.alt_text|default:'' }}"
>
@ -116,7 +121,7 @@
<figure class="cover-container no-cover {{ cover_class }}">
<img
class="book-cover"
src="/static/images/no_cover.jpg"
src="{% static "images/no_cover.jpg" %}"
alt="{% trans "No cover" %}"
>
<figcaption class="cover-caption">