def update_enrollment(enrollment, user, is_program_manager=None): if is_program_manager is None: is_program_manager = program_manager.is_program_manager(user) enrollment = clean_score_and_justification(enrollment) if can_modify_exam_enrollment(enrollment, is_program_manager) and \ is_enrollment_changed(enrollment, is_program_manager): with transaction.atomic(): enrollment_updated = set_score_and_justification(enrollment, is_program_manager) if is_program_manager: exam_enrollment.create_exam_enrollment_historic(user, enrollment) return enrollment_updated return None