Пример #1
0
def insert_Q_data(q_num, text, author="DASymposium", year=DEFAULT_YEAR, uniq=True):
    """
    問題データをデータベースに登録する。
    uniq==Trueのとき、q_numとauthorが重複する場合、登録は失敗する。
    """
    #重複チェック
    if uniq:
        q = get_user_Q_data(q_num, author, year)
        if q is not None:
            return (False, "Error: Q%d data already exists" % q_num) # 重複エラー
    # 問題データのチェック
    (size, line_num, line_mat, msg, ok) = numberlink.read_input_data(text)
    if not ok:
        return (False, "Error: syntax error in Q data\n"+msg)
    # text2は、textを正規化したテキストデータ(改行コードなど)
    text2 = numberlink.generate_Q_data(size, line_num, line_mat)
    # rootエンティティを決める
    userinfo = get_userinfo(author)
    if userinfo is None:
        return (False, "Error: user not found: %s" % author)
    else:
        root = userinfo.key
    # 問題データのエンティティ
    q = Question( parent = root,
                  id = str(q_num),
                  qnum = q_num,
                  text = text2,
                  rows = size[1], # Y
                  cols = size[0], # X
                  linenum = line_num,
                  author = author )
    # 登録する
    q.put()
    #
    return (True, size, line_num)
Пример #2
0
def insert_Q_data(q_num, text, author="DASymposium", year=2015, uniq=True):
    """
    問題データをデータベースに登録する。
    uniq==Trueのとき、q_numとauthorが重複する場合、登録は失敗する。
    """
    #重複チェック
    if uniq:
        q = get_user_Q_data(q_num, author, year)
        if q is not None:
            return (False, "Error: Q%d data already exists" % q_num) # 重複エラー
    # 問題データのチェック
    (size, line_num, line_mat, msg, ok) = numberlink.read_input_data(text)
    if not ok:
        return (False, "Error: syntax error in Q data\n"+msg)
    # text2は、textを正規化したテキストデータ(改行コードなど)
    text2 = numberlink.generate_Q_data(size, line_num, line_mat)
    # rootエンティティを決める
    userinfo = get_userinfo(author)
    if userinfo is None:
        return (False, "Error: user not found: %s" % author)
    else:
        root = userinfo.key
    # 問題データのエンティティ
    q = Question( parent = root,
                  id = str(q_num),
                  qnum = q_num,
                  text = text2,
                  rows = size[1], # Y
                  cols = size[0], # X
                  linenum = line_num,
                  author = author )
    # 登録する
    q.put()
    #
    return (True, size, line_num)
Пример #3
0
def Q_check(qtext):
    "問題ファイルの妥当性チェックを行う"
    hr = '-'*40 + "\n"
    (size, line_num, line_mat, msg, ok) = numberlink.read_input_data(qtext)
    if ok:
        q = numberlink.generate_Q_data(size, line_num, line_mat)
        out = "OK\n" + hr + q + hr
    else:
        out = "NG\n" + hr + qtext + hr + msg
    return out, ok
Пример #4
0
def Q_check(qtext):
    "問題ファイルの妥当性チェックを行う"
    hr = '-'*40 + "\n"
    res = numberlink.read_input_data(qtext)
    if res[4]:
        q = numberlink.generate_Q_data(res[0], res[1], res[2])
        out = "OK\n" + hr + q + hr
    else:
        out = "NG\n" + hr + qtext + hr + res[3]
    return out, res[4]
Пример #5
0
def update_Q_data(q_num, text, author="DASymposium", year=2015):
    "問題データを変更する"
    # 問題データの内容チェック
    (size, line_num, line_mat, msg, ok) = numberlink.read_input_data(text)
    if not ok:
        return (False, "Error: syntax error in Q data\n"+msg, None, None)

    text2 = numberlink.generate_Q_data(size, line_num, line_mat)
    # 既存のエンティティを取り出す
    res = get_user_Q_data(q_num, author, year)
    if res is None:
        num = 0
    else:
        num = 1
        res.text = text2
        res.put()
    return (True, num, size, line_num)
Пример #6
0
def update_Q_data(q_num, text, author="DASymposium", year=DEFAULT_YEAR):
    "問題データを変更する"
    # 問題データの内容チェック
    (size, line_num, line_mat, via_mat, via_dic, msg,
     ok) = numberlink.read_input_data(text)
    if not ok:
        return (False, "Error: syntax error in Q data\n" + msg, None, None)

    text2 = numberlink.generate_Q_data(size, line_num, line_mat, via_mat,
                                       via_dic)
    # 既存のエンティティを取り出す
    res = get_user_Q_data(q_num, author, year)
    if res is None:
        num = 0
    else:
        num = 1
        res.text = text2
        res.put()
    return (True, num, size, line_num)