def test_parse_partial_config(self):
        parsed = parse_external_schedule({
            'repeatable': False,
            'startDatetime': '2020-12-30'
        })

        self.assertDictEqual(
            {
                'repeatable': False,
                'start_datetime': '2020-12-30',
                'repeat_unit': None,
                'repeat_period': None,
                'weekdays': None
            }, parsed)
    def test_parse_unknown_field(self):
        parsed = parse_external_schedule({
            'repeatable': False,
            'startDatetime': '2020-12-30',
            'anotherField': 'abc'
        })

        self.assertDictEqual(
            {
                'repeatable': False,
                'start_datetime': '2020-12-30',
                'repeat_unit': None,
                'repeat_period': None,
                'weekdays': None
            }, parsed)
    def test_parse_full_config(self):
        parsed = parse_external_schedule({
            'repeatable': False,
            'startDatetime': '2020-12-30',
            'repeatUnit': 'days',
            'repeatPeriod': 5,
            'weekDays': ['monday', 'Tuesday']
        })

        self.assertDictEqual(
            {
                'repeatable': False,
                'start_datetime': '2020-12-30',
                'repeat_unit': 'days',
                'repeat_period': 5,
                'weekdays': ['monday', 'Tuesday']
            }, parsed)
Esempio n. 4
0
    def post(self, user):
        arguments = self.form_reader.values
        execution_info = external_model.to_execution_info(arguments)
        parameter_values = execution_info.param_values

        if self.form_reader.files:
            for key, value in self.form_reader.files.items():
                parameter_values[key] = value.path

        schedule_config = json.loads(parameter_values['__schedule_config'])
        del parameter_values['__schedule_config']

        try:
            id = self.application.schedule_service.create_job(
                execution_info.script, parameter_values,
                external_model.parse_external_schedule(schedule_config), user)
        except (UnavailableScriptException, InvalidScheduleException) as e:
            raise tornado.web.HTTPError(422, reason=str(e))
        except InvalidValueException as e:
            raise tornado.web.HTTPError(422, reason=e.get_user_message())

        self.write(json.dumps({'id': id}))