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)}
def site_new(request, task_id): user = request.user task = Task.objects.get(id=task_id) if task.user != user and not user.has_perm('apps.list_all_task'): raise PermissionDenied if request.method == 'POST': new_site = Site() new_site.task = task #post_site = json.loads(request.POST['site']) form = SiteForm(request.POST, instance=new_site) if form.is_valid(): new_site = form.save() return HttpResponseRedirect(reverse("site", args=(task.pk, new_site.pk))) else: form = SiteForm() return render_to_response('site.html', { 'post_url':reverse("site_new", args=(task.pk,)), 'form': form, 'task': task }, RequestContext(request))