Example #1
0
 def validate(self, data):
     '''
     Data validation
     :param data: data from post/put request
     :return: clean data
     '''
     # move fields from orgExtra to data and rename fieldname from camelCase
     # to underscore
     for key, value in data['orgExtra'].items():
         data[re.sub('([A-Z]+)', r'_\1', key).lower()] = value
     try:
         course_org, course_id, course_run = Exam.get_course_data(
                 data['course_id'])
     except ValueError as e:
         raise serializers.ValidationError("Wrong courseId data")
     data['course_organization'] = course_org
     data['course_identify'] = "/".join((course_org, course_id))
     data['course_run'] = "/".join((course_org, course_id, course_run))
     data['exam_end_date'] = parser.parse(data['exam_end_date'])
     data['exam_start_date'] = parser.parse(data['exam_start_date'])
     del (data['orgExtra'])
     try:
         Exam(**data).full_clean()
     except ValidationError as e:
         raise serializers.ValidationError(e.message_dict)
     return super(ExamSerializer, self).validate(data)