mirror of
https://github.com/Hopiu/django-imagekit.git
synced 2026-03-16 21:30:23 +00:00
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from django.utils.translation import ugettext_lazy as _
|
|
from django.template.loader import render_to_string
|
|
|
|
|
|
class AdminThumbnail(object):
|
|
"""
|
|
A convenience utility for adding thumbnails to Django's admin change list.
|
|
|
|
"""
|
|
short_description = _('Thumbnail')
|
|
allow_tags = True
|
|
|
|
def __init__(self, image_field, template=None):
|
|
"""
|
|
:param image_field: The name of the ImageField or ImageSpecField on the
|
|
model to use for the thumbnail.
|
|
:param template: The template with which to render the thumbnail
|
|
|
|
"""
|
|
self.image_field = image_field
|
|
self.template = template
|
|
|
|
def __call__(self, obj):
|
|
if callable(self.image_field):
|
|
thumbnail = self.image_field(obj)
|
|
else:
|
|
try:
|
|
thumbnail = getattr(obj, self.image_field)
|
|
except AttributeError:
|
|
raise Exception('The property %s is not defined on %s.' %
|
|
(self.image_field, obj.__class__.__name__))
|
|
|
|
original_image = getattr(thumbnail, 'source', None) or thumbnail
|
|
template = self.template or 'imagekit/admin/thumbnail.html'
|
|
|
|
return render_to_string(template, {
|
|
'model': obj,
|
|
'thumbnail': thumbnail,
|
|
'original_image': original_image,
|
|
})
|