예제 #1
0
    def fill_evaluation_environ(self, problem, environ, **kwargs):
        environ['recipe'] = [
            ('compile', 'oioioi.programs.handlers.compile'),
            recipe_placeholder('after_compile'),
            ('collect_tests', 'oioioi.programs.handlers.collect_tests'),
            ('initial_run_tests', 'oioioi.programs.handlers.run_tests',
             dict(kind='EXAMPLE')),
            ('initial_grade_tests', 'oioioi.programs.handlers.grade_tests'),
            ('initial_grade_groups', 'oioioi.programs.handlers.grade_groups'),
            ('initial_grade_submission',
             'oioioi.programs.handlers.grade_submission'),
            ('initial_make_report', 'oioioi.programs.handlers.make_report',
             dict(kind='INITIAL')),
            recipe_placeholder('after_initial_tests'),

            #                ('postpone_final',
            #                    'oioioi.programs.handlers.postpone',
            #                    dict(queue='evalmgr-lowprio')),
            ('final_run_tests', 'oioioi.programs.handlers.run_tests',
             dict(kind='NORMAL')),
            ('final_grade_tests', 'oioioi.programs.handlers.grade_tests'),
            ('final_grade_groups', 'oioioi.programs.handlers.grade_groups'),
            ('final_grade_submission',
             'oioioi.programs.handlers.grade_submission'),
            ('final_make_report', 'oioioi.programs.handlers.make_report'),
            recipe_placeholder('after_final_tests'),
            ('delete_executable',
             'oioioi.programs.handlers.delete_executable'),
        ]

        environ['error_handlers'] = [
            ('delete_executable', 'oioioi.programs.handlers.delete_executable')
        ]

        environ['group_scorer'] = \
                'oioioi.programs.utils.min_group_scorer'
        environ['score_aggregator'] = \
                'oioioi.programs.utils.sum_score_aggregator'

        checker = OutputChecker.objects.get(problem=problem).exe_file
        if checker:
            environ['checker'] = django_to_filetracker_path(checker)

        if getattr(settings, 'USE_UNSAFE_EXEC', False):
            environ['exec_mode'] = 'unsafe'
        else:
            environ['exec_mode'] = settings.SAFE_EXEC_MODE

        if getattr(settings, 'USE_LOCAL_COMPILERS', False):
            environ['compiler'] = 'system-' + environ['language']
예제 #2
0
    def fill_evaluation_environ(self, environ, submission, **kwargs):
        self.generate_base_environ(environ, submission, **kwargs)
        if environ['submission_kind'] != 'TESTRUN':
            return super(ZeusTestRunProblemControllerMixin, self) \
                .fill_evaluation_environ(environ, submission, **kwargs)

        recipe_body = [
            ('submit_testrun_job',
                'oioioi.zeus.handlers.submit_testrun_job'),
            recipe_placeholder('before_testrun_async'),
            ('mark_submission_waiting',
                'oioioi.submitsqueue.handlers.mark_submission_state',
                dict(state='WAITING')),
            ('save_async_job',
                'oioioi.zeus.handlers.save_env',
                dict(kind='TESTRUN')),

            # current job ends here, the following will be asynchronous
            ('mark_submission_in_progress',
                'oioioi.submitsqueue.handlers.mark_submission_state',
                dict(state='PROGRESS-RESUMED')),
            ('import_results',
                'oioioi.zeus.handlers.import_results',
                dict(kind='TESTRUN')),
            ('grade_submission',
                'oioioi.testrun.handlers.grade_submission'),
            ('make_report',
                'oioioi.zeus.handlers.make_zeus_testrun_report'),
        ]
        environ['recipe'].extend(recipe_body)
        environ['zeus_metadata_decoder'] = \
                'oioioi.zeus.handlers.testrun_metadata'
