class ThumbnailUrlNode(Node): def __init__(self, path, size, options): self.path = path self.size = size self.options = options self.thumbnails_cache = ImageCache(settings.THUMBNAIL_ROOT) def render(self, context): resolved_options = dict( zip([str(opt) for opt in self.options.keys()], [self.options[v].resolve(context) for v in self.options]) ) size = [int(z.resolve(context)) for z in self.size] path = str(self.path.resolve(context)) if not path: raise TemplateSyntaxError("Provided image path is empty") if not os.path.isabs(path): path = os.path.join(settings.MEDIA_ROOT, path) try: processor = ImageProcessor() processor.add_filter(Image.Image.thumbnail, size, resample=Image.ANTIALIAS) return "%s%s" % ( settings.THUMBNAIL_PREFIX, os.path.basename(self.thumbnails_cache.get_image_file(processor, path)), ) except (IOError, OSError), e: if not settings.FAIL_SILENTLY: raise e return ""
def __init__(self, path, size, options): self.path = path self.size = size self.options = options self.thumbnails_cache = ImageCache(settings.THUMBNAIL_ROOT)