Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
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"))
Exemplo n.º 4
0
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"))
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
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))
Exemplo n.º 7
0
    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)