def on_grading_process_finished(course): evaluations = course.evaluations.all() if all(evaluation.state == 'reviewed' for evaluation in evaluations): for evaluation in evaluations: assert evaluation.grading_process_is_finished for evaluation in evaluations: evaluation.publish() evaluation.save() EmailTemplate.send_participant_publish_notifications(evaluations) EmailTemplate.send_contributor_publish_notifications(evaluations)
def upload_grades(request, semester_id, course_id): semester = get_object_or_404(Semester, id=semester_id) if semester.grade_documents_are_deleted: raise PermissionDenied course = get_object_or_404(Course, id=course_id, semester=semester) final_grades = request.GET.get( 'final') == 'true' # if parameter is not given, assume midterm grades grade_document = GradeDocument(course=course) if final_grades: grade_document.type = GradeDocument.Type.FINAL_GRADES grade_document.description_en = settings.DEFAULT_FINAL_GRADES_DESCRIPTION_EN grade_document.description_de = settings.DEFAULT_FINAL_GRADES_DESCRIPTION_DE else: grade_document.type = GradeDocument.Type.MIDTERM_GRADES grade_document.description_en = settings.DEFAULT_MIDTERM_GRADES_DESCRIPTION_EN grade_document.description_de = settings.DEFAULT_MIDTERM_GRADES_DESCRIPTION_DE form = GradeDocumentForm(request.POST or None, request.FILES or None, instance=grade_document) if form.is_valid(): form.save(modifying_user=request.user) evaluations = course.evaluations.all() if final_grades and all(evaluation.state == 'reviewed' for evaluation in evaluations): for evaluation in evaluations: evaluation.publish() evaluation.save() EmailTemplate.send_participant_publish_notifications(evaluations) EmailTemplate.send_contributor_publish_notifications(evaluations) messages.success(request, _("Successfully uploaded grades.")) return redirect('grades:course_view', semester.id, course.id) template_data = dict( semester=semester, course=course, form=form, final_grades=final_grades, show_automated_publishing_info=final_grades, ) return render(request, "grades_upload_form.html", template_data)
def toggle_no_grades(request): course_id = request.POST.get("course_id") course = get_object_or_404(Course, id=course_id) if course.semester.grade_documents_are_deleted: raise PermissionDenied course.gets_no_grade_documents = not course.gets_no_grade_documents course.save() evaluations = course.evaluations.all() if course.gets_no_grade_documents and all(evaluation.state == 'reviewed' for evaluation in evaluations): for evaluation in evaluations: evaluation.publish() evaluation.save() EmailTemplate.send_participant_publish_notifications(evaluations) EmailTemplate.send_contributor_publish_notifications(evaluations) return HttpResponse() # 200 OK