diff options
Diffstat (limited to 'bitbake')
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 49918089d2..b8f0c23de8 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
@@ -2363,20 +2363,27 @@ if True: | |||
2363 | # create custom recipe | 2363 | # create custom recipe |
2364 | try: | 2364 | try: |
2365 | # create layer 'Custom layer' and verion if needed | 2365 | # create layer 'Custom layer' and verion if needed |
2366 | layer = Layer.objects.get_or_create(name="toaster-custom-images", | 2366 | layer = Layer.objects.get_or_create( |
2367 | summary="Layer for custom recipes", | 2367 | name="toaster-custom-images", |
2368 | vcs_url="file:///toaster_created_layer" | 2368 | summary="Layer for custom recipes", |
2369 | )[0] | 2369 | vcs_url="file:///toaster_created_layer")[0] |
2370 | 2370 | ||
2371 | lver = Layer_Version.objects.get_or_create( | 2371 | # Check if we have a layer version already |
2372 | project=params['project'], | 2372 | # We don't use get_or_create here because the dirpath will change |
2373 | layer=layer, | 2373 | # and is a required field |
2374 | dirpath='toaster_created_layer', | 2374 | lver = Layer_Version.objects.filter(Q(project=params['project']) & |
2375 | build=None)[0] | 2375 | Q(layer=layer) & |
2376 | Q(build=None)).last() | ||
2377 | if lver == None: | ||
2378 | lver, created = Layer_Version.objects.get_or_create( | ||
2379 | project=params['project'], | ||
2380 | layer=layer, | ||
2381 | dirpath="toaster_created_layer") | ||
2376 | 2382 | ||
2377 | # Add a dependency on our layer to the base recipe's layer | 2383 | # Add a dependency on our layer to the base recipe's layer |
2378 | LayerVersionDependency.objects.get_or_create(layer_version=lver, | 2384 | LayerVersionDependency.objects.get_or_create( |
2379 | depends_on=params["base"].layer_version) | 2385 | layer_version=lver, |
2386 | depends_on=params["base"].layer_version) | ||
2380 | 2387 | ||
2381 | # Add it to our current project if needed | 2388 | # Add it to our current project if needed |
2382 | ProjectLayer.objects.get_or_create(project=params['project'], | 2389 | ProjectLayer.objects.get_or_create(project=params['project'], |
@@ -2384,14 +2391,21 @@ if True: | |||
2384 | optional=False) | 2391 | optional=False) |
2385 | 2392 | ||
2386 | # Create the actual recipe | 2393 | # Create the actual recipe |
2387 | recipe = CustomImageRecipe.objects.create( | 2394 | recipe, created = CustomImageRecipe.objects.get_or_create( |
2388 | name=request.POST["name"], | 2395 | name=request.POST["name"], |
2389 | base_recipe=params["base"], | 2396 | base_recipe=params["base"], |
2390 | project=params["project"], | 2397 | project=params["project"], |
2391 | file_path=request.POST["name"], | 2398 | layer_version=lver, |
2392 | license="MIT", | 2399 | is_image=True) |
2393 | version="0.1", | 2400 | |
2394 | layer_version=lver) | 2401 | # If we created the object then setup these fields. They may get |
2402 | # overwritten later on and cause the get_or_create to create a | ||
2403 | # duplicate if they've changed. | ||
2404 | if created: | ||
2405 | recipe.file_path = request.POST["name"] | ||
2406 | recipe.license = "MIT" | ||
2407 | recipe.version = "0.1" | ||
2408 | recipe.save() | ||
2395 | 2409 | ||
2396 | except Error as err: | 2410 | except Error as err: |
2397 | return {"error": "Can't create custom recipe: %s" % err} | 2411 | return {"error": "Can't create custom recipe: %s" % err} |
@@ -2445,7 +2459,7 @@ if True: | |||
2445 | {"error": <error message>} | 2459 | {"error": <error message>} |
2446 | """ | 2460 | """ |
2447 | try: | 2461 | try: |
2448 | custom_recipe = CustomImageRecipe.objects.get(id=recipe_id) | 2462 | custom_recipe = CustomImageRecipe.objects.get(id=recipe_id) |
2449 | except CustomImageRecipe.DoesNotExist: | 2463 | except CustomImageRecipe.DoesNotExist: |
2450 | return {"error": "Custom recipe with id=%s " | 2464 | return {"error": "Custom recipe with id=%s " |
2451 | "not found" % recipe_id} | 2465 | "not found" % recipe_id} |