summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/views.py
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2015-01-14 12:46:52 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-01-16 08:25:31 +0000
commit025533d90b694ed37278c8f5be85afbd05857971 (patch)
tree51bb70fa2873285e1e6d716cf637d78ccb538317 /bitbake/lib/toaster/toastergui/views.py
parent2a6f739f1d3a0383d849cb2944c69797b4b3e437 (diff)
downloadpoky-025533d90b694ed37278c8f5be85afbd05857971.tar.gz
bitbake: toaster: Add layer details page feature
This commit adds the layer details page which shows the metadata for the layer such as layer description, machines associated with the layer as well as the targets provided. If the layer is an imported layer this page also allows you to update the layer's configuration. >From this page you can add/remove the layer from the current project (Bitbake rev: c1442bc68ad8ba20c37b1a7cde1400297f4be811) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/views.py')
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py94
1 files changed, 93 insertions, 1 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 8c21ca48e0..7a9d662b31 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -2336,6 +2336,50 @@ if toastermain.settings.MANAGED:
2336 2336
2337 return HttpResponse(jsonfilter({"error": "ok", "imported_layer" : { "name" : layer.name, "id": layer_version.id }, "deps_added": layers_added }), content_type = "application/json") 2337 return HttpResponse(jsonfilter({"error": "ok", "imported_layer" : { "name" : layer.name, "id": layer_version.id }, "deps_added": layers_added }), content_type = "application/json")
2338 2338
2339 def xhr_updatelayer(request):
2340
2341 def error_response(error):
2342 return HttpResponse(jsonfilter({"error": error}), content_type = "application/json")
2343
2344 if not request.POST.has_key("layer_version_id"):
2345 return error_response("Please specify a layer version id")
2346 try:
2347 layer_version_id = request.POST["layer_version_id"]
2348 layer_version = Layer_Version.objects.get(id=layer_version_id)
2349 except:
2350 return error_response("Cannot find layer to update")
2351
2352
2353 if request.POST.has_key("vcs_url"):
2354 layer_version.layer.vcs_url = request.POST["vcs_url"]
2355 if request.POST.has_key("dirpath"):
2356 layer_version.dirpath = request.POST["dirpath"]
2357 if request.POST.has_key("commit"):
2358 layer_version.commit = request.POST["commit"]
2359 if request.POST.has_key("up_branch"):
2360 layer_version.up_branch_id = int(request.POST["up_branch"])
2361
2362 if request.POST.has_key("add_dep"):
2363 lvd = LayerVersionDependency(layer_version=layer_version, depends_on_id=request.POST["add_dep"])
2364 lvd.save()
2365
2366 if request.POST.has_key("rm_dep"):
2367 rm_dep = LayerVersionDependency.objects.get(layer_version=layer_version, depends_on_id=request.POST["rm_dep"])
2368 rm_dep.delete()
2369
2370 if request.POST.has_key("summary"):
2371 layer_version.layer.summary = request.POST["summary"]
2372 if request.POST.has_key("description"):
2373 layer_version.layer.description = request.POST["description"]
2374
2375 try:
2376 layer_version.layer.save()
2377 layer_version.save()
2378 except:
2379 return error_response("Could not update layer version entry")
2380
2381 return HttpResponse(jsonfilter({"error": "ok",}), content_type = "application/json")
2382
2339 2383
2340 2384
2341 def importlayer(request): 2385 def importlayer(request):
@@ -2439,8 +2483,53 @@ if toastermain.settings.MANAGED:
2439 2483
2440 def layerdetails(request, layerid): 2484 def layerdetails(request, layerid):
2441 template = "layerdetails.html" 2485 template = "layerdetails.html"
2486 limit = 10
2487
2488 if request.GET.has_key("limit"):
2489 request.session['limit'] = request.GET['limit']
2490
2491 if request.session.has_key('limit'):
2492 limit = request.session['limit']
2493
2494 layer_version = Layer_Version.objects.get(pk = layerid)
2495
2496 # Targets tab query functionality
2497 if request.GET.has_key('targets_search'):
2498 targets = Paginator(Recipe.objects.filter(layer_version=layer_version,name__icontains=request.GET['targets_search']).order_by("name"), limit)
2499 else:
2500 targets = Paginator(Recipe.objects.filter(layer_version=layer_version).order_by("name"), limit)
2501
2502 if request.GET.has_key("tpage"):
2503 try:
2504 targets = targets.page(request.GET['tpage'])
2505 except EmptyPage:
2506 targets = targets.page(targets.num_pages)
2507 else:
2508 targets = targets.page(1)
2509
2510 # Machines tab query functionality
2511 if request.GET.has_key('machines_search'):
2512 machines = Paginator(Machine.objects.filter(layer_version=layer_version,name__icontains=request.GET['machines_search']).order_by("name"), limit)
2513 else:
2514 machines = Paginator(Machine.objects.filter(layer_version=layer_version).order_by("name"), limit)
2515
2516 if request.GET.has_key("mpage"):
2517 try:
2518 machines = machines.page(request.GET['mpage'])
2519 except EmptyPage:
2520 machines = machines.page(machines.num_pages)
2521 else:
2522 machines = machines.page(1)
2523
2442 context = { 2524 context = {
2443 'layerversion': Layer_Version.objects.get(pk = layerid), 2525 'layerversion': layer_version,
2526 'layer_in_project' : ProjectLayer.objects.filter(project_id=request.session['project_id'],layercommit=layerid).count(),
2527 'yocto_compat': Branch.objects.filter(layer_source=layer_version.layer_source),
2528 'machines': machines,
2529 'targets': targets,
2530 'total_targets': Recipe.objects.filter(layer_version=layer_version).count(),
2531
2532 'total_machines': Machine.objects.filter(layer_version=layer_version).count(),
2444 } 2533 }
2445 return render(request, template, context) 2534 return render(request, template, context)
2446 2535
@@ -2972,3 +3061,6 @@ else:
2972 3061
2973 def xhr_importlayer(request): 3062 def xhr_importlayer(request):
2974 raise Exception("page not available in interactive mode") 3063 raise Exception("page not available in interactive mode")
3064
3065 def xhr_updatelayer(request):
3066 raise Exception("page not available in interactive mode")