@@ -136,20 +136,28 @@ def get(self, old_id, new_id):
136136 real_fname = fname .replace (".%l" , ext )
137137 else :
138138 real_fname = fname
139- def get_file (x ):
139+
140+ def get_file (x , which ):
141+ if fname not in x :
142+ return None , f"File not present in { which } submission"
140143 digest = x [fname ].digest
141144 file_bin = self .service .file_cacher .get_file_content (digest )
142- return file_bin .decode (errors = 'replace' ).splitlines ()
143-
144- if fname not in old_files :
145- result_files .append ({"fname" : real_fname , "status" : "Not present in old submission" })
145+ if len (file_bin ) > 1000000 :
146+ return None , f"{ which } file is too big to diff" .capitalize ()
147+ file_lines = file_bin .decode (errors = 'replace' ).splitlines ()
148+ if len (file_lines ) > 5000 :
149+ return None , f"{ which } file has too many lines to diff" .capitalize ()
150+ return file_lines , None
151+
152+ old_content , old_status = get_file (old_files , "old" )
153+ if old_status :
154+ result_files .append ({"fname" : real_fname , "status" : old_status })
146155 continue
147- if fname not in new_files :
148- result_files .append ({"fname" : real_fname , "status" : "Not present in new submission" })
156+ new_content , new_status = get_file (new_files , "new" )
157+ if new_status :
158+ result_files .append ({"fname" : real_fname , "status" : new_status })
149159 continue
150160
151- old_content = get_file (old_files )
152- new_content = get_file (new_files )
153161 if old_content == new_content :
154162 result_files .append ({"fname" : real_fname , "status" : "No changes" })
155163 else :
0 commit comments