Replace references to the now deprecated layersource models across
Toaster with the new enums for layer source types.

Signed-off-by: Michael Wood <[email protected]>
---
 .../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

-- 
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Reply via email to