def articles_comment_internal(req, uri=None, id=None): if not uri and not id: raise SERVER_RETURN(state.HTTP_NOT_FOUND) article = Article(id) article.uri = uri if uri and not article.get(req, key='uri'): raise SERVER_RETURN(state.HTTP_NOT_FOUND) if id and not article.get(req): raise SERVER_RETURN(state.HTTP_NOT_FOUND) comment = ArticleComment() comment.bind(req.form, user_agent=req.user_agent, ip=req.remote_addr) robot = True if req.form.getfirst("robot", "", str) else False qid = int(req.form.getfirst("qid", '0', str), 16) question, answer = robot_questions[qid] check = req.form.getfirst("answer", "", str) == answer if robot or not check: rv = RobotError(comment=comment, check=check) return (article, rv) if req.login: comment.author_id = req.login.id rv = comment.add(req, parent=req.form.getfirst('parent', '', str)) return (article, rv)
def articles_stats(req, arg): id = arg if isinstance(arg, int) else None uri = arg if isinstance(arg, unicode) else None article = Article(id) article.uri = uri if uri and not article.inc_data_key(req, key='uri', visits=1): raise SERVER_RETURN(state.HTTP_NOT_FOUND) if id and not article.inc_data_key(req, visits=1): raise SERVER_RETURN(state.HTTP_NOT_FOUND) return send_json(req, {'Ok': True})
def articles_detail(req, arg): id = arg if isinstance(arg, int) else None uri = arg if isinstance(arg, unicode) else None article = Article(id) article.uri = uri if uri and not article.get(req, key='uri'): raise SERVER_RETURN(state.HTTP_NOT_FOUND) if id and not article.get(req): raise SERVER_RETURN(state.HTTP_NOT_FOUND) if article.public_date.year == 1970: if req.login is None: raise SERVER_RETURN(state.HTTP_FORBIDDEN) if not do_match_right(req, module_rights): raise SERVER_RETURN(state.HTTP_FORBIDDEN) if (not do_check_right(req, right_editor) and article.author_id != req.login.id): raise SERVER_RETURN(state.HTTP_FORBIDDEN) return articles_detail_internal(req, article)