diff options
Diffstat (limited to 'lib/toaster/toastergui/views.py')
-rwxr-xr-x | lib/toaster/toastergui/views.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py index 9f214bb67..a0dcf8797 100755 --- a/lib/toaster/toastergui/views.py +++ b/lib/toaster/toastergui/views.py @@ -2015,10 +2015,20 @@ if toastermain.settings.MANAGED: response['Pragma'] = "no-cache" return response + # This is a wrapper for xhr_projectbuild which allows for a project id + # which only becomes known client side. + def xhr_build(request): + if request.POST.has_key("project_id"): + pid = request.POST['project_id'] + return xhr_projectbuild(request, pid) + else: + raise BadParameterException("invalid project id") + def xhr_projectbuild(request, pid): try: if request.method != "POST": raise BadParameterException("invalid method") + request.session['project_id'] = pid prj = Project.objects.get(id = pid) @@ -2057,6 +2067,8 @@ if toastermain.settings.MANAGED: except Exception as e: return HttpResponse(jsonfilter({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json") + # This is a wraper for xhr_projectedit which allows for a project id + # which only becomes known client side def xhr_projectinfo(request): if request.POST.has_key("project_id") == False: raise BadParameterException("invalid project id") @@ -2121,8 +2133,12 @@ if toastermain.settings.MANAGED: def xhr_datatypeahead(request): try: prj = None - if 'project_id' in request.session: + if request.GET.has_key('project_id'): + prj = Project.objects.get(pk = request.GET['project_id']) + elif 'project_id' in request.session: prj = Project.objects.get(pk = request.session['project_id']) + else: + raise Exception("No valid project selected") # returns layers for current project release that are not in the project set if request.GET['type'] == "layers": @@ -2188,6 +2204,14 @@ if toastermain.settings.MANAGED: }), content_type = "application/json") + if request.GET['type'] == "projects": + queryset_all = Project.objects.all() + ret = { "error": "ok", + "list": map (lambda x: {"id":x.pk, "name": x.name}, + queryset_all.filter(name__icontains=request.GET.get('value',''))[:8])} + + return HttpResponse(jsonfilter(ret), content_type = "application/json") + raise Exception("Unknown request! " + request.GET.get('type', "No parameter supplied")) except Exception as e: return HttpResponse(jsonfilter({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json") @@ -2773,6 +2797,12 @@ else: def xhr_projectbuild(request, pid): raise Exception("page not available in interactive mode") + def xhr_build(request, pid): + raise Exception("page not available in interactive mode") + + def xhr_projectinfo(request, pid): + raise Exception("page not available in interactive mode") + def xhr_projectedit(request, pid): raise Exception("page not available in interactive mode") |