summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/views.py')
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py115
1 files changed, 0 insertions, 115 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 2efb0fd56c..94b630a8f7 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -1509,121 +1509,6 @@ if True:
1509 return HttpResponse(json.dumps({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json") 1509 return HttpResponse(json.dumps({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json")
1510 1510
1511 1511
1512 def xhr_importlayer(request):
1513 if ('vcs_url' not in request.POST or
1514 'name' not in request.POST or
1515 'git_ref' not in request.POST or
1516 'project_id' not in request.POST):
1517 return HttpResponse(jsonfilter({"error": "Missing parameters; requires vcs_url, name, git_ref and project_id"}), content_type = "application/json")
1518
1519 layers_added = [];
1520
1521 # Rudimentary check for any possible html tags
1522 for val in request.POST.values():
1523 if "<" in val:
1524 return HttpResponse(jsonfilter(
1525 {"error": "Invalid character <"}),
1526 content_type="application/json")
1527
1528 prj = Project.objects.get(pk=request.POST['project_id'])
1529
1530 # Strip trailing/leading whitespace from all values
1531 # put into a new dict because POST one is immutable.
1532 post_data = dict()
1533 for key,val in request.POST.items():
1534 post_data[key] = val.strip()
1535
1536
1537 try:
1538 layer, layer_created = Layer.objects.get_or_create(name=post_data['name'])
1539 except MultipleObjectsReturned:
1540 return HttpResponse(jsonfilter({"error": "hint-layer-exists"}), content_type = "application/json")
1541
1542 if layer:
1543 if layer_created:
1544 layer.vcs_url = post_data.get('vcs_url')
1545 layer.local_source_dir = post_data.get('local_source_dir')
1546 layer.up_date = timezone.now()
1547 layer.save()
1548 else:
1549 # We have an existing layer by this name, let's see if the git
1550 # url is the same, if it is then we can just create a new layer
1551 # version for this layer. Otherwise we need to bail out.
1552 if layer.vcs_url != post_data['vcs_url']:
1553 return HttpResponse(jsonfilter({"error": "hint-layer-exists-with-different-url" , "current_url" : layer.vcs_url, "current_id": layer.id }), content_type = "application/json")
1554
1555 layer_version, version_created = \
1556 Layer_Version.objects.get_or_create(
1557 layer_source=LayerSource.TYPE_IMPORTED,
1558 layer=layer, project=prj,
1559 release=prj.release,
1560 branch=post_data['git_ref'],
1561 commit=post_data['git_ref'],
1562 dirpath=post_data['dir_path'])
1563
1564 if layer_version:
1565 if not version_created:
1566 return HttpResponse(jsonfilter({"error":
1567 "hint-layer-version-exists",
1568 "existing_layer_version":
1569 layer_version.id }),
1570 content_type = "application/json")
1571
1572 layer_version.layer_source = LayerSource.TYPE_IMPORTED
1573
1574 layer_version.up_date = timezone.now()
1575 layer_version.save()
1576
1577 # Add the dependencies specified for this new layer
1578 if ('layer_deps' in post_data and
1579 version_created and
1580 len(post_data["layer_deps"]) > 0):
1581 for layer_dep_id in post_data["layer_deps"].split(","):
1582
1583 layer_dep_obj = Layer_Version.objects.get(pk=layer_dep_id)
1584 LayerVersionDependency.objects.get_or_create(layer_version=layer_version, depends_on=layer_dep_obj)
1585 # Now add them to the project, we could get an execption
1586 # if the project now contains the exact
1587 # dependency already (like modified on another page)
1588 try:
1589 prj_layer, prj_layer_created = ProjectLayer.objects.get_or_create(layercommit=layer_dep_obj, project=prj)
1590 except IntegrityError as e:
1591 logger.warning("Integrity error while saving Project Layers: %s (original %s)" % (e, e.__cause__))
1592 continue
1593
1594 if prj_layer_created:
1595 layerdepdetailurl = reverse('layerdetails', args=(prj.id, layer_dep_obj.pk))
1596 layers_added.append({'id': layer_dep_obj.id, 'name': Layer.objects.get(id=layer_dep_obj.layer_id).name, 'layerdetailurl': layerdepdetailurl })
1597
1598
1599 # If an old layer version exists in our project then remove it
1600 for prj_layers in ProjectLayer.objects.filter(project=prj):
1601 dup_layer_v = Layer_Version.objects.filter(id=prj_layers.layercommit_id, layer_id=layer.id)
1602 if len(dup_layer_v) >0 :
1603 prj_layers.delete()
1604
1605 # finally add the imported layer (version id) to the project
1606 ProjectLayer.objects.create(layercommit=layer_version, project=prj,optional=1)
1607
1608 else:
1609 # We didn't create a layer version so back out now and clean up.
1610 if layer_created:
1611 layer.delete()
1612
1613 return HttpResponse(jsonfilter({"error": "Uncaught error: Could not create layer version"}), content_type = "application/json")
1614
1615 layerdetailurl = reverse('layerdetails', args=(prj.id, layer_version.pk))
1616
1617 json_response = {"error": "ok",
1618 "imported_layer" : {
1619 "name" : layer.name,
1620 "id": layer_version.id,
1621 "layerdetailurl": layerdetailurl,
1622 },
1623 "deps_added": layers_added }
1624
1625 return HttpResponse(jsonfilter(json_response), content_type = "application/json")
1626
1627 def customrecipe_download(request, pid, recipe_id): 1512 def customrecipe_download(request, pid, recipe_id):
1628 recipe = get_object_or_404(CustomImageRecipe, pk=recipe_id) 1513 recipe = get_object_or_404(CustomImageRecipe, pk=recipe_id)
1629 1514