54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
from django.template.loader import render_to_string
|
|
from django.utils.functional import cached_property
|
|
|
|
from wagtail.admin.compare import BlockComparison
|
|
from wagtail.blocks import ChooserBlock
|
|
|
|
from .shortcuts import get_rendition_or_not_found
|
|
|
|
|
|
class ImageChooserBlock(ChooserBlock):
|
|
@cached_property
|
|
def target_model(self):
|
|
from wagtail.images import get_image_model
|
|
|
|
return get_image_model()
|
|
|
|
@cached_property
|
|
def widget(self):
|
|
from wagtail.images.widgets import AdminImageChooser
|
|
|
|
return AdminImageChooser()
|
|
|
|
def render_basic(self, value, context=None):
|
|
if value:
|
|
return get_rendition_or_not_found(value, "original").img_tag()
|
|
else:
|
|
return ""
|
|
|
|
def get_comparison_class(self):
|
|
return ImageChooserBlockComparison
|
|
|
|
class Meta:
|
|
icon = "image"
|
|
|
|
|
|
class ImageChooserBlockComparison(BlockComparison):
|
|
def htmlvalue(self, val):
|
|
return render_to_string(
|
|
"wagtailimages/widgets/compare.html",
|
|
{
|
|
"image_a": val,
|
|
"image_b": val,
|
|
},
|
|
)
|
|
|
|
def htmldiff(self):
|
|
return render_to_string(
|
|
"wagtailimages/widgets/compare.html",
|
|
{
|
|
"image_a": self.val_a,
|
|
"image_b": self.val_b,
|
|
},
|
|
)
|