コード例 #1
0
ファイル: articles.py プロジェクト: ondratu/morias
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)
コード例 #2
0
ファイル: articles.py プロジェクト: ondratu/morias
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})
コード例 #3
0
ファイル: articles.py プロジェクト: ondratu/morias
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)