def practice_choose_topic(course_id): """ Present a list of topics for them to choose from the given course """ user_id = session['user_id'] try: course = Courses2.get_course(course_id) except KeyError: course = None abort(404) try: topics = Courses2.get_topics_list(course_id) except KeyError: topics = [] abort(404) members = None for topic in topics: if topic['visibility'] == 2: # course only if not members: members = Courses.get_users(course_id) if user_id not in members: topics.remove(topic) return render_template( "practicecourse.html", courses=Setup.get_sorted_courselist(), canpreview=check_perm(user_id, course_id, "questionpreview"), topics=topics, course=course )
def practice_choose_topic(course_id): """ Present a list of topics for them to choose from the given course """ user_id = session['user_id'] try: course = Courses2.get_course(course_id) except KeyError: course = None abort(404) try: topics = Courses2.get_topics_list(course_id) except KeyError: topics = [] abort(404) members = None for topic in topics: if topic['visibility'] == 2: # course only if not members: members = Courses.get_users(course_id) if not user_id in members: topics.remove(topic) return render_template( "practicecourse.html", courses=Setup.get_sorted_courselist(), canpreview=check_perm(user_id, course_id, "questionpreview"), topics=topics, course=course )
def practice_choose_question(topic_id): """ Present a list of questions for them to choose from the given topic """ user_id = session['user_id'] try: course_id = Topics.get_course_id(topic_id) except KeyError: course_id = None abort(404) topics = [] try: topics = Courses2.get_topics_list(course_id) except KeyError: abort(404) try: course = Courses2.get_course(course_id) except KeyError: course = None abort(404) topictitle = Topics.get_name(topic_id) questions = Practice.get_sorted_questions(course_id, topic_id, user_id) thistopic = Topics.get_topic(topic_id) members = [] if thistopic['visibility'] == 2: # course only if not members: members = Courses.get_users(course_id) if not user_id in members: abort(404) for topic in topics: if topic['visibility'] == 2: # course only if not members: members = Courses.get_users(course_id) if not user_id in members: topics.remove(topic) return render_template( "practicetopic.html", canpreview=check_perm(user_id, course_id, "questionpreview"), topics=topics, topic_id=topic_id, course=course, topictitle=topictitle, questions=questions )
def practice_choose_question(topic_id): """ Present a list of questions for them to choose from the given topic """ user_id = session['user_id'] try: course_id = Topics.get_course_id(topic_id) except KeyError: course_id = None abort(404) topics = [] try: topics = Courses2.get_topics_list(course_id) except KeyError: abort(404) try: course = Courses2.get_course(course_id) except KeyError: course = None abort(404) topictitle = Topics.get_name(topic_id) questions = Practice.get_sorted_questions(course_id, topic_id, user_id) thistopic = Topics.get_topic(topic_id) members = [] if thistopic['visibility'] == 2: # course only if not members: members = Courses.get_users(course_id) if user_id not in members: abort(404) for topic in topics: if topic['visibility'] == 2: # course only if not members: members = Courses.get_users(course_id) if user_id not in members: topics.remove(topic) return render_template( "practicetopic.html", canpreview=check_perm(user_id, course_id, "questionpreview"), topics=topics, topic_id=topic_id, course=course, topictitle=topictitle, questions=questions )
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 get_sorted_courselist(with_stats=False, only_active=True): """Return a list of courses suitable for choosing one to edit [ ('example101', { coursedict }), ('sorted302', { coursedict } ) ] """ courses = Courses2.get_course_dict(only_active=only_active) inorder = [] for cid, course in courses.iteritems(): if with_stats: course['students'] = Courses.get_users(cid) course['size'] = len(course['students']) inorder.append((course['name'], course)) inorder.sort() return inorder
def admin_course(course_id): """ Present page to administer settings for a given course""" course = Courses2.get_course(course_id) course['size'] = len(Courses.get_users(course_id)) groups = Courses.get_groups(course_id) choosegroups = [group for g_id, group in Groups.enrolment_groups().iteritems() if not g_id in groups] return render_template( "cadmin_course.html", course=course, groups=groups, choosegroups=choosegroups )
def admin_course(course_id): """ Present page to administer settings for a given course""" course = Courses2.get_course(course_id) course['size'] = len(Courses.get_users(course_id)) groups = Courses.get_groups(course_id) choosegroups = [group for g_id, group in Groups.enrolment_groups().iteritems() if g_id not in groups] return render_template( "cadmin_course.html", course=course, groups=groups, choosegroups=choosegroups )
def get_sorted_courselist(with_stats=False, only_active=True): """Return a list of courses suitable for choosing one to edit [ ('example101', { coursedict }), ('sorted302', { coursedict } ) ] """ courses = Courses2.get_course_dict(only_active=only_active) inorder = [] for cid, course in courses.iteritems(): if with_stats: course['students'] = Courses.get_users(cid) course['size'] = len(course['students']) inorder.append((course['name'], course)) inorder.sort() return inorder