diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2014-09-29 20:20:33 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-10-30 13:39:50 +0000 |
commit | 1b109c7908a87bfc20c058116b6b72cc16155399 (patch) | |
tree | 520bec43876febd6e311ef8aa34ef4866db1b7ab /bitbake/lib/toaster/toastergui/views.py | |
parent | 960580cb70ab1c775b49f8a40d41632c080b3cbb (diff) | |
download | poky-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-x | bitbake/lib/toaster/toastergui/views.py | 28 |
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 | ] |