def comment(self, slug, **values): """Post a comment from :class:`~mediacore.forms.media.PostCommentForm`. :param slug: The media :attr:`~mediacore.model.media.Media.slug` :returns: Redirect to :meth:`view` page for media. """ if tmpl_context.form_errors: if request.is_xhr: return dict( success = False, errors = tmpl_context.form_errors ) else: redirect(action='view') media = fetch_row(Media, slug=slug) c = Comment() c.status = 'unreviewed' c.author = AuthorWithIP(values['name'], None, request.environ['REMOTE_ADDR']) c.subject = 'Re: %s' % media.title c.body = helpers.clean_xhtml(values['body']) media.comments.append(c) DBSession.add(media) email.send_comment_notification(media, c) if request.is_xhr: return dict(success = True) else: redirect(action='view')
def comment(self, slug, name="", email=None, body="", **kwargs): """Post a comment from :class:`~mediacore.forms.comments.PostCommentForm`. :param slug: The media :attr:`~mediacore.model.media.Media.slug` :returns: Redirect to :meth:`view` page for media. """ def result(success, message=None, comment=None): if request.is_xhr: result = dict(success=success, message=message) if comment: result["comment"] = render("comments/_list.html", {"comment_to_render": comment}, method="xhtml") return result elif success: return redirect(action="view") else: return self.view(slug, name=name, email=email, body=body, **kwargs) akismet_key = request.settings["akismet_key"] if akismet_key: akismet = Akismet(agent=USER_AGENT) akismet.key = akismet_key akismet.blog_url = request.settings["akismet_url"] or url_for("/", qualified=True) akismet.verify_key() data = { "comment_author": name.encode("utf-8"), "user_ip": request.environ.get("REMOTE_ADDR"), "user_agent": request.environ.get("HTTP_USER_AGENT", ""), "referrer": request.environ.get("HTTP_REFERER", "unknown"), "HTTP_ACCEPT": request.environ.get("HTTP_ACCEPT"), } if akismet.comment_check(body.encode("utf-8"), data): return result(False, _(u"Your comment has been rejected.")) media = fetch_row(Media, slug=slug) request.perm.assert_permission(u"view", media.resource) c = Comment() name = filter_vulgarity(name) c.author = AuthorWithIP(name, email, request.environ["REMOTE_ADDR"]) c.subject = "Re: %s" % media.title c.body = filter_vulgarity(body) require_review = request.settings["req_comment_approval"] if not require_review: c.reviewed = True c.publishable = True media.comments.append(c) DBSession.flush() send_comment_notification(media, c) if require_review: message = _("Thank you for your comment! We will post it just as " "soon as a moderator approves it.") return result(True, message=message) else: return result(True, comment=c)
def comment(self, slug, **values): """Post a comment from :class:`~mediacore.forms.comments.PostCommentForm`. :param slug: The media :attr:`~mediacore.model.media.Media.slug` :returns: Redirect to :meth:`view` page for media. """ akismet_key = helpers.fetch_setting('akismet_key') akismet_url = helpers.fetch_setting('akismet_url') if akismet_key: akismet = Akismet(agent='MediaCore/%s' % MEDIACORE_VERSION) akismet.key = akismet_key akismet.blog_url = akismet_url or url_for('/', qualified=True) akismet.verify_key() data = {'comment_author': values['name'].encode('utf-8'), 'user_ip': request.environ.get('REMOTE_ADDR'), 'user_agent': request.environ.get('HTTP_USER_AGENT'), 'referrer': request.environ.get('HTTP_REFERER', 'unknown'), 'HTTP_ACCEPT': request.environ.get('HTTP_ACCEPT')} if akismet.comment_check(values['body'].encode('utf-8'), data): title = "Comment Rejected" text = "Your comment appears to be spam and has been rejected." add_transient_message('comment_posted', title, text) redirect(action='view', anchor='top') media = fetch_row(Media, slug=slug) c = Comment() c.author = AuthorWithIP( values['name'], values['email'], request.environ['REMOTE_ADDR'] ) c.subject = 'Re: %s' % media.title c.body = values['body'] require_review = asbool(helpers.fetch_setting('req_comment_approval')) if not require_review: c.reviewed = True c.publishable = True media.comments.append(c) DBSession.add(media) email.send_comment_notification(media, c) if require_review: title = "Thanks for your comment!" text = "We will post it just as soon as a moderator approves it." add_transient_message('comment_posted', title, text) redirect(action='view', anchor='top') else: redirect(action='view', anchor='comment-%s' % c.id)
def comment(self, slug, name='', email=None, body='', **kwargs): """Post a comment from :class:`~mediacore.forms.comments.PostCommentForm`. :param slug: The media :attr:`~mediacore.model.media.Media.slug` :returns: Redirect to :meth:`view` page for media. """ def result(success, message=None, comment=None): if request.is_xhr: result = dict(success=success, message=message) if comment: result['comment'] = render('comments/_list.html', {'comment_to_render': comment}, method='xhtml') return result elif success: return redirect(action='view') else: return self.view(slug, name=name, email=email, body=body, **kwargs) if request.settings['comments_engine'] != 'mediacore': abort(404) akismet_key = request.settings['akismet_key'] if akismet_key: akismet = Akismet(agent=USER_AGENT) akismet.key = akismet_key akismet.blog_url = request.settings['akismet_url'] or \ url_for('/', qualified=True) akismet.verify_key() data = { 'comment_author': name.encode('utf-8'), 'user_ip': request.environ.get('REMOTE_ADDR'), 'user_agent': request.environ.get('HTTP_USER_AGENT', ''), 'referrer': request.environ.get('HTTP_REFERER', 'unknown'), 'HTTP_ACCEPT': request.environ.get('HTTP_ACCEPT') } if akismet.comment_check(body.encode('utf-8'), data): return result(False, _(u'Your comment has been rejected.')) media = fetch_row(Media, slug=slug) request.perm.assert_permission(u'view', media.resource) c = Comment() name = filter_vulgarity(name) c.author = AuthorWithIP(name, email, request.environ['REMOTE_ADDR']) c.subject = 'Re: %s' % media.title c.body = filter_vulgarity(body) require_review = request.settings['req_comment_approval'] if not require_review: c.reviewed = True c.publishable = True media.comments.append(c) DBSession.flush() send_comment_notification(media, c) if require_review: message = _('Thank you for your comment! We will post it just as ' 'soon as a moderator approves it.') return result(True, message=message) else: return result(True, comment=c)
def comment(self, slug, name='', email=None, body='', **kwargs): """Post a comment from :class:`~mediacore.forms.comments.PostCommentForm`. :param slug: The media :attr:`~mediacore.model.media.Media.slug` :returns: Redirect to :meth:`view` page for media. """ def result(success, message=None, comment=None): if request.is_xhr: result = dict(success=success, message=message) if comment: result['comment'] = render('comments/_list.html', {'comment_to_render': comment}, method='xhtml') return result elif success: return redirect(action='view') else: return self.view(slug, name=name, email=email, body=body, **kwargs) if request.settings['comments_engine'] != 'mediacore': abort(404) akismet_key = request.settings['akismet_key'] if akismet_key: akismet = Akismet(agent=USER_AGENT) akismet.key = akismet_key akismet.blog_url = request.settings['akismet_url'] or \ url_for('/', qualified=True) akismet.verify_key() data = {'comment_author': name.encode('utf-8'), 'user_ip': request.environ.get('REMOTE_ADDR'), 'user_agent': request.environ.get('HTTP_USER_AGENT', ''), 'referrer': request.environ.get('HTTP_REFERER', 'unknown'), 'HTTP_ACCEPT': request.environ.get('HTTP_ACCEPT')} if akismet.comment_check(body.encode('utf-8'), data): return result(False, _(u'Your comment has been rejected.')) media = fetch_row(Media, slug=slug) request.perm.assert_permission(u'view', media.resource) c = Comment() name = filter_vulgarity(name) c.author = AuthorWithIP(name, email, request.environ['REMOTE_ADDR']) c.subject = 'Re: %s' % media.title c.body = filter_vulgarity(body) require_review = request.settings['req_comment_approval'] if not require_review: c.reviewed = True c.publishable = True media.comments.append(c) DBSession.flush() send_comment_notification(media, c) if require_review: message = _('Thank you for your comment! We will post it just as ' 'soon as a moderator approves it.') return result(True, message=message) else: return result(True, comment=c)