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')
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
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