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)
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)
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)
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)
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)
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)
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)
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)
def description(self): return _(u'sticky_status_notification_delivery_description', default=u'Notify using status messages')
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')