[Toaster] [PATCH 5/9] toaster: Replace references to LayerSource models
Michael Wood
michael.g.wood at intel.com
Tue Jul 5 08:40:13 PDT 2016
Replace references to the now deprecated layersource models across
Toaster with the new enums for layer source types.
Signed-off-by: Michael Wood <michael.g.wood at intel.com>
---
.../toaster/toastergui/templates/layerdetails.html | 4 +-
bitbake/lib/toaster/toastergui/views.py | 66 ++++++++++++++++------
2 files changed, 50 insertions(+), 20 deletions(-)
diff --git a/bitbake/lib/toaster/toastergui/templates/layerdetails.html b/bitbake/lib/toaster/toastergui/templates/layerdetails.html
index 0f0b2b4..f4215fc 100644
--- a/bitbake/lib/toaster/toastergui/templates/layerdetails.html
+++ b/bitbake/lib/toaster/toastergui/templates/layerdetails.html
@@ -22,7 +22,7 @@
</ul>
{# If this is not an imported layer then hide the edit ui #}
- {% if not layerversion.layer_source_id or layerversion.layer_source.sourcetype != layerversion.layer_source.TYPE_IMPORTED %}
+ {% if layerversion.layer_source != layer_source.TYPE_IMPORTED %}
<style scoped>
.glyphicon-edit {
display:none;
@@ -55,7 +55,7 @@
inCurrentPrj : false,
{% endif %}
layerdetailurl : "{% url 'layerdetails' project.id layerversion.id %}",
- sourceId: {{layerversion.layer_source_id|json}},
+ sourceId: {{layerversion.layer_source|json}},
}
};
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 2db68bd..fd55d16 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -1439,9 +1439,8 @@ if True:
layers = [{"id": x.layercommit.pk, "orderid": x.pk, "name" : x.layercommit.layer.name,
"vcs_url": x.layercommit.layer.vcs_url, "vcs_reference" : x.layercommit.get_vcs_reference(),
"url": x.layercommit.layer.layer_index_url, "layerdetailurl": x.layercommit.get_detailspage_url(prj.pk),
- # This branch name is actually the release
"branch" : {"name" : x.layercommit.get_vcs_reference(),
- "layersource" : x.layercommit.up_branch.layer_source.name if x.layercommit.up_branch != None else None}
+ "layersource" : x.layercommit.layer_source }
} for x in prj.projectlayer_set.all().order_by("id")]
context = {
@@ -1657,10 +1656,7 @@ if True:
# We need to know what release the current project is so that we
# can set the imported layer's up_branch_id
- prj_branch_name = Release.objects.get(pk=prj.release_id).branch_name
- up_branch, branch_created = Branch.objects.get_or_create(name=prj_branch_name, layer_source_id=LayerSource.TYPE_IMPORTED)
- layer_source = LayerSource.objects.get(sourcetype=LayerSource.TYPE_IMPORTED)
try:
layer, layer_created = Layer.objects.get_or_create(name=post_data['name'])
except MultipleObjectsReturned:
@@ -1668,7 +1664,6 @@ if True:
if layer:
if layer_created:
- layer.layer_source = layer_source
layer.vcs_url = post_data['vcs_url']
layer.up_date = timezone.now()
layer.save()
@@ -1679,12 +1674,24 @@ if True:
if layer.vcs_url != post_data['vcs_url']:
return HttpResponse(jsonfilter({"error": "hint-layer-exists-with-different-url" , "current_url" : layer.vcs_url, "current_id": layer.id }), content_type = "application/json")
-
- layer_version, version_created = Layer_Version.objects.get_or_create(layer_source=layer_source, layer=layer, project=prj, up_branch_id=up_branch.id,branch=post_data['git_ref'], commit=post_data['git_ref'], dirpath=post_data['dir_path'])
+ layer_version, version_created = \
+ Layer_Version.objects.get_or_create(
+ layer_source=LayerSource.TYPE_IMPORTED,
+ layer=layer, project=prj,
+ release=prj.release,
+ branch=post_data['git_ref'],
+ commit=post_data['git_ref'],
+ dirpath=post_data['dir_path'])
if layer_version:
if not version_created:
- return HttpResponse(jsonfilter({"error": "hint-layer-version-exists", "existing_layer_version": layer_version.id }), content_type = "application/json")
+ return HttpResponse(jsonfilter({"error":
+ "hint-layer-version-exists",
+ "existing_layer_version":
+ layer_version.id }),
+ content_type = "application/json")
+
+ layer_version.layer_source = LayerSource.TYPE_IMPORTED
layer_version.up_date = timezone.now()
layer_version.save()
@@ -2209,20 +2216,43 @@ if True:
}
return render(request, template, context)
+ # TODO merge with api pseudo api here is used for deps modal
@_template_renderer('layerdetails.html')
def layerdetails(request, pid, layerid):
project = Project.objects.get(pk=pid)
layer_version = Layer_Version.objects.get(pk=layerid)
- context = {'project' : project,
- 'layerversion' : layer_version,
- 'layerdeps' : {"list": [{"id": dep.id,
- "name": dep.layer.name,
- "layerdetailurl": reverse('layerdetails', args=(pid, dep.pk)),
- "vcs_url": dep.layer.vcs_url,
- "vcs_reference": dep.get_vcs_reference()} \
- for dep in layer_version.get_alldeps(project.id)]},
- 'projectlayers': [player.layercommit.id for player in ProjectLayer.objects.filter(project=project)]
+ project_layers = ProjectLayer.objects.filter(
+ project=project).values_list("layercommit_id",
+ flat=True)
+
+ # Temp hack - this is exactly why we don't want context = json api
+ # LayerSource is not serialisable by the objtojson serailiser so skip
+ # it from the response if it's being requested as any other format
+ # YOCTO #9519
+ if "format" in request.GET:
+ layer_sources = 0
+ else:
+ layer_sources = LayerSource
+ # end hack
+
+ context = {
+ 'project': project,
+ 'layer_source': layer_sources,
+ 'layerversion': layer_version,
+ 'layerdeps': {
+ "list": [
+ {
+ "id": dep.id,
+ "name": dep.layer.name,
+ "layerdetailurl": reverse('layerdetails',
+ args=(pid, dep.pk)),
+ "vcs_url": dep.layer.vcs_url,
+ "vcs_reference": dep.get_vcs_reference()
+ }
+ for dep in layer_version.get_alldeps(project.id)]
+ },
+ 'projectlayers': list(project_layers)
}
return context
--
2.7.4
More information about the toaster
mailing list