angrybeanie_wagtail/env/lib/python3.12/site-packages/wagtail/images/widgets.py

68 lines
2.3 KiB
Python
Raw Permalink Normal View History

2025-07-25 21:32:16 +10:00
from django import forms
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from wagtail.admin.staticfiles import versioned_static
from wagtail.admin.widgets import BaseChooser, BaseChooserAdapter
from wagtail.images import get_image_model
from wagtail.images.shortcuts import get_rendition_or_not_found
from wagtail.telepath import register
class AdminImageChooser(BaseChooser):
choose_one_text = _("Choose an image")
choose_another_text = _("Change image")
link_to_chosen_text = _("Edit this image")
template_name = "wagtailimages/widgets/image_chooser.html"
chooser_modal_url_name = "wagtailimages_chooser:choose"
icon = "image"
classname = "image-chooser"
js_constructor = "ImageChooser"
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.model = get_image_model()
def get_value_data_from_instance(self, instance):
data = super().get_value_data_from_instance(instance)
preview_image = get_rendition_or_not_found(instance, "max-165x165")
data["preview"] = {
"url": preview_image.url,
"width": preview_image.width,
"height": preview_image.height,
}
data["default_alt_text"] = instance.default_alt_text
return data
def get_context(self, name, value_data, attrs):
context = super().get_context(name, value_data, attrs)
context["preview"] = value_data.get("preview", {})
context["default_alt_text"] = value_data.get("default_alt_text", "")
return context
@property
def media(self):
return forms.Media(
js=[
versioned_static("wagtailimages/js/image-chooser-modal.js"),
versioned_static("wagtailimages/js/image-chooser.js"),
versioned_static("wagtailimages/js/image-chooser-telepath.js"),
]
)
class ImageChooserAdapter(BaseChooserAdapter):
js_constructor = "wagtail.images.widgets.ImageChooser"
@cached_property
def media(self):
return forms.Media(
js=[
versioned_static("wagtailimages/js/image-chooser-modal.js"),
versioned_static("wagtailimages/js/image-chooser-telepath.js"),
]
)
register(ImageChooserAdapter(), AdminImageChooser)