diff options
author | Michael Wood <michael.g.wood@intel.com> | 2015-01-14 12:46:52 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-01-16 08:25:31 +0000 |
commit | 025533d90b694ed37278c8f5be85afbd05857971 (patch) | |
tree | 51bb70fa2873285e1e6d716cf637d78ccb538317 /bitbake/lib/toaster/toastergui/views.py | |
parent | 2a6f739f1d3a0383d849cb2944c69797b4b3e437 (diff) | |
download | poky-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-x | bitbake/lib/toaster/toastergui/views.py | 94 |
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") | ||