Example #1
0
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)
    })
Example #2
0
 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])
Example #3
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)
Example #4
0
 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)