예제 #3
0
    def generate_base_environ(self, environ, submission, **kwargs):
        self.generate_initial_evaluation_environ(environ, submission)
        environ['recipe'] = [
                ('compile',
                    'oioioi.programs.handlers.compile'),
                ('compile_end',
                    'oioioi.programs.handlers.compile_end'),

                recipe_placeholder('after_compile'),

                ('delete_executable',
                    'oioioi.programs.handlers.delete_executable'),
            ]
        environ['error_handlers'] = [('delete_executable',
                    'oioioi.programs.handlers.delete_executable')]

        if getattr(settings, 'USE_UNSAFE_EXEC', False):
            environ['exec_mode'] = 'unsafe'
        else:
            environ['exec_mode'] = settings.SAFE_EXEC_MODE

        environ['untrusted_checker'] = not settings.USE_UNSAFE_CHECKER

        if getattr(settings, 'USE_LOCAL_COMPILERS', False):
            environ['compiler'] = 'system-' + environ['language']
    def generate_base_environ(self, environ, **kwargs):
        environ['recipe'] = [
            ('compile', 'oioioi.programs.handlers.compile'),
            recipe_placeholder('after_compile'),
            ('delete_executable',
             'oioioi.programs.handlers.delete_executable'),
        ]
        environ['error_handlers'] = [
            ('delete_executable', 'oioioi.programs.handlers.delete_executable')
        ]

        if getattr(settings, 'USE_UNSAFE_EXEC', False):
            environ['exec_mode'] = 'unsafe'
        else:
            environ['exec_mode'] = settings.SAFE_EXEC_MODE

        if getattr(settings, 'USE_LOCAL_COMPILERS', False):
            environ['compiler'] = 'system-' + environ['language']
예제 #5
0
    def generate_base_environ(self, environ, **kwargs):
        environ['recipe'] = [
                ('compile',
                    'oioioi.programs.handlers.compile'),

                recipe_placeholder('after_compile'),

                ('delete_executable',
                    'oioioi.programs.handlers.delete_executable'),
            ]
        environ['error_handlers'] = [('delete_executable',
                    'oioioi.programs.handlers.delete_executable')]

        if getattr(settings, 'USE_UNSAFE_EXEC', False):
            environ['exec_mode'] = 'unsafe'
        else:
            environ['exec_mode'] = settings.SAFE_EXEC_MODE

        if getattr(settings, 'USE_LOCAL_COMPILERS', False):
            environ['compiler'] = 'system-' + environ['language']
    def fill_evaluation_environ(self, environ, **kwargs):
        if environ['submission_kind'] != 'TESTRUN':
            return super(ZeusTestRunProblemControllerMixin, self) \
                .fill_evaluation_environ(environ, **kwargs)

        self.generate_base_environ(environ, **kwargs)
        recipe_body = [
            ('submit_testrun_job', 'oioioi.zeus.handlers.submit_testrun_job'),
            recipe_placeholder('before_testrun_async'),
            ('save_async_job', 'oioioi.zeus.handlers.save_env',
             dict(kind='TESTRUN')),

            # current job ends here, the following will be asynchronous
            ('import_results', 'oioioi.zeus.handlers.import_results',
             dict(kind='TESTRUN')),
            ('grade_submission', 'oioioi.testrun.handlers.grade_submission'),
            ('make_report', 'oioioi.zeus.handlers.make_zeus_testrun_report'),
        ]
        environ['recipe'].extend(recipe_body)
        environ['zeus_metadata_decoder'] = \
                'oioioi.zeus.handlers.testrun_metadata'
예제 #7
0
    def generate_base_environ(self, environ, submission, **kwargs):
        contest = submission.problem_instance.contest
        self.generate_initial_evaluation_environ(environ, submission)
        environ['recipe'] = [
            ('compile', 'oioioi.programs.handlers.compile'),
            ('compile_end', 'oioioi.programs.handlers.compile_end'),
            recipe_placeholder('after_compile'),
            ('delete_executable',
             'oioioi.programs.handlers.delete_executable'),
        ]
        environ['error_handlers'] = [
            ('delete_executable', 'oioioi.programs.handlers.delete_executable')
        ]

        if getattr(settings, 'USE_UNSAFE_EXEC', False):
            environ['exec_mode'] = 'unsafe'
        else:
            environ['exec_mode'] = contest.controller.get_safe_exec_mode()

        environ['untrusted_checker'] = not settings.USE_UNSAFE_CHECKER

        if getattr(settings, 'USE_LOCAL_COMPILERS', False):
            environ['compiler'] = 'system-' + environ['language']
