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)
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)
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
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]
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)
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)