# HG changeset patch # User Thierry Florac # Date 1540366007 -7200 # Node ID 015342e304c875ccdda0e68b9fedeb44ba6c2e32 # Parent 4b44f2acda26e2b23c6188749be0017307ebe1cd Updated thumbnails adapter to get thumbnail for a given selection in a single step diff -r 4b44f2acda26 -r 015342e304c8 src/pyams_file/templates/picture.pt --- a/src/pyams_file/templates/picture.pt Wed Oct 24 09:25:11 2018 +0200 +++ b/src/pyams_file/templates/picture.pt Wed Oct 24 09:26:47 2018 +0200 @@ -1,11 +1,13 @@ + thumbnails tales:thumbnails(image);"> ${alt} diff -r 4b44f2acda26 -r 015342e304c8 src/pyams_file/thumbnail.py --- a/src/pyams_file/thumbnail.py Wed Oct 24 09:25:11 2018 +0200 +++ b/src/pyams_file/thumbnail.py Wed Oct 24 09:26:47 2018 +0200 @@ -12,29 +12,25 @@ __docformat__ = 'restructuredtext' +import re -# import standard library -import re import transaction - -# import interfaces -from pyams_file.interfaces import IImage, IThumbnails, IThumbnailer, IFileModifiedEvent, IWatermarker, IThumbnailFile -from pyams_utils.interfaces.tales import ITALESExtension +from BTrees import OOBTree +from persistent.dict import PersistentDict +from pyramid.events import subscriber +from pyramid.threadlocal import get_current_registry +from zope.interface import Interface, alsoProvides +from zope.lifecycleevent import ObjectAddedEvent, ObjectCreatedEvent, ObjectRemovedEvent +from zope.location import locate from zope.traversing.interfaces import ITraversable -# import packages -from BTrees import OOBTree -from persistent.dict import PersistentDict from pyams_file.file import FileFactory +from pyams_file.interfaces import IFileModifiedEvent, IImage, IThumbnailFile, IThumbnailer, IThumbnails, IWatermarker from pyams_file.zmi.image import render_image from pyams_utils.adapter import ContextAdapter, ContextRequestViewAdapter, adapter_config, get_annotation_adapter +from pyams_utils.interfaces.tales import ITALESExtension from pyams_utils.registry import query_utility from pyams_utils.request import check_request -from pyramid.events import subscriber -from pyramid.threadlocal import get_current_registry -from zope.interface import alsoProvides, Interface -from zope.lifecycleevent import ObjectAddedEvent, ObjectRemovedEvent, ObjectCreatedEvent -from zope.location import locate THUMBNAIL_ANNOTATIONS_KEY = 'pyams_file.image.thumbnails' @@ -107,7 +103,7 @@ geometries[selection_name] = geometry for current_thumbnail_name in list(self.thumbnails.keys()): if (current_thumbnail_name == selection_name) or \ - current_thumbnail_name.startswith('{0}:'.format(selection_name)): + current_thumbnail_name.startswith('{0}:'.format(selection_name)): self.delete_thumbnail(current_thumbnail_name) def clear_geometries(self): @@ -156,6 +152,13 @@ # check for existing thumbnail if thumbnail_name in self.thumbnails: return self.thumbnails[thumbnail_name] + # check for selection thumbnail, in "selection:size" format + if ':' in thumbnail_name: + selection_name, size = thumbnail_name.split(':', 1) + selection = self.get_selection(selection_name) + if selection is not None: + thumbnails = IThumbnails(selection) + return thumbnails.get_thumbnail(size) # check for matching one name, size = self.get_thumbnail_name(thumbnail_name, with_size=True) if name: