From bf0f0567ea0f80808ef56230420a9cfa84737d49 Mon Sep 17 00:00:00 2001 From: Lukas Winkler Date: Tue, 26 Sep 2023 19:29:56 +0200 Subject: [PATCH] support images in notes and portrait images --- .../0008_alter_campaign_language.py | 46 +++++++++++++++++++ common/templatetags/thumbnails.py | 15 +++++- notes/forms.py | 2 +- notes/templates/notes/detail.jinja | 2 +- 4 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 campaigns/migrations/0008_alter_campaign_language.py diff --git a/campaigns/migrations/0008_alter_campaign_language.py b/campaigns/migrations/0008_alter_campaign_language.py new file mode 100644 index 0000000..7cb0b7d --- /dev/null +++ b/campaigns/migrations/0008_alter_campaign_language.py @@ -0,0 +1,46 @@ +# Generated by Django 4.2.5 on 2023-09-18 14:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("campaigns", "0007_campaign_document"), + ] + + operations = [ + migrations.AlterField( + model_name="campaign", + name="language", + field=models.CharField( + choices=[ + ("simple", "Other"), + ("arabic", "Arabic"), + ("danish", "Danish"), + ("dutch", "Dutch"), + ("english", "English"), + ("finnish", "Finnish"), + ("french", "French"), + ("german", "German"), + ("greek", "Greek"), + ("hungarian", "Hungarian"), + ("indonesian", "Indonesian"), + ("irish", "Irish"), + ("italian", "Italian"), + ("lithuanian", "Lithuanian"), + ("nepali", "Nepali"), + ("norwegian", "Norwegian"), + ("portuguese", "Portuguese"), + ("romanian", "Romanian"), + ("russian", "Russian"), + ("spanish", "Spanish"), + ("swedish", "Swedish"), + ("tamil", "Tamil"), + ("turkish", "Turkish"), + ], + help_text="This is needed for the full text search to work optimally.", + max_length=100, + verbose_name="Language", + ), + ), + ] diff --git a/common/templatetags/thumbnails.py b/common/templatetags/thumbnails.py index 18df994..a9d011e 100644 --- a/common/templatetags/thumbnails.py +++ b/common/templatetags/thumbnails.py @@ -1,6 +1,6 @@ from django_jinja import library from sorl.thumbnail import get_thumbnail -from sorl.thumbnail.templatetags.thumbnail import resolution +from sorl.thumbnail.templatetags.thumbnail import resolution, is_portrait as is_portrait_original from rpg_notes import settings @@ -8,9 +8,22 @@ from rpg_notes import settings @library.global_function def thumbnail(*args, **kwargs): kwargs["upscale"] = False + size = args[1] + file = args[0] + if "x" not in size: + if is_portrait_original(file): + size = f"x{size}" + args = list(args) + args[1] = size + args = tuple(args) return get_thumbnail(*args, **kwargs) +@library.filter +def is_portrait(file): + return is_portrait_original(file) + + @library.filter def srcset(filename): """ Automatically generate the srcset value based on diff --git a/notes/forms.py b/notes/forms.py index 4017b5a..756b17f 100644 --- a/notes/forms.py +++ b/notes/forms.py @@ -6,4 +6,4 @@ from notes.models import Note class NoteForm(ModelForm): class Meta: model = Note - fields = ["name", "aliases", "description_md", "parent"] + fields = ["name", "aliases", "description_md", "parent", "image"] diff --git a/notes/templates/notes/detail.jinja b/notes/templates/notes/detail.jinja index 25159c0..de53e78 100644 --- a/notes/templates/notes/detail.jinja +++ b/notes/templates/notes/detail.jinja @@ -42,7 +42,7 @@
{{ note.part_of }}
{% endif %} {% if note.image %} - {% set im=thumbnail(note.image, "860", crop="center") %} + {% set im=thumbnail(note.image, "500", crop="center") %}