diff --git a/cms/grading/Job.py b/cms/grading/Job.py index 62c34a6f31..760c5697a7 100644 --- a/cms/grading/Job.py +++ b/cms/grading/Job.py @@ -378,6 +378,15 @@ def from_user_test(operation, user_test, dataset): managers[manager_filename] = \ dataset.managers[manager_filename] + # Copy header files from dataset. + # FIXME This bypasses get_auto_managers() logic + if language is not None: + for manager_filename in dataset.managers: + if any(manager_filename.endswith(header) + for header in language.header_extensions): + managers[manager_filename] = \ + dataset.managers[manager_filename] + return CompilationJob( operation=operation, task_type=dataset.task_type, diff --git a/cms/server/contest/handlers/taskusertest.py b/cms/server/contest/handlers/taskusertest.py index 16a8b276d4..8b1e57ea19 100644 --- a/cms/server/contest/handlers/taskusertest.py +++ b/cms/server/contest/handlers/taskusertest.py @@ -302,8 +302,10 @@ def get(self, task_name, user_test_num, filename): if stored_filename in user_test.files: digest = user_test.files[stored_filename].digest - elif stored_filename in user_test.managers: - digest = user_test.managers[stored_filename].digest + elif filename in user_test.managers: + # Graders are not stored with the .%l suffix + # Instead, the original name is used + digest = user_test.managers[filename].digest else: raise tornado_web.HTTPError(404) self.sql_session.close()