def test_practice_topic_list(self): with self.app.test_client() as c: self.login(ADMIN_UNAME, self.adminpass, client=c) s = c.get('/practice/top', follow_redirects=True) self.assertEqual(s.status, "200 OK") self.assertIn("Choose A Course", s.data) self.assertNotIn("TESTCOURSE10", s.data) course_id = Courses.create("TESTCOURSE10", "unit tests", 1, 1) Courses.create_config(course_id, "casual", 1) Courses.set_active(course_id, True) Courses.set_prac_vis(course_id, "all") s = c.get('/practice/top', follow_redirects=True) self.assertEqual(s.status, "200 OK") self.assertIn("Choose A Course", s.data) self.assertIn("TESTCOURSE10", s.data) s = c.get('/practice/coursequestions/%s' % course_id) self.assertIn("<h2>TESTCOURSE10 (unit tests)</h2>", s.data) self.assertIn("Select a Topic", s.data)
def test_assess_create(self): """ Create an empty assessment""" course_id = Courses.create("TESTCOURSE5", "unit tests for assessment", 1, 1) Courses.create_config(course_id, "casual", 1) Courses.set_active(course_id, True) Courses.set_prac_vis(course_id, "none") Courses.set_assess_vis(course_id, "none") title = "Test Assessment 1" atype = 2 # assignment duration = 60 code = "123456" instant = 1 instructions = "These are the instructions" astart = datetime.datetime.utcnow() aend = astart + datetime.timedelta(hours=2) exam_id = Exams.create(course_id, 1, title, atype, duration, astart, aend, instructions, code=code, instant=instant) self.assertGreater(exam_id, 0) topic1_id = Topics.create(course_id, "TESTASSESS1", 1, 1) self.assertGreater(topic1_id, 0) data = open(self.test_question_fname).read() numread = External.import_qts_from_zip(data, topic1_id) self.assertEqual(numread, 3)
def admin_course_save(course_id): """ accept saved settings """ form = request.form cancel_edit = form.get("cancel_edit", False) if cancel_edit: flash("Course edits cancelled") return redirect(url_for("admin_courses")) changed = False course = Courses2.get_course(course_id) groups = Courses.get_groups(course_id) for g_id, group in groups.iteritems(): if form.get('delgroup_%s' % g_id): changed = True flash("Removing group %s" % group.name, "info") Courses.del_group(int(g_id), course_id) if 'course_name' in form: name = form['course_name'] if not name == course['name']: changed = True Courses.set_name(course_id, name) if 'course_title' in form: title = form['course_title'] if not title == course['title']: changed = True Courses.set_title(course_id, title) if 'course_active' in form: active = form['course_active'] if active == '1' or active == 1: active = True else: active = False if not (active == course['active']): changed = True Courses.set_active(course_id, active) addbtn = form.get('group_addbtn') if addbtn: newgroup = form.get('addgroup', None) if newgroup: Courses.add_group(newgroup, course_id) changed = True group = Groups.Group(newgroup) flash("Group %s added." % group.name) if changed: Courses2.reload_if_needed() flash("Course changes saved!") return redirect(url_for("admin_course", course_id=course_id)) course = Courses2.get_course(course_id) course['size'] = len(Courses.get_users(course_id)) return redirect(url_for("admin_courses"))
def admin_course_save(course_id): """ accept saved settings """ form = request.form cancel_edit = form.get("cancel_edit", False) if cancel_edit: flash("Course edits cancelled") return redirect(url_for("admin_courses")) changed = False course = Courses2.get_course(course_id) groups = Courses.get_groups(course_id) for g_id, group in groups.iteritems(): if form.get('delgroup_%s' % g_id): changed = True flash("Removing group %s" % group.name, "info") Courses.del_group(int(g_id), course_id) if 'course_name' in form: name = form['course_name'] if not name == course['name']: changed = True Courses.set_name(course_id, name) if 'course_title' in form: title = form['course_title'] if not title == course['title']: changed = True Courses.set_title(course_id, title) if 'course_active' in form: active = form['course_active'] if active == '1' or active == 1: active = True else: active = False if not (active == course['active']): changed = True Courses.set_active(course_id, active) addbtn = form.get('group_addbtn') if addbtn: newgroup = form.get('addgroup', None) if newgroup: Courses.add_group(newgroup, course_id) changed = True group = Groups.Group(newgroup) flash("Group %s added." % group.name) if changed: Courses2.reload_if_needed() flash("Course changes saved!") return redirect(url_for("admin_course", course_id=course_id)) course = Courses2.get_course(course_id) course['size'] = len(Courses.get_users(course_id)) return redirect(url_for("admin_courses"))
def cadmin_activate(course_id): """ Mark the course as active """ course = None try: course = Courses2.get_course(course_id) except KeyError: abort(404) if not course: abort(404) Courses.set_active(course_id, True) flash("Course %s marked as active" % (course['name'])) return redirect(url_for("cadmin_config", course_id=course_id))
def cadmin_activate(course_id): """ Mark the course as active """ course = None try: course = Courses2.get_course(course_id) except KeyError: abort(404) if not course: abort(404) Courses.set_active(course_id, True) flash("Course %s marked as active" % (course['name'])) return redirect(url_for("cadmin_config", course_id=course_id))
def test_practice_course_list(self): """ Check the list of courses is reasonably ok :return: """ with self.app.test_client() as c: self.login(ADMIN_UNAME, self.adminpass, client=c) s = c.get('/practice/top', follow_redirects=True) self.assertEqual(s.status, "200 OK") self.assertIn("Choose A Course", s.data) self.assertNotIn("TESTCOURSE1", s.data) # create a course, set it visible, is it there? course_id = Courses.create("TESTCOURSE1", "unit tests", 1, 1) Courses.create_config(course_id, "casual", 1) Courses.set_active(course_id, True) Courses.set_prac_vis(course_id, "all") s = c.get('/practice/top', follow_redirects=True) self.assertEqual(s.status, "200 OK") self.assertIn("Choose A Course", s.data) self.assertIn("TESTCOURSE1", s.data) self.assertNotIn("TESTCOURSE2", s.data) # create a second course, set it visible, is it there? course_id = Courses.create("TESTCOURSE2", "unit tests", 1, 1) Courses.create_config(course_id, "casual", 1) Courses.set_active(course_id, True) Courses.set_prac_vis(course_id, "all") s = c.get('/practice/top', follow_redirects=True) self.assertEqual(s.status, "200 OK") self.assertIn("Choose A Course", s.data) self.assertIn("TESTCOURSE1", s.data) self.assertIn("TESTCOURSE2", s.data) # create a third course, set it not visible course_id = Courses.create("TESTCOURSE3", "unit tests", 1, 1) Courses.create_config(course_id, "casual", 1) Courses.set_active(course_id, True) Courses.set_prac_vis(course_id, "none") s = c.get('/practice/top', follow_redirects=True) self.assertEqual(s.status, "200 OK") self.assertIn("Choose A Course", s.data) self.assertIn("TESTCOURSE1", s.data) self.assertIn("TESTCOURSE2", s.data) # admin can still see it self.assertIn("TESTCOURSE3", s.data)