def create_task(request, template_pk): """提交创建任务表单""" if not request.user.is_authenticated: return redirect(reverse('login')) template = get_object_or_404(Template, pk=template_pk) task = Task(user=request.user, template=template) try: task.set_name(request.POST['inputTaskName']) split_arg = task.set_args({ param.name: request.POST[param.name] for param in template.param_set.all() }) except ValueError as e: return JsonResponse({ 'status': 'ERROR', 'message': e.args[0] }, json_dumps_params={'ensure_ascii': False}) task.save() task_arg = task.args_dict() for i in range(split_arg): task_arg[template.split_param] = i + 1 Job.objects.create(uuid=uuid.uuid4(), task=task, args=json.dumps(task_arg)) return JsonResponse({ 'status': 'SUCCESS', 'tasks': get_recent_tasks(request.user) })
def test_set_name_invalid_length(self): """任务名称长度不在规定的范围内""" task = Task(user=self.user, template=self.template) for name in ('t1', ' t1 ', ' ', 't' * 30): with self.assertRaises(ValueError) as cm: task.set_name(name) self.assertEqual('任务名长度应在3~20个字符之间', cm.exception.args[0])
def test_name_already_exists(self): """任务名称已存在""" Task.objects.create(user=self.user, template=self.template, name='task1') task = Task(user=self.user, template=self.template) with self.assertRaises(ValueError) as cm: task.set_name(' task1\t\r\n') self.assertEqual('任务名称已存在', cm.exception.args[0]) # 重新运行任务时如果未修改任务名称则不应报错(名称与自己重复) task = self.user.task_set.get() task.set_name(' task1 ') self.assertEqual('task1', task.name)
def test_set_name(self): task = Task(user=self.user, template=self.template) task.set_name(' task1\t\r\n') self.assertEqual('task1', task.name)