def teacher_grade(request): teacher = Faculty.objects.filter(username=request.user.username).first() all_sections = None if request.user.has_perm('grades.change_grade'): all_sections = CourseSection.objects.filter( course__graded=True, marking_period__school_year__active_year=True, ).order_by('coursesectionteacher__teacher__last_name').distinct() elif not teacher: messages.info(request, 'You do not have any course sections.') return HttpResponseRedirect(reverse('admin:index')) course_sections = CourseSection.objects.filter( course__graded=True, marking_period__school_year__active_year=True, ).filter(teachers=teacher).distinct() pref = UserPreference.objects.get_or_create(user=request.user)[0].gradebook_preference if "ecwsp.engrade_sync" in settings.INSTALLED_APPS: if request.method == 'POST': form = EngradeSyncForm(request.POST) if form.is_valid(): try: from ecwsp.engrade_sync.engrade_sync import EngradeSync marking_period = form.cleaned_data['marking_period'] include_comments = form.cleaned_data['include_comments'] course_sections = course_sections.filter(marking_period=marking_period) es = EngradeSync() errors = "" for course_section in course_sections: errors += es.sync_course_grades(course_section, marking_period, include_comments) if errors: messages.success(request, 'Engrade Sync attempted, but has some issues: ' + errors) else: messages.success(request, 'Engrade Sync successful. Please verify each course section!') except: messages.info(request, 'Engrade Sync unsuccessful. Contact an administrator.') logging.error('Engrade Sync unsuccessful', exc_info=True, extra={ 'request': request, }) else: messages.info(request, 'You must select a valid marking period') form = EngradeSyncForm() else: form = None return render_to_response( 'grades/teacher_grade.html', {'request': request, 'all_sections': all_sections, 'course_sections': course_sections, 'form': form, 'pref': pref}, RequestContext(request, {}), )