""" Defines a form for providing validation of subsection grade templates. """ import logging from django import forms from opaque_keys import InvalidKeyError from opaque_keys.edx.locator import CourseLocator from lms.djangoapps.grades.config.models import CoursePersistentGradesFlag from xmodule.modulestore.django import modulestore log = logging.getLogger(__name__) class CoursePersistentGradesAdminForm(forms.ModelForm): """Input form for subsection grade enabling, allowing us to verify data.""" class Meta(object): model = CoursePersistentGradesFlag fields = '__all__' def clean_course_id(self): """Validate the course id""" cleaned_id = self.cleaned_data["course_id"] try: course_key = CourseLocator.from_string(cleaned_id) except InvalidKeyError: msg = u'Course id invalid. Entered course id was: "{0}."'.format(cleaned_id) raise forms.ValidationError(msg) if not modulestore().has_course(course_key): msg = u'Course not found. Entered course id was: "{0}". '.format(course_key.to_deprecated_string()) raise forms.ValidationError(msg) return course_key