コード例 #1
0
def object_state_changed_event(obj, evt):
    """ """
    request = getattr(obj, 'REQUEST', None)
    if not request:
        return
    if not IStickyStatusMessagesLayer.providedBy(request):
        return

    folder = obj.aq_parent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    workflowTool = getToolByName(obj, "portal_workflow")
    chain = workflowTool.getChainFor(obj)
    status = workflowTool.getStatusOf(chain[0], obj)
    state = status["review_state"]
    message = _(
                u'The workflow state of %s <a href="%s">%s</a> ' \
                'in <a href="%s">%s</a> has been changed to <em>%s</em>' \
                    % ( obj.portal_type,
                        '/'.join(obj.getPhysicalPath()),
                        safe_unicode(obj_title),
                        '/'.join(folder.getPhysicalPath()),
                        safe_unicode(folder_title),
                        state,
                        )
                )

    utils.set_sticky_status_message(obj, message)
コード例 #2
0
def object_moved_event(obj, evt):
    """ """
    request = getattr(obj, 'REQUEST', None)
    if not request:
        return
    if not IStickyStatusMessagesLayer.providedBy(request):
        return

    if obj.isTemporary() or not evt.newParent or not evt.oldParent:
        return

    if 'portal_factory' in evt.oldParent.getPhysicalPath():
        return

    folder = evt.newParent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    message = _(
                u'%s <em>%s</em> moved into <a href="%s">%s</a>' \
                                        % ( obj.portal_type,
                                            safe_unicode(obj_title),
                                            '/'.join(folder.getPhysicalPath()),
                                            safe_unicode(folder_title),
                                            )
                )
    utils.set_sticky_status_message(obj, message)
コード例 #3
0
def object_removed_event(obj, evt):
    """ """
    folder = obj.aq_parent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    message = _(
                u'%s <em>%s</em> removed from <a href="%s">%s</a>' \
                                        % ( obj.portal_type, 
                                            obj_title.decode('utf-8'), 
                                            '/'.join(folder.getPhysicalPath()),
                                            folder_title.decode('utf-8'), 
                                            )
                )
    utils.set_sticky_status_message(obj, message)
コード例 #4
0
def object_parent_edited_event(obj, evt):
    """
    Notify children when the parent is edited
    """
    folder = obj.aq_parent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    message = _(
                u'%s <a href="%s">%s</a> edited in <a href="%s">%s</a>' \
                                    % ( obj.portal_type, 
                                        '/'.join(obj.getPhysicalPath()), 
                                        obj_title.decode('utf-8'), 
                                        '/'.join(folder.getPhysicalPath()),
                                        folder_title.decode('utf-8'), 
                                        )
                )
    for child in obj.objectIds():
        utils.set_sticky_status_message(obj[child], message)
コード例 #5
0
def object_removed_event(obj, evt):
    """ """
    request = getattr(obj, 'REQUEST', None)
    if not request:
        return
    if not IStickyStatusMessagesLayer.providedBy(request):
        return

    folder = obj.aq_parent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    message = _(
                u'%s <em>%s</em> removed from <a href="%s">%s</a>' \
                                        % ( obj.portal_type,
                                            safe_unicode(obj_title),
                                            '/'.join(folder.getPhysicalPath()),
                                             safe_unicode(folder_title),
                                            )
                )
    utils.set_sticky_status_message(obj, message)
コード例 #6
0
def object_moved_event(obj, evt):
    """ """
    if obj.isTemporary() or not evt.newParent or not evt.oldParent:
        return

    if 'portal_factory' in evt.oldParent.getPhysicalPath():
        return

    folder = evt.newParent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    message = _(
                u'%s <em>%s</em> moved into <a href="%s">%s</a>' \
                                        % ( obj.portal_type, 
                                            obj_title.decode('utf-8'), 
                                            '/'.join(folder.getPhysicalPath()),
                                            folder_title.decode('utf-8'), 
                                            )
                )
    utils.set_sticky_status_message(obj, message)
コード例 #7
0
def object_state_changed_event(obj, evt):
    """ """
    folder = obj.aq_parent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    workflowTool = getToolByName(obj, "portal_workflow")
    chain = workflowTool.getChainFor(obj)
    status = workflowTool.getStatusOf(chain[0], obj)
    state = status["review_state"]
    message = _(
                u'The workflow state of %s <a href="%s">%s</a> ' \
                'in <a href="%s">%s</a> has been changed to <em>%s</em>' \
                    % ( obj.portal_type, 
                        '/'.join(obj.getPhysicalPath()), 
                        obj_title.decode('utf-8'), 
                        '/'.join(folder.getPhysicalPath()),
                        folder_title.decode('utf-8'), 
                        state, 
                        )
                )

    utils.set_sticky_status_message(obj, message)
コード例 #8
0
def object_parent_edited_event(obj, evt):
    """ Notify children when the parent is edited
    """
    request = getattr(obj, 'REQUEST', None)
    if not request:
        return
    if not IStickyStatusMessagesLayer.providedBy(request):
        return

    folder = obj.aq_parent
    folder_title = folder.Title() or ''
    obj_title = obj.Title() or ''
    message = _(
                u'%s <a href="%s">%s</a> edited in <a href="%s">%s</a>' \
                                    % ( obj.portal_type,
                                        '/'.join(obj.getPhysicalPath()),
                                        safe_unicode(obj_title),
                                        '/'.join(folder.getPhysicalPath()),
                                        safe_unicode(folder_title),
                                        )
                )
    for child in obj.objectIds():
        utils.set_sticky_status_message(obj[child], message)
コード例 #9
0
 def description(self):
     return _(u'sticky_status_notification_delivery_description',
                default=u'Notify using status messages')
コード例 #10
0
from datetime import datetime
from zope.interface import implements
from zope.annotation.interfaces import IAnnotations
from zope.i18n import interpolate
from slc.stickystatusmessages import StickyStatusMessageFactory as _
from slc.stickystatusmessages.utils import set_sticky_status_message
from slc.stickystatusmessages.config import SSMKEY

from Products.CMFCore.utils import getToolByName

_messages = {
    'item_creation': _('Item <a href="$u">$t</a> has been created'),
    'item_modification': _('Item <a href="$u">$t</a> has been modified'),
    'item_removal': _('Item $t has been removed'),
    'wf_transition': _('Status of <a href="$u">$t</a> has changed, it is now $s'),
    'member_registration': _('Member $m registered'),
    'member_modification': _('Member $m was modified'),
    'discussion_item_creation': _('<a href="$u">Discussion item</a> was created'),
}

try:
    from Products.CMFNotification.interfaces import INotificationDelivery

    class StickyStatusNotificationDelivery(object):
        implements(INotificationDelivery)

        @property
        def description(self):
            return _(u'sticky_status_notification_delivery_description',
                       default=u'Notify using status messages')