# HG changeset patch # User Thierry Florac # Date 1527509033 -7200 # Node ID 7244519886cc9a8c4f08751e1a2a585853a2fafd # Parent 13cd689be9a3b78aa6754b1e70ceb0241003c10f Updated annotations adapters diff -r 13cd689be9a3 -r 7244519886cc src/pyams_file/property.py --- a/src/pyams_file/property.py Mon May 28 09:56:31 2018 +0200 +++ b/src/pyams_file/property.py Mon May 28 14:03:53 2018 +0200 @@ -18,11 +18,11 @@ # import interfaces from pyams_file.interfaces import IFile, IFileInfo, IFileFieldContainer, DELETED_FILE from z3c.form.interfaces import NOT_CHANGED -from zope.annotation.interfaces import IAnnotations from zope.schema.interfaces import IField # import packages from pyams_file.file import FileFactory +from pyams_utils.adapter import get_annotation_adapter from pyramid.threadlocal import get_current_registry from zope.interface import alsoProvides from zope.lifecycleevent import ObjectCreatedEvent, ObjectRemovedEvent, ObjectAddedEvent @@ -102,9 +102,7 @@ # store file attributes of instance if not IFileFieldContainer.providedBy(instance): alsoProvides(instance, IFileFieldContainer) - annotations = IAnnotations(instance) - attributes = annotations.get(FILE_CONTAINER_ATTRIBUTES) - if attributes is None: - attributes = annotations[FILE_CONTAINER_ATTRIBUTES] = set() + attributes = get_annotation_adapter(instance, FILE_CONTAINER_ATTRIBUTES, set, + notify=False, locate=False) attributes.add(self.__name) registry.notify(ObjectAddedEvent(value, instance, name)) diff -r 13cd689be9a3 -r 7244519886cc src/pyams_file/thumbnail.py --- a/src/pyams_file/thumbnail.py Mon May 28 09:56:31 2018 +0200 +++ b/src/pyams_file/thumbnail.py Mon May 28 14:03:53 2018 +0200 @@ -20,13 +20,12 @@ # import interfaces from pyams_file.interfaces import IImage, IThumbnail, IThumbnailer, IFileModifiedEvent, IWatermarker, IThumbnailFile from pyams_utils.interfaces.tales import ITALESExtension -from zope.annotation.interfaces import IAnnotations from zope.traversing.interfaces import ITraversable # import packages from persistent.dict import PersistentDict from pyams_file.file import FileFactory -from pyams_utils.adapter import ContextAdapter, ContextRequestViewAdapter, adapter_config +from pyams_utils.adapter import ContextAdapter, ContextRequestViewAdapter, adapter_config, get_annotation_adapter from pyams_utils.registry import query_utility from pyams_utils.request import check_request from pyramid.events import subscriber @@ -50,11 +49,8 @@ def __init__(self, image): self.image = image - annotations = IAnnotations(image) - thumbnails = annotations.get(THUMBNAIL_ANNOTATIONS_KEY) - if thumbnails is None: - thumbnails = annotations[THUMBNAIL_ANNOTATIONS_KEY] = PersistentDict() - self.thumbnails = thumbnails + self.thumbnails = get_annotation_adapter(image, THUMBNAIL_ANNOTATIONS_KEY, PersistentDict, + notify=False, locate=False) def get_image_size(self): return self.image.get_image_size() @@ -89,8 +85,7 @@ return None def get_geometry(self, selection_name): - annotations = IAnnotations(self.image) - geometries = annotations.get(THUMBNAIL_GEOMETRY_KEY, {}) + geometries = get_annotation_adapter(self.image, THUMBNAIL_GEOMETRY_KEY, default={}) # get default geometry for custom thumbnails if ':' in selection_name: selection_name, options = selection_name.split(':', 1) @@ -105,10 +100,8 @@ return thumbnailer.get_default_geometry(options) def set_geometry(self, selection_name, geometry): - annotations = IAnnotations(self.image) - geometries = annotations.get(THUMBNAIL_GEOMETRY_KEY) - if geometries is None: - geometries = annotations[THUMBNAIL_GEOMETRY_KEY] = PersistentDict() + geometries = get_annotation_adapter(self.image, THUMBNAIL_GEOMETRY_KEY, PersistentDict, + notify=False, locate=False) geometries[selection_name] = geometry for current_thumbnail_name in self.thumbnails.copy(): if (current_thumbnail_name == selection_name) or \ @@ -116,8 +109,7 @@ self.delete_thumbnail(current_thumbnail_name) def clear_geometries(self): - annotations = IAnnotations(self.image) - geometries = annotations.get(THUMBNAIL_GEOMETRY_KEY) + geometries = get_annotation_adapter(self.image, THUMBNAIL_GEOMETRY_KEY) if geometries is not None: for geometry_name in geometries.copy(): del geometries[geometry_name]