def test_do_question(self): """ Do a question""" course_id = Courses.create("TEST102", "Test question logic", 1, 1) self.assertGreater(course_id, 0) topic1_id = Topics.create(course_id, "TESTQUESTIONS1", 1, 2) self.assertGreater(topic1_id, 0) qt1_id = DB.create_qt(1, "TESTQ9", "Test question 9", 0, 5.0, 1, topic_id=topic1_id) self.assertIsNotNone(qt1_id) ver = DB.get_qt_version(qt1_id) self.assertGreater(ver, 0) data = "2\n|1\n|2\n" qvars = [{'A1': "2"}, {'A1': "3"}] for row in range(0, len(qvars)): DB.add_qt_variation(qt1_id, row + 1, qvars[row], ver) DB.create_qt_att(qt1_id, "datfile.dat", "text/plain", data , ver) DB.create_qt_att(qt1_id, "qtemplate.html", "text/html", "What is <VAL A1>? <ANSWER 1>", ver) q_id = DB.get_q_by_qt_student(qt1_id, 1) self.assertFalse(q_id) # Not generated yet q_id = General.gen_q(qt1_id, 1) self.assertGreater(q_id, 0) q_id = DB.get_q_by_qt_student(qt1_id, 1) self.assertTrue(qt1_id) # Better be there now DB.update_qt_maxscore(qt1_id, 7.0) score = DB.get_qt_maxscore(qt1_id) self.assertEqual(score, 7.0) DB.set_q_viewtime(q_id) self.assertIsNotNone(DB.get_q_viewtime(q_id))
def get_exam_q(exam, page, user_id): """ Find the appropriate exam question for the user. Generate it if there isn't one already. """ qid = DB.get_exam_q_by_pos_student(exam, page, user_id) if qid is not False: return int(qid) qid = int(gen_exam_q(exam, page, user_id)) try: qid = int(qid) assert qid > 0 except (ValueError, TypeError, AssertionError): L.warn("generateExamQuestion(%s,%s, %s) Failed (returned %s)" % (exam, page, user_id, qid)) DB.set_q_viewtime(qid) return qid
def get_exam_q(exam, page, user_id): """ Find the appropriate exam question for the user. Generate it if there isn't one already. """ qid = DB.get_exam_q_by_pos_student(exam, page, user_id) if qid is not False: return int(qid) qid = int(gen_exam_q(exam, page, user_id)) try: qid = int(qid) assert qid > 0 except (ValueError, TypeError, AssertionError): L.warn("generateExamQuestion(%s,%s, %s) Failed (returned %s)" % (exam, page, user_id, qid)) qid = None if qid: DB.set_q_viewtime(qid) return qid