From 6841a30d8fec133b71ceea518049a523f534e75f Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 1 May 2019 13:16:25 +0200 Subject: [PATCH] Fix #1153 -- Show preview of uploaded pictures in the backend --- .../forms/widgets/thumbnailed_file_input.html | 6 ++++++ src/pretix/control/forms/__init__.py | 12 +++++++++++- src/pretix/control/templates/pretixcontrol/base.html | 2 ++ src/pretix/static/pretixcontrol/js/ui/main.js | 2 +- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 src/pretix/base/templates/pretixbase/forms/widgets/thumbnailed_file_input.html diff --git a/src/pretix/base/templates/pretixbase/forms/widgets/thumbnailed_file_input.html b/src/pretix/base/templates/pretixbase/forms/widgets/thumbnailed_file_input.html new file mode 100644 index 0000000000..73fa3003c1 --- /dev/null +++ b/src/pretix/base/templates/pretixbase/forms/widgets/thumbnailed_file_input.html @@ -0,0 +1,6 @@ +{% load thumb %} +{% if widget.is_initial %}{{ widget.initial_text }}: {{ widget.value }}{% if not widget.required %} + + {% endif %}{% if widget.value.is_img %}
{% endif %}
+ {{ widget.input_text }}:{% endif %} + diff --git a/src/pretix/control/forms/__init__.py b/src/pretix/control/forms/__init__.py index 615b149895..61e3c3ddb2 100644 --- a/src/pretix/control/forms/__init__.py +++ b/src/pretix/control/forms/__init__.py @@ -4,6 +4,7 @@ import os from django import forms from django.conf import settings from django.core.exceptions import ValidationError +from django.core.files import File from django.forms.utils import from_current_timezone from django.utils.translation import ugettext_lazy as _ @@ -66,11 +67,20 @@ def selector(values, prop): class ClearableBasenameFileInput(forms.ClearableFileInput): + template_name = 'pretixbase/forms/widgets/thumbnailed_file_input.html' - class FakeFile: + class FakeFile(File): def __init__(self, file): self.file = file + @property + def name(self): + return self.file.name + + @property + def is_img(self): + return any(self.file.name.endswith(e) for e in ('.jpg', '.jpeg', '.png', '.gif')) + def __str__(self): return os.path.basename(self.file.name).split('.', 1)[-1] diff --git a/src/pretix/control/templates/pretixcontrol/base.html b/src/pretix/control/templates/pretixcontrol/base.html index dc3f8ae8c4..00aec5afed 100644 --- a/src/pretix/control/templates/pretixcontrol/base.html +++ b/src/pretix/control/templates/pretixcontrol/base.html @@ -12,6 +12,7 @@ {{ settings.PRETIX_INSTANCE_NAME }} {% compress css %} + {% endcompress %} {% if DEBUG %} + {% endcompress %} {{ html_head|safe }} diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js index b208c623d6..26187e7c33 100644 --- a/src/pretix/static/pretixcontrol/js/ui/main.js +++ b/src/pretix/static/pretixcontrol/js/ui/main.js @@ -226,7 +226,6 @@ var form_handlers = function (el) { 'shade.')); $note.addClass("text-danger").removeClass("text-success").removeClass("text-warning"); } - console.log(c); }); el.find("input[data-checkbox-dependency]").each(function () { @@ -444,6 +443,7 @@ $(function () { "use strict"; $("body").removeClass("nojs"); + lightbox.init(); $("[data-formset]").formset( {