def assignment_stats(cid, aid): courses, current_course = get_courses(cid) assign = Assignment.query.filter_by(id=aid, course_id=cid).one_or_none() if not Assignment.can(assign, current_user, 'edit'): flash('Insufficient permissions', 'error') return abort(401) stats = Assignment.assignment_stats(assign.id) submissions = [d for d in stats.pop('raw_data')] pie_chart = pygal.Pie(half_pie=True, disable_xml_declaration=True, style=CleanStyle, inner_radius=.5, legend_at_bottom=True) pie_chart.title = 'Students submission status' pie_chart.add('Students with Submissions', stats['students_with_subm']) pie_chart.add('Students with Backups', stats['students_with_backup']) pie_chart.add('Not Started', stats['students_no_backup']) return render_template('staff/course/assignment/assignment.stats.html', assignment=assign, subm_chart=pie_chart, courses=courses, stats=stats, submissions=submissions, current_course=current_course)
def assignment_stats(cid, aid): courses, current_course = get_courses(cid) assign = Assignment.query.filter_by(id=aid, course_id=cid).one_or_none() if not Assignment.can(assign, current_user, 'edit'): flash('Insufficient permissions', 'error') return abort(401) stats = Assignment.assignment_stats(assign.id, detailed=True) pie_chart = pygal.Pie(half_pie=True, disable_xml_declaration=True, style=CleanStyle, inner_radius=.5, legend_at_bottom=True) pie_chart.title = 'Students submission status' pie_chart.add('Students with Submissions', stats['students_submitted']) pie_chart.add('Not Submitted', stats['students_nosubmit']) return render_template('staff/course/assignment.stats.html', assignment=assign, subm_chart=pie_chart, courses=courses, stats=stats, current_course=current_course)
def assignment(cid, aid): courses, current_course = get_courses(cid) assign = Assignment.query.filter_by(id=aid, course_id=cid).one_or_none() if not assign: return abort(404) if not Assignment.can(assign, current_user, 'edit'): flash('Insufficient permissions', 'error') return abort(401) form = forms.AssignmentUpdateForm(obj=assign, course=current_course) stats = Assignment.assignment_stats(assign.id) if form.validate_on_submit(): # populate_obj converts back to UTC form.populate_obj(assign) assign.creator_id = current_user.id cache.delete_memoized(Assignment.name_to_assign_info) db.session.commit() flash("Assignment edited successfully.", "success") return render_template('staff/course/assignment/assignment.html', assignment=assign, form=form, courses=courses, stats=stats, current_course=current_course)
def assignment(cid, aid): courses, current_course = get_courses(cid) assign = Assignment.query.filter_by(id=aid, course_id=cid).one_or_none() if not assign: return abort(404) if not Assignment.can(assign, current_user, 'edit'): flash('Insufficient permissions', 'error') return abort(401) form = forms.AssignmentUpdateForm(obj=assign, course=current_course) stats = Assignment.assignment_stats(assign.id) if form.validate_on_submit(): # populate_obj converts back to UTC form.populate_obj(assign) assign.creator_id = current_user.id cache.delete_memoized(Assignment.name_to_assign_info) db.session.commit() flash("Assignment edited successfully.", "success") return render_template('staff/course/assignment.html', assignment=assign, form=form, courses=courses, stats=stats, current_course=current_course)