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)
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}))