예제 #1
0
파일: views.py 프로젝트: xunyuw/iFlyQA
def task(request, task_id):
    task = Task.objects.select_related().get(id=task_id)
    user = request.user
    if task.user != user and not user.has_perm('apps.list_all_task'):
        raise PermissionDenied
    if request.method == 'POST':
        method = request.POST.get("method", "")
        if method == 'save':
            controller = TaskController(task)
            controller.export()
            #xg.sendTaskToMaster()
            return HttpResponse('ok')
        elif method == "del_site":
            site_id = request.POST.get("id", 0)
            try:
                site = Site.objects.get(id=int(site_id))
            except Site.DoesNotExist:
                return HttpResponse("not exist")
            site.delete()
            return HttpResponse('ok')
        else:
            if not user.has_perm("apps.change_task"):
                raise PermissionDenied
            form = TaskForm(request.POST, instance=task)
            if form.is_valid():
                new_task = form.save()
                return HttpResponseRedirect(reverse("task", args=(new_task.pk,)))
    sites = task.sites.all()
    form = TaskForm(instance=task)
    return render_to_response('task.html', {
        'post_url':reverse('task', args=(task.pk,)),
        'form':form,
        'task':task,
        'sites':sites,
        'user':user
    }, RequestContext(request))
예제 #2
0
파일: views.py 프로젝트: xunyuw/iFlyQA
def api(request):
    user = request.user
    if not user:
        username = request.POST.get("username", "")
        password = request.POST.get("password", "")
        user = authenticate(username= username, password=password)
    if user is not None and user.has_perm("apps.add_task"):
        method = request.POST.get("method")
        if method == "create_task":
            task_data = request.POST.get("task", "")
            sites_data = request.POST.get("sites", "")
            try:
                task = Task(**json.loads(task_data))
                task.user = user
                task.clean_fields()
                sites = []
                sites_data = json.loads(sites_data)
                for site_data in sites_data:
                    site = Site(**site_data)
                    site.clean_fields(exclude=['task'])
                    sites.append(site)
                task.save()
                for site in sites:
                    site.task = task
                    site.save()
                    rule = Rule(**Constants.DEFAULT_RULE)
                    rule.site = site
                    rule.save()
                controller = TaskController(task)
                controller.runTask()
                ret = {"status":"ok", "task":task.id}
            except Exception, e:
                ret = {"status":"InputError", "error_details":str(e)}
        elif method == "run_task":
            try:
                id = request.POST.get("id")
                task = Task.objects.get(id=id)
                controller = TaskController(task)
                controller.runTask()
                ret = {"status":"ok"}
            except Exception, e:
                ret = {"status":"RunError", "error_details":str(e)}
예제 #3
0
파일: views.py 프로젝트: xunyuw/iFlyQA
     except Exception, e:
         ret = {"status":"InputError", "error_details":str(e)}
 elif method == "run_task":
     try:
         id = request.POST.get("id")
         task = Task.objects.get(id=id)
         controller = TaskController(task)
         controller.runTask()
         ret = {"status":"ok"}
     except Exception, e:
         ret = {"status":"RunError", "error_details":str(e)}
 elif method == "pause_task":
     try:
         id = request.POST.get("id")
         task = Task.objects.get(id=id)
         controller = TaskController(task)
         controller.pauseTask()
         ret = {"status":"ok"}
     except Exception, e:
         ret = {"status":"RunError", "error_details":str(e)}
 elif method == "get_task_info":
     id = int(request.POST.get("id"))
     task = Task.objects.get(id=id)
     ret = {
         "status":"ok",
         "task":{
             "id":task.id,
             "status":task.status,
             #"server":task.server
         }
     }