예제 #8
0
    def fill_evaluation_environ(self, problem, environ, **kwargs):
        environ['recipe'] = [
                ('compile',
                    'oioioi.programs.handlers.compile'),
                recipe_placeholder('after_compile'),

                ('collect_tests',
                    'oioioi.programs.handlers.collect_tests'),

                ('initial_run_tests',
                    'oioioi.programs.handlers.run_tests',
                    dict(kind='EXAMPLE')),
                ('initial_grade_tests',
                    'oioioi.programs.handlers.grade_tests'),
                ('initial_grade_groups',
                    'oioioi.programs.handlers.grade_groups'),
                ('initial_grade_submission',
                    'oioioi.programs.handlers.grade_submission'),
                ('initial_make_report',
                    'oioioi.programs.handlers.make_report',
                    dict(kind='INITIAL')),
                recipe_placeholder('after_initial_tests'),

#                ('postpone_final',
#                    'oioioi.programs.handlers.postpone',
#                    dict(queue='evalmgr-lowprio')),

                ('final_run_tests',
                    'oioioi.programs.handlers.run_tests',
                    dict(kind='NORMAL')),
                ('final_grade_tests',
                    'oioioi.programs.handlers.grade_tests'),
                ('final_grade_groups',
                    'oioioi.programs.handlers.grade_groups'),
                ('final_grade_submission',
                    'oioioi.programs.handlers.grade_submission'),
                ('final_make_report',
                    'oioioi.programs.handlers.make_report'),
                recipe_placeholder('after_final_tests'),

                ('delete_executable',
                    'oioioi.programs.handlers.delete_executable'),
            ]

        environ['error_handlers'] = [ ('delete_executable',
                    'oioioi.programs.handlers.delete_executable') ]

        environ['group_scorer'] = \
                'oioioi.programs.utils.min_group_scorer'
        environ['score_aggregator'] = \
                'oioioi.programs.utils.sum_score_aggregator'

        checker = OutputChecker.objects.get(problem=problem).exe_file
        if checker:
            environ['checker'] = django_to_filetracker_path(checker)

        if getattr(settings, 'USE_UNSAFE_EXEC', False):
            environ['exec_mode'] = 'unsafe'
        else:
            environ['exec_mode'] = settings.SAFE_EXEC_MODE

        if getattr(settings, 'USE_LOCAL_COMPILERS', False):
            environ['compiler'] = 'system-' + environ['language']
