diff options
Diffstat (limited to 'bitbake/lib/toaster/toastergui/views.py')
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 115 |
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 | ||