src/pyams_content/features/review/__init__.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 604 581b1be90ee7
equal deleted inserted replaced
557:a78ade534b97 558:d9c6b1d7fefa
    27 from pyams_mail.interfaces import IPrincipalMailInfo
    27 from pyams_mail.interfaces import IPrincipalMailInfo
    28 from pyams_security.interfaces import ISecurityManager, IProtectedObject
    28 from pyams_security.interfaces import ISecurityManager, IProtectedObject
    29 from pyams_security.interfaces.notification import INotificationSettings
    29 from pyams_security.interfaces.notification import INotificationSettings
    30 from pyramid_chameleon.interfaces import IChameleonTranslate
    30 from pyramid_chameleon.interfaces import IChameleonTranslate
    31 from pyramid_mailer.interfaces import IMailer
    31 from pyramid_mailer.interfaces import IMailer
    32 from zope.annotation.interfaces import IAnnotations
       
    33 from zope.location.interfaces import ISublocations
    32 from zope.location.interfaces import ISublocations
    34 from zope.traversing.interfaces import ITraversable
    33 from zope.traversing.interfaces import ITraversable
    35 
    34 
    36 # import packages
    35 # import packages
    37 from persistent import Persistent
    36 from persistent import Persistent
    38 from pyams_mail.message import HTMLMessage
    37 from pyams_mail.message import HTMLMessage
    39 from pyams_security.principal import MissingPrincipal
    38 from pyams_security.principal import MissingPrincipal
    40 from pyams_utils.adapter import adapter_config, ContextAdapter
    39 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
    41 from pyams_utils.container import BTreeOrderedContainer
    40 from pyams_utils.container import BTreeOrderedContainer
    42 from pyams_utils.registry import query_utility, get_utility
    41 from pyams_utils.registry import query_utility, get_utility
    43 from pyams_utils.request import check_request, query_request
    42 from pyams_utils.request import check_request, query_request
    44 from pyams_utils.url import absolute_url
    43 from pyams_utils.url import absolute_url
    45 from pyramid.events import subscriber
    44 from pyramid.events import subscriber
    46 from pyramid.threadlocal import get_current_registry
    45 from pyramid.threadlocal import get_current_registry
    47 from pyramid_chameleon.zpt import PageTemplateFile
    46 from pyramid_chameleon.zpt import PageTemplateFile
    48 from zope.container.contained import Contained
    47 from zope.container.contained import Contained
    49 from zope.interface import implementer
    48 from zope.interface import implementer
    50 from zope.location import locate
       
    51 from zope.schema.fieldproperty import FieldProperty
    49 from zope.schema.fieldproperty import FieldProperty
    52 
    50 
    53 from pyams_content import _
    51 from pyams_content import _
    54 
    52 
    55 
    53 
    95 
    93 
    96 
    94 
    97 @adapter_config(context=IReviewTarget, provides=IReviewComments)
    95 @adapter_config(context=IReviewTarget, provides=IReviewComments)
    98 def shared_content_review_comments_factory(context):
    96 def shared_content_review_comments_factory(context):
    99     """Shared content review comments factory"""
    97     """Shared content review comments factory"""
   100     annotations = IAnnotations(context)
    98     return get_annotation_adapter(context, REVIEW_COMMENTS_ANNOTATION_KEY, ReviewCommentsContainer,
   101     comments = annotations.get(REVIEW_COMMENTS_ANNOTATION_KEY)
    99                                   name='++review-comments++')
   102     if comments is None:
       
   103         comments = annotations[REVIEW_COMMENTS_ANNOTATION_KEY] = ReviewCommentsContainer()
       
   104         locate(comments, context, '++review-comments++')
       
   105     return comments
       
   106 
   100 
   107 
   101 
   108 @adapter_config(name='review-comments', context=IReviewTarget, provides=ITraversable)
   102 @adapter_config(name='review-comments', context=IReviewTarget, provides=ITraversable)
   109 class SharedContentReviewCommentsNamespace(ContextAdapter):
   103 class SharedContentReviewCommentsNamespace(ContextAdapter):
   110     """++review-comments++ namespace traverser"""
   104     """++review-comments++ namespace traverser"""