def form_valid(self, form): from ecwsp.sis.importer import Importer course_section = self.object importer = Importer(self.request.FILES['file'], self.request.user) error = importer.import_grades(course_section, form.cleaned_data['marking_period']) if error: messages.warning(self.request, error) else: course_section.last_grade_submission = datetime.datetime.now() course_section.save() return super(CourseSectionGrades, self).form_valid(form)
def form_valid(self, form): from ecwsp.sis.importer import Importer course_section = self.object importer = Importer(self.request.FILES['file'], self.request.user) error = importer.import_grades(course_section, form.cleaned_data['marking_period']) if error: messages.warning(self.request, error) else: course_section.last_grade_submission = datetime.datetime.now() course_section.save() return super(CourseSectionGrades, self).form_valid(form)
def teacher_grade_upload(request, id): """ This view is for inputing grades. It usually is done by uploading a spreadsheet. However it can also be done by manually overriding grades. This requires registrar level access. """ course = Course.objects.get(id=id) students = course.get_enrolled_students(show_deleted=True) grades = course.grade_set.all() if request.method == 'POST' and 'upload' in request.POST: import_form = GradeUpload(request.POST, request.FILES) if import_form.is_valid(): from ecwsp.sis.importer import Importer importer = Importer(request.FILES['file'], request.user) error = importer.import_grades(course, import_form.cleaned_data['marking_period']) if error: messages.warning(request, error) else: course.last_grade_submission = datetime.datetime.now() course.save() else: import_form = GradeUpload() import_form.fields['marking_period'].queryset = import_form.fields['marking_period'].queryset.filter(course=course) if request.method == 'POST' and 'edit' in request.POST: handle_grade_save(request, course) marking_periods = course.marking_period.all().order_by('start_date') # Ensure grades exists for mp in marking_periods: for student in students: grade, created = Grade.objects.get_or_create(student=student, course=course, marking_period=mp) for student in students: student.grades = student.grade_set.filter(course=course, override_final=False) try: student.final = student.grade_set.get(course=course, override_final=True).get_grade() student.final_override = True except Grade.DoesNotExist: student.final = course.calculate_final_grade(student) if request.user.is_superuser or \ request.user.has_perm('grades.change_own_final_grade') or \ request.user.has_perm('grades.change_grade'): edit_final = True else: edit_final = False if request.user.is_superuser or \ request.user.has_perm('grades.change_own_grade') or \ request.user.has_perm('grades.change_grade'): edit = True else: edit = False letter_grade_required_for_pass = Configuration.get_or_default('letter_grade_required_for_pass', '60').value return render_to_response('grades/teacher_grade_upload.html', { 'request': request, 'course': course, 'marking_periods': marking_periods, 'students': students, 'import_form': import_form, 'edit': edit, 'edit_final': edit_final, 'letter_grade_required_for_pass': letter_grade_required_for_pass }, RequestContext(request, {}),)
def teacher_grade_upload(request, id): """ This view is for inputing grades. It usually is done by uploading a spreadsheet. However it can also be done by manually overriding grades. This requires registrar level access. """ course = Course.objects.get(id=id) students = Student.objects.filter(courseenrollment__course=course) grades = course.grade_set.all() if request.method == 'POST' and 'upload' in request.POST: import_form = GradeUpload(request.POST, request.FILES) if import_form.is_valid(): from ecwsp.sis.importer import Importer importer = Importer(request.FILES['file'], request.user) error = importer.import_grades( course, import_form.cleaned_data['marking_period']) if error: messages.warning(request, error) else: course.last_grade_submission = datetime.datetime.now() course.save() else: import_form = GradeUpload() import_form.fields['marking_period'].queryset = import_form.fields[ 'marking_period'].queryset.filter(course=course) if request.method == 'POST' and 'edit' in request.POST: handle_grade_save(request, course) marking_periods = course.marking_period.all().order_by('start_date') # Ensure grades exists for mp in marking_periods: for student in students: grade, created = Grade.objects.get_or_create(student=student, course=course, marking_period=mp) for student in students: student.grades = student.grade_set.filter(course=course, override_final=False) try: student.final = student.grade_set.get( course=course, override_final=True).get_grade() student.final_override = True except Grade.DoesNotExist: student.final = course.calculate_final_grade(student) if request.user.is_superuser or \ request.user.has_perm('grades.change_own_final_grade') or \ request.user.has_perm('grades.change_grade'): edit_final = True else: edit_final = False if request.user.is_superuser or \ request.user.has_perm('grades.change_own_grade') or \ request.user.has_perm('grades.change_grade'): edit = True else: edit = False letter_grade_required_for_pass = Configuration.get_or_default( 'letter_grade_required_for_pass', '60').value return render_to_response( 'grades/teacher_grade_upload.html', { 'request': request, 'course': course, 'marking_periods': marking_periods, 'students': students, 'import_form': import_form, 'edit': edit, 'edit_final': edit_final, 'letter_grade_required_for_pass': letter_grade_required_for_pass }, RequestContext(request, {}), )