@@ -591,12 +591,23 @@ def get(self, request, *args, **kwargs):
591591 # Compare to another submission.
592592 compare_to = request .GET .get ("compare_to" , None )
593593 if compare_to and self .exercise .course_instance .is_course_staff (request .user ):
594- compared_data = (
595- self .get_model_answer_file_data ()
596- if compare_to == "model"
597- else self .get_compared_submission_file_data (compare_to )
598- )
599- submitted_data = bytedata .decode ('utf-8' , 'ignore' )
594+ if compare_to == "model" :
595+ compared_data = self .get_model_answer_file_data ()
596+ submitted_data = bytedata .decode ('utf-8' , 'ignore' )
597+ else :
598+ compared_submission_id = int (compare_to )
599+ compared_submission = get_object_or_404 (
600+ Submission ,
601+ id = compared_submission_id ,
602+ exercise = self .exercise
603+ )
604+ compared_data = self .get_compared_submission_file_data (compare_to )
605+ submitted_data = bytedata .decode ('utf-8' , 'ignore' )
606+
607+ # Ensure chronological order: earlier submission first, later submission second
608+ if compared_submission .submission_time > self .submission .submission_time :
609+ # Swap if compared submission is newer than current submission
610+ compared_data , submitted_data = submitted_data , compared_data
600611
601612 if request .GET .get ('ignore_trailing_whitespace' , 'no' ) == 'yes' :
602613 compared_data = self .strip_trailing_whitespace (compared_data )
0 commit comments