def csv_to_grade_changes(course, grading_opportunity, attempt_id, file_contents, id_column, points_column, feedback_column, max_points, creator, grade_time, has_header): result = [] import csv spamreader = csv.reader(file_contents) for row in spamreader: if has_header: has_header = False continue gchange = GradeChange() result.append(gchange) gchange.opportunity = grading_opportunity gchange.participation = find_participant_from_id(course, row[id_column-1]) gchange.state = grade_state_change_types.graded gchange.attempt_id = attempt_id gchange.points = float(row[points_column-1]) gchange.max_points = max_points if feedback_column is not None: gchange.comment = row[feedback_column-1] gchange.creator = creator gchange.grade_time = grade_time return result
def csv_to_grade_changes( log_lines, course, grading_opportunity, attempt_id, file_contents, id_column, points_column, feedback_column, max_points, creator, grade_time, has_header): result = [] import csv total_count = 0 spamreader = csv.reader(file_contents) for row in spamreader: if has_header: has_header = False continue gchange = GradeChange() gchange.opportunity = grading_opportunity try: gchange.participation = find_participant_from_id( course, row[id_column-1]) except ParticipantNotFound as e: log_lines.append(e) continue gchange.state = grade_state_change_types.graded gchange.attempt_id = attempt_id points_str = row[points_column-1].strip() # Moodle's "NULL" grades look like this. if points_str in ["-", ""]: gchange.points = None else: gchange.points = float(fix_decimal(points_str)) gchange.max_points = max_points if feedback_column is not None: gchange.comment = row[feedback_column-1] gchange.creator = creator gchange.grade_time = grade_time last_grades = (GradeChange.objects .filter( opportunity=grading_opportunity, participation=gchange.participation, attempt_id=gchange.attempt_id) .order_by("-grade_time")[:1]) if last_grades.count(): last_grade, = last_grades if last_grade.state == grade_state_change_types.graded: updated = [] if last_grade.points != gchange.points: updated.append("points") if last_grade.max_points != gchange.max_points: updated.append("max_points") if last_grade.comment != gchange.comment: updated.append("comment") if updated: log_lines.append( "%(participation)s: %(updated)s " "updated" % { 'participation': gchange.participation, 'updated': ", ".join(updated)}) result.append(gchange) else: result.append(gchange) else: result.append(gchange) total_count += 1 return total_count, result
def csv_to_grade_changes( log_lines, course, grading_opportunity, attempt_id, file_contents, id_column, points_column, feedback_column, max_points, creator, grade_time, has_header): result = [] import csv total_count = 0 spamreader = csv.reader(file_contents) for row in spamreader: if has_header: has_header = False continue gchange = GradeChange() gchange.opportunity = grading_opportunity try: gchange.participation = find_participant_from_id( course, row[id_column-1]) except ParticipantNotFound as e: log_lines.append(e) continue gchange.state = grade_state_change_types.graded gchange.attempt_id = attempt_id points_str = row[points_column-1].strip() # Moodle's "NULL" grades look like this. if points_str in ["-", ""]: gchange.points = None else: gchange.points = float(fix_decimal(points_str)) gchange.max_points = max_points if feedback_column is not None: gchange.comment = row[feedback_column-1] gchange.creator = creator gchange.grade_time = grade_time last_grades = (GradeChange.objects .filter( opportunity=grading_opportunity, participation=gchange.participation, attempt_id=gchange.attempt_id) .order_by("-grade_time")[:1]) if last_grades.count(): last_grade, = last_grades if last_grade.state == grade_state_change_types.graded: updated = [] if last_grade.points != gchange.points: updated.append("points") if last_grade.max_points != gchange.max_points: updated.append("max_points") if last_grade.comment != gchange.comment: updated.append("comment") if updated: log_lines.append("%s: %s updated" % ( gchange.participation, ", ".join(updated))) result.append(gchange) else: result.append(gchange) else: result.append(gchange) total_count += 1 return total_count, result