# HG changeset patch # User Thierry Florac # Date 1527509248 -7200 # Node ID f782ba6a001b60e4f904eab18bf9d32a447b814c # Parent 09800bab28db64216712a2d4ccf8cd2c0ec3fb09 Updated annotations adapters diff -r 09800bab28db -r f782ba6a001b src/pyams_workflow/content.py --- a/src/pyams_workflow/content.py Mon May 28 12:38:57 2018 +0200 +++ b/src/pyams_workflow/content.py Mon May 28 14:07:28 2018 +0200 @@ -22,12 +22,11 @@ from pyams_workflow.interfaces import IWorkflowManagedContent, IWorkflowPublicationInfo, IWorkflow, IWorkflowVersions, \ IWorkflowPublicationSupport, IObjectClonedEvent, IWorkflowState, VersionError, VERSION_DISPLAY, \ DISPLAY_FIRST_VERSION, DISPLAY_CURRENT_VERSION -from zope.annotation.interfaces import IAnnotations from zope.dublincore.interfaces import IZopeDublinCore # import packages from persistent import Persistent -from pyams_utils.adapter import adapter_config +from pyams_utils.adapter import adapter_config, get_annotation_adapter from pyams_utils.date import format_datetime, format_date, SH_DATE_FORMAT from pyams_utils.registry import get_utility from pyams_utils.request import check_request @@ -36,11 +35,8 @@ from pyams_utils.vocabulary import vocabulary_config from pyams_workflow.versions import WorkflowHistoryItem from pyramid.events import subscriber -from pyramid.threadlocal import get_current_registry from zope.container.contained import Contained from zope.interface import implementer -from zope.lifecycleevent import ObjectCreatedEvent -from zope.location import locate from zope.schema.fieldproperty import FieldProperty from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm @@ -200,14 +196,7 @@ @adapter_config(context=IWorkflowPublicationSupport, provides=IWorkflowPublicationInfo) def workflow_content_publication_info_factory(context): """Workflow content info factory""" - annotations = IAnnotations(context) - info = annotations.get(WORKFLOW_CONTENT_KEY) - if info is None: - info = annotations[WORKFLOW_CONTENT_KEY] = WorkflowContentPublicationInfo() - registry = get_current_registry() - registry.notify(ObjectCreatedEvent(info)) - locate(info, context) - return info + return get_annotation_adapter(context, WORKFLOW_CONTENT_KEY, WorkflowContentPublicationInfo) @subscriber(IObjectClonedEvent) diff -r 09800bab28db -r f782ba6a001b src/pyams_workflow/versions.py --- a/src/pyams_workflow/versions.py Mon May 28 12:38:57 2018 +0200 +++ b/src/pyams_workflow/versions.py Mon May 28 14:07:28 2018 +0200 @@ -20,7 +20,6 @@ from pyams_security.interfaces import IPrincipalInfo from pyams_workflow.interfaces import IWorkflowVersions, IWorkflowManagedContent, VersionError, IWorkflowState, \ IWorkflowVersion, IWorkflowStateHistoryItem, IWorkflowTransitionEvent, IWorkflowVersionTransitionEvent, IWorkflow -from zope.annotation.interfaces import IAnnotations from zope.location.interfaces import ISublocations from zope.traversing.interfaces import ITraversable @@ -28,16 +27,13 @@ from persistent import Persistent from persistent.list import PersistentList from persistent.mapping import PersistentMapping -from pyams_utils.adapter import adapter_config, ContextAdapter +from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter from pyams_utils.registry import get_utility from pyams_utils.request import check_request, query_request from pyams_utils.traversing import get_parent from pyramid.events import subscriber -from pyramid.threadlocal import get_current_registry from zope.container.folder import Folder from zope.interface import implementer, alsoProvides -from zope.lifecycleevent import ObjectCreatedEvent -from zope.location import locate from zope.schema.fieldproperty import FieldProperty @@ -138,13 +134,7 @@ @adapter_config(context=IWorkflowVersion, provides=IWorkflowState) def workflow_version_state_factory(context): """Workflow content version state factory""" - annotations = IAnnotations(context) - state = annotations.get(WORKFLOW_VERSION_KEY) - if state is None: - state = annotations[WORKFLOW_VERSION_KEY] = WorkflowVersionState() - registry = get_current_registry() - registry.notify(ObjectCreatedEvent(state)) - return state + return get_annotation_adapter(context, WORKFLOW_VERSION_KEY, WorkflowVersionState) @implementer(IWorkflowVersions) @@ -280,14 +270,8 @@ @adapter_config(context=IWorkflowManagedContent, provides=IWorkflowVersions) def workflow_content_versions_factory(context): """Workflow versions factory""" - annotations = IAnnotations(context) - versions = annotations.get(WORKFLOW_VERSIONS_KEY) - if versions is None: - versions = annotations[WORKFLOW_VERSIONS_KEY] = WorkflowVersions() - registry = get_current_registry() - registry.notify(ObjectCreatedEvent(versions)) - locate(versions, context, '++versions++') - return versions + return get_annotation_adapter(context, WORKFLOW_VERSIONS_KEY, WorkflowVersions, + name='++versions++') @adapter_config(context=IWorkflowVersion, provides=IWorkflowVersions)