def save(self): exam = self.exam if not exam: exam = Exam() data = self.cleaned_data exam.publishable = False exam.paper_only = False fields = ['has_solutions', 'version', 'number', 'exam_type', 'semester'] if self.request.user.is_superuser: fields += ["publishable", "complete"] for field in fields: setattr(exam, field, data[field]) if exam.semester == INITIAL_SEMESTER_VALUE: exam.semester = None exam.comment = exam.comment or '' if exam.comment.find('FILENAME:') == -1: exam.comment += "\nFILENAME: '%s'\n" % data['exam_file'].name if not exam.submitter and not self.request.user.is_anonymous(): exam.submitter = self.request.user if data.has_key('course'): exam.course = data['course'] if data.has_key("exam_file_extension"): exam.file.save(exam.get_exam_filename() + data["exam_file_extension"], ContentFile(data['exam_file'].read())) else: exam.save() #instructors = [instr for instr in [data.get(field, None) for field in ("instructor1", "instructor2")] if instr is not None] #instrs = [data.get(field, None) for field in ("instructor1", "instructor2")] #instructors = filter(lamdba x: x is not None, instrs) instructors = [] if 'instructor1' in data: instructors.append(data['instructor1']) if 'instructor2' in data: instructors.append(data['instructor2']) if instructors: exam.instructors = instructors return exam