def setParentActive(obj, event):
    parent = obj.aq_parent
    if IThreaded.providedBy(parent):
        pw = getToolByName(obj, 'portal_workflow')
        reviewState = pw.getInfoFor(parent, 'review_state')
        if reviewState == 'published':
            pw.doActionFor(parent, 'activate')
예제 #2
0
    def publishTraverse(self, request, name):
        target = super(WorkspacePublishTraverse, self)\
            .publishTraverse(request, name)

        if not request.path:
            if IThreaded.providedBy(target):
                self.redirect('/conversation#entryanchor-' + target.id)
            elif IRichMetaData.providedBy(target):
                self.redirect('/material#materialanchor-' + target.id)
            elif IATEvent.providedBy(target):
                self.redirect('#eventanchor-' + target.id)

        return target
예제 #3
0
def send_reply_notifications(obj, event):
    workspace = obj.aq_parent
    while not IWorkspace.providedBy(workspace):
        workspace = workspace.aq_parent

    messenger = IMessenger(workspace)

    root = obj.aq_parent
    while IThreaded.providedBy(root.aq_parent):
        root = root.aq_parent

    catalog = getToolByName(obj, 'portal_catalog')
    replies = catalog({
        'object_provides': IThreaded.__identifier__,
        'path': '/'.join(root.getPhysicalPath()), })
    recipients = set([b.Creator for b in replies])
    for uid in recipients:
        if messenger.getAttrForUid(uid, 'recieveNotifications', True):
            try:
                messenger.notifyAboutNewReply(uid, obj)
            except:
                pass