@@ -309,16 +309,7 @@ def results_archive(self, user):
309309 files .append ((spreadsheet_filename , spreadsheet_contents ))
310310 return archive_name , files
311311
312- def student_statistics (self , student = None ):
313- if student is None :
314- students = self .course .observed_students ()
315- parts = Part .objects .filter (problem__problem_set = self )
316- else :
317- students = User .objects .filter (id = student .id )
318- parts = Part .objects .filter (
319- problem__problem_set = self , problem__visible = True
320- )
321- outcomes = Outcome .group_dict (parts , students , ("id" ,), ())
312+ def outcomes_statistics (self , outcomes ):
322313 statistics = []
323314 for problem in self .problems .prefetch_related ("parts" ):
324315 parts = []
@@ -341,6 +332,18 @@ def student_statistics(self, student=None):
341332 )
342333 return statistics
343334
335+ def single_student_statistics (self , student ):
336+ students = User .objects .filter (id = student .id )
337+ parts = Part .objects .filter (problem__problem_set = self , problem__visible = True )
338+ outcomes = Outcome .group_dict (parts , students , ("id" ,), ())
339+ return self .outcomes_statistics (outcomes )
340+
341+ def all_students_statistics (self ):
342+ students = self .course .observed_students ()
343+ parts = Part .objects .filter (problem__problem_set = self )
344+ outcomes = Outcome .group_dict (parts , students , ("id" ,), ())
345+ return self .outcomes_statistics (outcomes )
346+
344347 def toggle_visible (self ):
345348 self .visible = not self .visible
346349 self .save ()
0 commit comments