37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from ratelimitbackend import admin
|
|
from course_modes.models import CourseMode
|
|
from django import forms
|
|
|
|
from opaque_keys import InvalidKeyError
|
|
from xmodule.modulestore.django import modulestore
|
|
from opaque_keys.edx.keys import CourseKey
|
|
from opaque_keys.edx.locations import SlashSeparatedCourseKey
|
|
|
|
|
|
class CourseModeForm(forms.ModelForm):
|
|
|
|
class Meta:
|
|
model = CourseMode
|
|
|
|
def clean_course_id(self):
|
|
course_id = self.cleaned_data['course_id']
|
|
try:
|
|
course_key = CourseKey.from_string(course_id)
|
|
except InvalidKeyError:
|
|
try:
|
|
course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id)
|
|
except InvalidKeyError:
|
|
raise forms.ValidationError("Cannot make a valid CourseKey from id {}!".format(course_id))
|
|
|
|
if not modulestore().has_course(course_key):
|
|
raise forms.ValidationError("Cannot find course with id {} in the modulestore".format(course_id))
|
|
|
|
return course_key
|
|
|
|
|
|
class CourseModeAdmin(admin.ModelAdmin):
|
|
form = CourseModeForm
|
|
|
|
|
|
admin.site.register(CourseMode, CourseModeAdmin)
|