def update(self): discussion = IContentDiscussion(self.context) if discussion.status != 1: removeAllProxies(discussion).status = 1 self.comments = list(discussion.values()) self.postsAllowed = (discussion.status == 1 and checkPermission('zojax.AddComment', self.context)) if self.postsAllowed: self.reply = getMultiAdapter( (self.context, self.request), name='comment.html') self.reply.update()
class ManageDiscussion(PageletForm): label = _(u'Manage discussion') title = label size = 30 def update(self): self.discussion = IContentDiscussion(self.context) self.batch = Batch(self.discussion.values(), size=self.size, request=self.request) super(ManageDiscussion, self).update() @button.buttonAndHandler(_(u'Back'), name='content.discussion.back') def handleBack(self, action): self.redirect('.') @button.buttonAndHandler(_(u'Remove'), name='content.discussion.remove') def handleRemove(self, action): request = self.request ids = request.get('commentIds', ()) if not ids: IStatusMessage(request).add(_('Please select comments.')) else: for id in ids: if id in self.discussion: del self.discussion[id] IStatusMessage(request).add( _('Selected comments have been removed.')) self.redirect(self.request.getURL()) def canManage(self, comment): return checkPermission('zojax.ModifyContent', self.context) or \ checkPermission('zojax.ModifyContent', comment) def publishTraverse(self, request, name): self.discussion = IContentDiscussion(self.context) if name in self.discussion: comment = self.discussion[name] if self.canManage(comment): return LocationProxy(self.discussion[name], self, name) raise NotFound(self.context, name, request)