summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/views.py
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2014-09-29 20:20:33 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-10-30 13:39:50 +0000
commit1b109c7908a87bfc20c058116b6b72cc16155399 (patch)
tree520bec43876febd6e311ef8aa34ef4866db1b7ab /bitbake/lib/toaster/toastergui/views.py
parent960580cb70ab1c775b49f8a40d41632c080b3cbb (diff)
downloadpoky-1b109c7908a87bfc20c058116b6b72cc16155399.tar.gz
bitbake: toastergui: project edit capabilities in all layers page
This patch definitivates the all layers page, providing interactivity for adding and removing layers inside the project from this page. [YOCTO #6590] (Bitbake rev: e690080f83ad53c5e4a31e8c0fba2cc744eea1eb) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui/views.py')
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 5fe4a9d869..53f46ff532 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -2062,7 +2062,8 @@ if toastermain.settings.MANAGED:
2062 2062
2063 return HttpResponse(json.dumps( { "error":"ok", 2063 return HttpResponse(json.dumps( { "error":"ok",
2064 "list" : map( 2064 "list" : map(
2065 lambda x: {"id": x.pk, "name": x.layer.name, "detail": "(" + x.layer.layer_source.name + (")" if x.up_branch == None else " | "+x.up_branch.name+")")}, 2065 lambda x: {"id": x.pk, "name": x.layer.name, "detail": "(" + x.layer.layer_source.name + (")" if x.up_branch == None else " | "+x.up_branch.name+")"),
2066 "layerdetailurl" : reverse('layerdetails', args=(x.pk,))},
2066 map(lambda x: x.depends_on, queryset_all)) 2067 map(lambda x: x.depends_on, queryset_all))
2067 }), content_type = "application/json") 2068 }), content_type = "application/json")
2068 2069
@@ -2131,8 +2132,18 @@ if toastermain.settings.MANAGED:
2131 (filter_string, search_term, ordering_string) = _search_tuple(request, Layer_Version) 2132 (filter_string, search_term, ordering_string) = _search_tuple(request, Layer_Version)
2132 2133
2133 queryset_all = Layer_Version.objects.all() 2134 queryset_all = Layer_Version.objects.all()
2135 # mock an empty Project if we are outside project context
2136 class _mockProject(object):
2137 id = -1
2138 class _mockManager(object):
2139 def all(self):
2140 return []
2141 projectlayer_set = _mockManager()
2142 prj = _mockProject()
2143
2134 if 'project_id' in request.session: 2144 if 'project_id' in request.session:
2135 queryset_all = queryset_all.filter(up_branch__in = Branch.objects.filter(name = Project.objects.get(pk = request.session['project_id']).release.name)) 2145 prj = Project.objects.get(pk = request.session['project_id'])
2146 queryset_all = queryset_all.filter(up_branch__in = Branch.objects.filter(name = prj.release.name))
2136 2147
2137 queryset_with_search = _get_queryset(Layer_Version, queryset_all, None, search_term, ordering_string, '-layer__name') 2148 queryset_with_search = _get_queryset(Layer_Version, queryset_all, None, search_term, ordering_string, '-layer__name')
2138 queryset = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name') 2149 queryset = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name')
@@ -2142,6 +2153,8 @@ if toastermain.settings.MANAGED:
2142 2153
2143 2154
2144 context = { 2155 context = {
2156 'prj' : prj,
2157 'projectlayerset' : json.dumps(map(lambda x: x.layercommit.id, prj.projectlayer_set.all())),
2145 'objects' : layer_info, 2158 'objects' : layer_info,
2146 'objectname' : "layers", 2159 'objectname' : "layers",
2147 'default_orderby' : 'layer__name:+', 2160 'default_orderby' : 'layer__name:+',
@@ -2164,7 +2177,7 @@ if toastermain.settings.MANAGED:
2164 'filter': { 2177 'filter': {
2165 'class': 'layer', 2178 'class': 'layer',
2166 'label': 'Show:', 2179 'label': 'Show:',
2167 'options': map(lambda x: (x.name, 'layer_source__pk:' + str(x.id), queryset_with_search.filter(layer_source__pk = x.id).count() ), LayerSource.objects.all()), 2180 'options': map(lambda x: (x.name + " layers", 'layer_source__pk:' + str(x.id), queryset_with_search.filter(layer_source__pk = x.id).count() ), LayerSource.objects.all()),
2168 } 2181 }
2169 }, 2182 },
2170 { 'name': 'Git repository URL', 2183 { 'name': 'Git repository URL',
@@ -2188,6 +2201,15 @@ if toastermain.settings.MANAGED:
2188 { 'name': 'Add | Delete', 2201 { 'name': 'Add | Delete',
2189 'dclass': 'span2', 2202 'dclass': 'span2',
2190 'qhelp': "Add or delete layers to / from your project ", 2203 'qhelp': "Add or delete layers to / from your project ",
2204 'filter': {
2205 'class': 'add-del-layers',
2206 'label': 'Show:',
2207 'options': [
2208 ('Layers added to this project', "projectlayer__project:" + str(prj.id), queryset_with_search.filter(projectlayer__project = prj.id).count()),
2209 ('Layers not added to this project', "projectlayer__project:NOT" + str(prj.id), queryset_with_search.exclude(projectlayer__project = prj.id).count()),
2210 ]
2211
2212 }
2191 }, 2213 },
2192 2214
2193 ] 2215 ]