예제 #9
0
    def generate_recipe(self, kinds):
        recipe_body = [
                ('collect_tests',
                'oioioi.programs.handlers.collect_tests'),
        ]

        if 'INITIAL' in kinds:
            recipe_body.extend(
                    [
                        ('initial_run_tests',
                            'oioioi.programs.handlers.run_tests',
                            dict(kind='EXAMPLE')),
                        ('initial_grade_tests',
                            'oioioi.programs.handlers.grade_tests'),
                        ('initial_grade_groups',
                            'oioioi.programs.handlers.grade_groups'),
                        ('initial_grade_submission',
                            'oioioi.programs.handlers.grade_submission',
                            dict(kind='EXAMPLE')),
                        ('initial_make_report',
                            'oioioi.programs.handlers.make_report',
                            dict(kind='INITIAL')),
                        recipe_placeholder('after_initial_tests'),
                    ]
            )

        if 'NORMAL' in kinds or 'HIDDEN' in kinds:
            recipe_body.append(recipe_placeholder('before_final_tests'))

        if 'NORMAL' in kinds:
            recipe_body.extend(
                [
                    ('final_run_tests',
                        'oioioi.programs.handlers.run_tests',
                        dict(kind='NORMAL')),
                    ('final_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('final_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('final_grade_submission',
                        'oioioi.programs.handlers.grade_submission'),
                    ('final_make_report',
                        'oioioi.programs.handlers.make_report'),
                    recipe_placeholder('after_final_tests'),
                ])

        if 'HIDDEN' in kinds:
            recipe_body.extend(
                [
                    ('hidden_run_tests',
                        'oioioi.programs.handlers.run_tests'),
                    ('hidden_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('hidden_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('hidden_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind=None)),
                    ('hidden_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='HIDDEN')),
                    recipe_placeholder('after_all_tests'),
                ])
        return recipe_body
    def generate_recipe(self, kinds):
        recipe_body = []

        if 'INITIAL' in kinds:
            recipe_body.extend([
                recipe_placeholder('before_initial_tests'),
                ('initial_submit_job', 'oioioi.zeus.handlers.submit_job',
                 dict(kind='INITIAL')),
                recipe_placeholder('before_initial_async'),
                ('initial_save_async_job', 'oioioi.zeus.handlers.save_env',
                 dict(kind='INITIAL')),

                # current job ends here, the following will be asynchronous
                ('initial_import_tests', 'oioioi.zeus.handlers.import_results',
                 dict(kind='INITIAL', map_to_kind='EXAMPLE')),
                ('initial_update_tests_set',
                 'oioioi.zeus.handlers.update_problem_tests_set',
                 dict(kind='EXAMPLE')),
                ('initial_grade_tests',
                 'oioioi.programs.handlers.grade_tests'),
                ('initial_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('initial_grade_submission',
                 'oioioi.programs.handlers.grade_submission',
                 dict(kind='EXAMPLE')),
                ('initial_make_report', 'oioioi.programs.handlers.make_report',
                 dict(kind='INITIAL')),
                recipe_placeholder('after_initial_tests'),
            ])

        if 'NORMAL' in kinds:
            recipe_body.extend([
                recipe_placeholder('before_final_tests'),
                ('final_submit_job', 'oioioi.zeus.handlers.submit_job',
                 dict(kind='NORMAL')),
                recipe_placeholder('before_final_async'),
                ('final_save_async_job', 'oioioi.zeus.handlers.save_env',
                 dict(kind='NORMAL')),

                # current job ends here, the following will be asynchronous
                ('final_import_results', 'oioioi.zeus.handlers.import_results',
                 dict(kind='NORMAL')),
                ('final_update_tests_set',
                 'oioioi.zeus.handlers.update_problem_tests_set',
                 dict(kind='NORMAL')),
                ('final_grade_tests', 'oioioi.programs.handlers.grade_tests'),
                ('final_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('final_grade_submission',
                 'oioioi.programs.handlers.grade_submission'),
                ('final_make_report', 'oioioi.programs.handlers.make_report'),
                recipe_placeholder('after_final_tests'),
            ])

        if 'HIDDEN' in kinds:
            recipe_body.extend([
                ('initial_submit_job', 'oioioi.zeus.handlers.submit_job',
                 dict(kind='INITIAL')),
                recipe_placeholder('before_initial_async'),
                ('initial_save_async_job', 'oioioi.zeus.handlers.save_env',
                 dict(kind='INITIAL')),

                # current job ends here, the following will be asynchronous
                ('final_submit_job', 'oioioi.zeus.handlers.submit_job',
                 dict(kind='NORMAL')),
                recipe_placeholder('before_final_async'),
                ('final_save_async_job', 'oioioi.zeus.handlers.save_env',
                 dict(kind='NORMAL')),

                # another asynchronous part
                ('initial_import_tests', 'oioioi.zeus.handlers.import_results',
                 dict(kind='INITIAL', map_to_kind='EXAMPLE')),
                ('initial_update_tests_set',
                 'oioioi.zeus.handlers.update_problem_tests_set',
                 dict(kind='EXAMPLE')),
                ('final_import_tests', 'oioioi.zeus.handlers.import_results',
                 dict(kind='NORMAL')),
                ('final_update_tests_set',
                 'oioioi.zeus.handlers.update_problem_tests_set',
                 dict(kind='NORMAL')),
                ('hidden_grade_tests', 'oioioi.programs.handlers.grade_tests'),
                ('hidden_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('hidden_grade_submission',
                 'oioioi.programs.handlers.grade_submission', dict(kind=None)),
                ('hidden_make_report', 'oioioi.programs.handlers.make_report',
                 dict(kind='HIDDEN')),
                recipe_placeholder('after_all_tests'),
            ])

        return recipe_body
예제 #11
0
    def generate_recipe(self, kinds):
        recipe_body = [
        ]

        # NOTE this will do nothing if the contest type is ACM
        # and kinds=['FULL']
        if 'INITIAL' in kinds:
            recipe_body.extend(
                [
                    recipe_placeholder('before_initial_tests'),
                    ('initial_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='INITIAL')),
                    recipe_placeholder('before_initial_async'),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),
                    ('initial_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='INITIAL')),
                    ('dump',
                        'oioioi.evalmgr.handlers.dump_env',
                        dict(message="AFTER INITIAL")),


                    # current job ends here, the following will be asynchronous
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('initial_import_results',
                        'oioioi.zeus.handlers.import_results'),
                    ('initial_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='EXAMPLE')),
                    ('initial_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('initial_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('initial_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind='EXAMPLE')),
                    ('initial_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='INITIAL')),
                    recipe_placeholder('after_initial_tests'),
                ]
            )

        if 'NORMAL' in kinds:
            recipe_body.extend(
                [
                    recipe_placeholder('before_final_tests'),
                    ('final_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='NORMAL')),
                    recipe_placeholder('before_final_async'),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),
                    ('final_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='NORMAL')),
                    ('dump',
                        'oioioi.evalmgr.handlers.dump_env',
                        dict(message="AFTER NORMAL")),

                    # current job ends here, the following will be asynchronous
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('final_import_results',
                        'oioioi.zeus.handlers.import_results'),
                    ('final_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='NORMAL')),
                    ('final_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('final_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('final_grade_submission',
                        'oioioi.programs.handlers.grade_submission'),
                    ('final_make_report',
                        'oioioi.programs.handlers.make_report'),
                    recipe_placeholder('after_final_tests'),
                ])

        if 'HIDDEN' in kinds:
            recipe_body.extend(
                [
                    ('initial_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='INITIAL')),
                    recipe_placeholder('before_initial_async'),
                    ('initial_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='INITIAL')),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),

                    # current job ends here, the following will be asynchronous
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('final_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='NORMAL')),
                    recipe_placeholder('before_final_async'),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),
                    ('final_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='NORMAL')),

                    # another asynchronous part
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('import_results',
                        'oioioi.zeus.handlers.import_results'),
                    ('initial_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='EXAMPLE')),
                    #('final_import_tests', TODO this does nothing, remove it
                    #    'oioioi.zeus.handlers.import_results',
                    #    dict(kind='NORMAL')),
                    ('final_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='NORMAL')),
                    ('hidden_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('hidden_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('hidden_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind=None)),
                    ('hidden_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='HIDDEN')),
                    recipe_placeholder('after_all_tests'),
                ])

        return recipe_body
예제 #12
0
    def generate_recipe(self, kinds):
        recipe_body = [
        ]

        if 'INITIAL' in kinds:
            recipe_body.extend(
                [
                    recipe_placeholder('before_initial_tests'),
                    ('initial_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='INITIAL')),
                    recipe_placeholder('before_initial_async'),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),
                    ('initial_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='INITIAL')),

                    # current job ends here, the following will be asynchronous
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('initial_import_tests',
                        'oioioi.zeus.handlers.import_results',
                        dict(kind='INITIAL', map_to_kind='EXAMPLE')),
                    ('initial_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='EXAMPLE')),
                    ('initial_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('initial_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('initial_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind='EXAMPLE')),
                    ('initial_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='INITIAL')),
                    recipe_placeholder('after_initial_tests'),
                ]
            )

        if 'NORMAL' in kinds:
            recipe_body.extend(
                [
                    recipe_placeholder('before_final_tests'),
                    ('final_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='NORMAL')),
                    recipe_placeholder('before_final_async'),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),
                    ('final_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='NORMAL')),

                    # current job ends here, the following will be asynchronous
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('final_import_results',
                        'oioioi.zeus.handlers.import_results',
                        dict(kind='NORMAL')),
                    ('final_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='NORMAL')),
                    ('final_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('final_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('final_grade_submission',
                        'oioioi.programs.handlers.grade_submission'),
                    ('final_make_report',
                        'oioioi.programs.handlers.make_report'),
                    recipe_placeholder('after_final_tests'),
                ])

        if 'HIDDEN' in kinds:
            recipe_body.extend(
                [
                    ('initial_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='INITIAL')),
                    recipe_placeholder('before_initial_async'),
                    ('initial_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='INITIAL')),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),

                    # current job ends here, the following will be asynchronous
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('final_submit_job',
                        'oioioi.zeus.handlers.submit_job',
                        dict(kind='NORMAL')),
                    recipe_placeholder('before_final_async'),
                    ('mark_submission_waiting',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='WAITING')),
                    ('final_save_async_job',
                        'oioioi.zeus.handlers.save_env',
                        dict(kind='NORMAL')),

                    # another asynchronous part
                    ('mark_submission_in_progress',
                        'oioioi.submitsqueue.handlers.mark_submission_state',
                        dict(state='PROGRESS-RESUMED')),
                    ('initial_import_tests',
                        'oioioi.zeus.handlers.import_results',
                        dict(kind='INITIAL', map_to_kind='EXAMPLE')),
                    ('initial_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='EXAMPLE')),
                    ('final_import_tests',
                        'oioioi.zeus.handlers.import_results',
                        dict(kind='NORMAL')),
                    ('final_update_tests_set',
                        'oioioi.zeus.handlers.update_problem_tests_set',
                        dict(kind='NORMAL')),
                    ('hidden_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('hidden_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('hidden_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind=None)),
                    ('hidden_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='HIDDEN')),
                    recipe_placeholder('after_all_tests'),
                ])

        return recipe_body
예제 #13
0
    def generate_recipe(self, kinds):
        recipe_body = [
                ('collect_tests',
                'oioioi.programs.handlers.collect_tests'),
        ]

        if 'INITIAL' in kinds:
            recipe_body.extend(
                [
                    ('initial_run_tests',
                        'oioioi.programs.handlers.run_tests',
                        dict(kind='EXAMPLE')),
                    ('initial_run_tests_end',
                        'oioioi.programs.handlers.run_tests_end'),
                    ('initial_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('initial_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('initial_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind='EXAMPLE')),
                    ('initial_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='INITIAL')),
                    recipe_placeholder('after_initial_tests'),
                ])

        if 'USER_OUTS' in kinds:
            recipe_body.extend(
                [
                    ('userout_run_tests',
                        'oioioi.programs.handlers.run_tests',
                        dict(kind=None)),
                    ('userout_run_tests',
                        'oioioi.programs.handlers.run_tests_end'),
                    ('userout_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('userout_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('userout_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind=None)),
                    ('userout_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='USER_OUTS', save_scores=False)),
                    ('userout_fill_outfile_in_existing_test_reports',
                        'oioioi.programs.handlers.'
                        'fill_outfile_in_existing_test_reports'),
                    ('userout_insert_existing_submission_link',
                        'oioioi.programs.handlers.'
                        'insert_existing_submission_link'),
                ])

        if 'NORMAL' in kinds or 'HIDDEN' in kinds or 'FULL' in kinds:
            recipe_body.append(recipe_placeholder('before_final_tests'))

        if 'NORMAL' in kinds:
            recipe_body.extend(
                [
                    ('final_run_tests',
                        'oioioi.programs.handlers.run_tests',
                        dict(kind='NORMAL')),
                    ('final_run_tests_end',
                        'oioioi.programs.handlers.run_tests_end'),
                    ('final_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('final_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('final_grade_submission',
                        'oioioi.programs.handlers.grade_submission'),
                    ('final_make_report',
                        'oioioi.programs.handlers.make_report'),
                    recipe_placeholder('after_final_tests'),
                ])

        if 'HIDDEN' in kinds:
            recipe_body.extend(
                [
                    ('hidden_run_tests',
                        'oioioi.programs.handlers.run_tests'),
                    ('hidden_run_tests_end',
                        'oioioi.programs.handlers.run_tests_end'),
                    ('hidden_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('hidden_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('hidden_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind=None)),
                    ('hidden_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='HIDDEN')),
                    recipe_placeholder('after_all_tests'),
                ])

        if 'FULL' in kinds:
            recipe_body.extend(
                [
                    ('full_run_tests',
                        'oioioi.programs.handlers.run_tests'),
                    ('full_run_tests',
                        'oioioi.programs.handlers.run_tests_end'),
                    ('full_grade_tests',
                        'oioioi.programs.handlers.grade_tests'),
                    ('full_grade_groups',
                        'oioioi.programs.handlers.grade_groups'),
                    ('full_grade_submission',
                        'oioioi.programs.handlers.grade_submission',
                        dict(kind=None)),
                    ('full_make_report',
                        'oioioi.programs.handlers.make_report',
                        dict(kind='FULL')),
                    recipe_placeholder('after_full_tests'),
                ])

        return recipe_body
예제 #14
0
    def generate_recipe(self, kinds):
        recipe_body = [
            ('collect_tests', 'oioioi.programs.handlers.collect_tests'),
        ]

        if 'INITIAL' in kinds:
            recipe_body.extend([
                ('initial_run_tests', 'oioioi.programs.handlers.run_tests',
                 dict(kind='EXAMPLE')),
                ('initial_run_tests_end',
                 'oioioi.programs.handlers.run_tests_end'),
                ('initial_grade_tests',
                 'oioioi.programs.handlers.grade_tests'),
                ('initial_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('initial_grade_submission',
                 'oioioi.programs.handlers.grade_submission',
                 dict(kind='EXAMPLE')),
                ('initial_make_report', 'oioioi.programs.handlers.make_report',
                 dict(kind='INITIAL')),
                recipe_placeholder('after_initial_tests'),
            ])

        if 'USER_OUTS' in kinds:
            recipe_body.extend([
                ('userout_run_tests', 'oioioi.programs.handlers.run_tests',
                 dict(kind=None)),
                ('userout_run_tests',
                 'oioioi.programs.handlers.run_tests_end'),
                ('userout_grade_tests',
                 'oioioi.programs.handlers.grade_tests'),
                ('userout_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('userout_grade_submission',
                 'oioioi.programs.handlers.grade_submission', dict(kind=None)),
                ('userout_make_report', 'oioioi.programs.handlers.make_report',
                 dict(kind='USER_OUTS', save_scores=False)),
                ('userout_fill_outfile_in_existing_test_reports',
                 'oioioi.programs.handlers.'
                 'fill_outfile_in_existing_test_reports'),
                ('userout_insert_existing_submission_link',
                 'oioioi.programs.handlers.'
                 'insert_existing_submission_link'),
            ])

        if 'NORMAL' in kinds or 'HIDDEN' in kinds or 'FULL' in kinds:
            recipe_body.append(recipe_placeholder('before_final_tests'))

        if 'NORMAL' in kinds:
            recipe_body.extend([
                ('final_run_tests', 'oioioi.programs.handlers.run_tests',
                 dict(kind='NORMAL')),
                ('final_run_tests_end',
                 'oioioi.programs.handlers.run_tests_end'),
                ('final_grade_tests', 'oioioi.programs.handlers.grade_tests'),
                ('final_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('final_grade_submission',
                 'oioioi.programs.handlers.grade_submission'),
                ('final_make_report', 'oioioi.programs.handlers.make_report'),
                recipe_placeholder('after_final_tests'),
            ])

        if 'HIDDEN' in kinds:
            recipe_body.extend([
                ('hidden_run_tests', 'oioioi.programs.handlers.run_tests'),
                ('hidden_run_tests_end',
                 'oioioi.programs.handlers.run_tests_end'),
                ('hidden_grade_tests', 'oioioi.programs.handlers.grade_tests'),
                ('hidden_grade_groups',
                 'oioioi.programs.handlers.grade_groups'),
                ('hidden_grade_submission',
                 'oioioi.programs.handlers.grade_submission', dict(kind=None)),
                ('hidden_make_report', 'oioioi.programs.handlers.make_report',
                 dict(kind='HIDDEN')),
                recipe_placeholder('after_all_tests'),
            ])

        if 'FULL' in kinds:
            recipe_body.extend([
                ('full_run_tests', 'oioioi.programs.handlers.run_tests'),
                ('full_run_tests', 'oioioi.programs.handlers.run_tests_end'),
                ('full_grade_tests', 'oioioi.programs.handlers.grade_tests'),
                ('full_grade_groups', 'oioioi.programs.handlers.grade_groups'),
                ('full_grade_submission',
                 'oioioi.programs.handlers.grade_submission', dict(kind=None)),
                ('full_make_report', 'oioioi.programs.handlers.make_report',
                 dict(kind='FULL')),
                recipe_placeholder('after_full_tests'),
            ])

        return recipe_body