def add_comment(**kwargs): auth = kwargs['auth'] node = kwargs['node'] or kwargs['project'] if not node.comment_level: raise HTTPError(http.BAD_REQUEST) if not node.can_comment(auth): raise HTTPError(http.FORBIDDEN) guid = request.json.get('target') target = resolve_target(node, guid) content = request.json.get('content').strip() content = sanitize(content) if not content: raise HTTPError(http.BAD_REQUEST) if len(content) > settings.COMMENT_MAXLENGTH: raise HTTPError(http.BAD_REQUEST) comment = Comment.create( auth=auth, node=node, target=target, user=auth.user, content=content, ) comment.save() return { 'comment': serialize_comment(comment, auth) }, http.CREATED
def add_comment(auth, node, **kwargs): if not node.comment_level: raise HTTPError(http.BAD_REQUEST) if not node.can_comment(auth): raise HTTPError(http.FORBIDDEN) guid = request.json.get('target') target = resolve_target(node, guid) content = request.json.get('content').strip() content = sanitize(content) if not content: raise HTTPError(http.BAD_REQUEST) if len(content) > settings.COMMENT_MAXLENGTH: raise HTTPError(http.BAD_REQUEST) comment = Comment.create( auth=auth, node=node, target=target, user=auth.user, content=content, ) comment.save() context = dict( gravatar_url=auth.user.gravatar_url, content=content, target_user=target.user if is_reply(target) else None, parent_comment=target.content if is_reply(target) else "", url=node.absolute_url ) time_now = datetime.utcnow().replace(tzinfo=pytz.utc) sent_subscribers = notify( uid=node._id, event="comments", user=auth.user, node=node, timestamp=time_now, **context ) if is_reply(target): if target.user and target.user not in sent_subscribers: notify( uid=target.user._id, event='comment_replies', user=auth.user, node=node, timestamp=time_now, **context ) return { 'comment': serialize_comment(comment, auth) }, http.CREATED