def add_question(user, qn_text, options, answer, topicID): '''Adds a question to the database Input qn_text : str options : seq of str answer : int (1 to 4) topic : int ''' # Generate item parameters from CatSim item = generate_item_bank(1)[0] # Add question question = Question(question=qn_text, discrimination=item[0], \ difficulty=item[1], guessing=item[2], upper=item[3], topicID = topicID, userID=user.id) db.session.add(question) db.session.flush() qnID = question.id # Add options and answer for opt in options: o = Option(qnID=qnID,option=opt) answer -= 1 db.session.add(o) db.session.flush() if answer == 0: optID = o.id question.answerID = optID db.session.flush() db.session.commit() return question
def add_qn(org_qns): '''Adds questions to the database, where questions are formatted to be in a dictionary {<question>:{'answer':<options>,'difficulty':<difficulty>} <questions> is str <options> is list of str <difficulty> is float (not added yet) ''' if Question.query.all(): return for q in org_qns.keys(): item = generate_item_bank(1)[0] qn = Question(question=q, discrimination=item[0], \ difficulty=item[1], guessing=item[2], upper=item[3], topicID=1) db.session.add(qn) db.session.commit() qid = qn.id b=True for o in org_qns[q]['answers']: opt=Option(qnID=qid,option=o) db.session.add(opt) if b: db.session.flush() qn.answerID = opt.id b=False db.session.commit()
def insert_qns(path): '''Inserts questions formatted as a json file {<number>: {'answer':<extra text><answer>, 'option_texts':<extra text><options>, 'question_text':<extra text><question><extra text>}} all are strings ''' qn_dict = {} for filename in glob.glob(os.path.join(path, '*.json')): print("===") print(filename) print("===") with open(filename, 'r') as f: # open in readonly mode data = json.load(f) for qn_set in data.values(): qn_txt = qn_set["question_text"] n, qn_text = qn_txt.split(")",1) options = qn_set["option_texts"] options = [[o[0], o[6:]] for o in options] answer = qn_set["answer"] a, answer = answer.split("Answer / Explanation :\n\nAnswer : ", 1) answer, explanation = answer.split(".", 1) item = generate_item_bank(1)[0] question = Question(question=qn_text, discrimination=item[0], \ difficulty=item[1], guessing=item[2], upper=item[3], topicID=1) db.session.add(question) db.session.flush() qid = question.id for opt in options: o = Option(qnID=qid, option=opt[1]) db.session.add(o) if opt[0] == answer: db.session.flush() optID = o.id question.answerID = optID db.session.commit()