diff options
Diffstat (limited to 'bitbake/lib/toaster/toastergui')
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 736de784a3..434e1180b0 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
@@ -1957,20 +1957,6 @@ if toastermain.settings.MANAGED: | |||
1957 | 1957 | ||
1958 | raise Exception("Invalid HTTP method for this page") | 1958 | raise Exception("Invalid HTTP method for this page") |
1959 | 1959 | ||
1960 | # returns a queryset of compatible layers for a project | ||
1961 | def _compatible_layerversions_for_project(prj, release = None, layer_name = None): | ||
1962 | if release == None: | ||
1963 | release = prj.release | ||
1964 | # layers on the same branch or layers specifically set for this project | ||
1965 | return Layer_Version.objects.filter((Q(up_branch__name = release.branch_name) & Q(project = None)) | Q(project = prj)) | ||
1966 | |||
1967 | |||
1968 | # returns the equivalence group for all the layers currently set in the project | ||
1969 | def _project_equivalent_layerversions(prj): | ||
1970 | return reduce(lambda x, y: list(x) + list(y), | ||
1971 | # take all equivalent layers for each entry | ||
1972 | map(lambda x: x.layercommit.get_equivalents_wpriority(prj), prj.projectlayer_set.all()) , []) | ||
1973 | |||
1974 | # returns a list for most recent builds; for use in the Project page, xhr_ updates, and other places, as needed | 1960 | # returns a list for most recent builds; for use in the Project page, xhr_ updates, and other places, as needed |
1975 | def _project_recent_build_list(prj): | 1961 | def _project_recent_build_list(prj): |
1976 | return map(lambda x: { | 1962 | return map(lambda x: { |
@@ -2137,7 +2123,7 @@ if toastermain.settings.MANAGED: | |||
2137 | for i in prj.projectlayer_set.all(): | 2123 | for i in prj.projectlayer_set.all(): |
2138 | # find and add a similarly-named layer on the new branch | 2124 | # find and add a similarly-named layer on the new branch |
2139 | try: | 2125 | try: |
2140 | lv = _compatible_layerversions_for_project(prj).filter(layer__name = i.layer.name).get_equivalents_wpriority(prj)[0] | 2126 | lv = prj.compatible_layerversions(layer_name = i.layercommit.layer.name)[0] |
2141 | ProjectLayer.objects.get_or_create(project = prj, layercommit = lv) | 2127 | ProjectLayer.objects.get_or_create(project = prj, layercommit = lv) |
2142 | except IndexError: | 2128 | except IndexError: |
2143 | pass | 2129 | pass |
@@ -2185,24 +2171,25 @@ if toastermain.settings.MANAGED: | |||
2185 | 2171 | ||
2186 | # returns layers for current project release that are not in the project set, matching the name | 2172 | # returns layers for current project release that are not in the project set, matching the name |
2187 | if request.GET['type'] == "layers": | 2173 | if request.GET['type'] == "layers": |
2188 | queryset_all = _compatible_layerversions_for_project(prj).filter(layer__name__icontains=request.GET.get('value','')) | 2174 | # all layers for the current project |
2175 | queryset_all = prj.compatible_layerversions().filter(layer__name__icontains=request.GET.get('value','')) | ||
2189 | 2176 | ||
2190 | queryset_all = queryset_all.exclude(pk__in = [x.id for x in _project_equivalent_layerversions(prj)]) | 2177 | # but not layers with equivalent layers already in project |
2178 | queryset_all = queryset_all.exclude(pk__in = [x.id for x in prj.projectlayer_equivalent_set()])[:8] | ||
2191 | 2179 | ||
2192 | queryset_all = set([x.get_equivalents_wpriority(prj)[0] for x in queryset_all[:8]]) | 2180 | # and show only the selected layers for this project |
2181 | final_list = set([x.get_equivalents_wpriority(prj)[0] for x in queryset_all]) | ||
2193 | 2182 | ||
2194 | return HttpResponse(jsonfilter( { "error":"ok", "list" : map( _lv_to_dict, queryset_all) }), content_type = "application/json") | 2183 | return HttpResponse(jsonfilter( { "error":"ok", "list" : map( _lv_to_dict, final_list) }), content_type = "application/json") |
2195 | 2184 | ||
2196 | 2185 | ||
2197 | # returns layer dependencies for a layer, excluding current project layers | 2186 | # returns layer dependencies for a layer, excluding current project layers |
2198 | if request.GET['type'] == "layerdeps": | 2187 | if request.GET['type'] == "layerdeps": |
2199 | queryset_all = LayerVersionDependency.objects.filter(layer_version_id = request.GET['value']) | 2188 | queryset = prj.compatible_layerversions().exclude(pk__in = [x.id for x in prj.projectlayer_equivalent_set()]).filter( |
2200 | queryset_all = queryset_all.exclude(depends_on__in = _project_equivalent_layerversions(prj)) | 2189 | layer__name__in = [ x.depends_on.layer.name for x in LayerVersionDependency.objects.filter(layer_version_id = request.GET['value'])]) |
2201 | queryset_all.order_by("-up_id"); | 2190 | |
2191 | return HttpResponse(jsonfilter( { "error":"ok", "list" : map( _lv_to_dict, queryset) }), content_type = "application/json") | ||
2202 | 2192 | ||
2203 | return HttpResponse(jsonfilter( { "error":"ok", | ||
2204 | "list" : map( _lv_to_dict, map(lambda x: x.depends_on.get_equivalents_wpriority(prj)[0], queryset_all)) | ||
2205 | }), content_type = "application/json") | ||
2206 | 2193 | ||
2207 | 2194 | ||
2208 | # returns layer versions that would be deleted on the new release__pk | 2195 | # returns layer versions that would be deleted on the new release__pk |
@@ -2212,7 +2199,7 @@ if toastermain.settings.MANAGED: | |||
2212 | 2199 | ||
2213 | retval = [] | 2200 | retval = [] |
2214 | for i in prj.projectlayer_set.all(): | 2201 | for i in prj.projectlayer_set.all(): |
2215 | lv = _compatible_layerversions_for_project(prj, release = Release.objects.get(pk=request.GET['value'])) | 2202 | lv = prj.compatible_layerversions(release = Release.objects.get(pk=request.GET['value'])).filter(layer__name = i.layercommit.layer.name) |
2216 | # there is no layer_version with the new release id, and the same name | 2203 | # there is no layer_version with the new release id, and the same name |
2217 | if lv.count() < 1: | 2204 | if lv.count() < 1: |
2218 | retval.append(i) | 2205 | retval.append(i) |
@@ -2225,7 +2212,7 @@ if toastermain.settings.MANAGED: | |||
2225 | # returns targets provided by current project layers | 2212 | # returns targets provided by current project layers |
2226 | if request.GET['type'] == "targets": | 2213 | if request.GET['type'] == "targets": |
2227 | queryset_all = Recipe.objects.all() | 2214 | queryset_all = Recipe.objects.all() |
2228 | queryset_all = queryset_all.filter(layer_version__in = reduce(lambda x, y: list(x) + list(y), map(lambda x: x.layercommit.get_equivalents_wpriority(prj), prj.projectlayer_set.all()), [])) | 2215 | queryset_all = queryset_all.filter(layer_version__in = prj.projectlayer_equivalent_set()) |
2229 | return HttpResponse(jsonfilter({ "error":"ok", | 2216 | return HttpResponse(jsonfilter({ "error":"ok", |
2230 | "list" : map ( lambda x: {"id": x.pk, "name": x.name, "detail":"[" + x.layer_version.layer.name+ (" | " + x.layer_version.up_branch.name + "]" if x.layer_version.up_branch is not None else "]")}, | 2217 | "list" : map ( lambda x: {"id": x.pk, "name": x.name, "detail":"[" + x.layer_version.layer.name+ (" | " + x.layer_version.up_branch.name + "]" if x.layer_version.up_branch is not None else "]")}, |
2231 | queryset_all.filter(name__icontains=request.GET.get('value',''))[:8]), | 2218 | queryset_all.filter(name__icontains=request.GET.get('value',''))[:8]), |
@@ -2235,7 +2222,8 @@ if toastermain.settings.MANAGED: | |||
2235 | if request.GET['type'] == "machines": | 2222 | if request.GET['type'] == "machines": |
2236 | queryset_all = Machine.objects.all() | 2223 | queryset_all = Machine.objects.all() |
2237 | if 'project_id' in request.session: | 2224 | if 'project_id' in request.session: |
2238 | queryset_all = queryset_all.filter(layer_version__layer__in = map(lambda x: x.layercommit.layer, ProjectLayer.objects.filter(project_id=request.session['project_id']))) | 2225 | queryset_all = queryset_all.filter(layer_version__in = prj.projectlayer_equivalent_set()) |
2226 | |||
2239 | return HttpResponse(jsonfilter({ "error":"ok", | 2227 | return HttpResponse(jsonfilter({ "error":"ok", |
2240 | "list" : map ( lambda x: {"id": x.pk, "name": x.name, "detail":"[" + x.layer_version.layer.name+ (" | " + x.layer_version.up_branch.name + "]" if x.layer_version.up_branch is not None else "]")}, | 2228 | "list" : map ( lambda x: {"id": x.pk, "name": x.name, "detail":"[" + x.layer_version.layer.name+ (" | " + x.layer_version.up_branch.name + "]" if x.layer_version.up_branch is not None else "]")}, |
2241 | queryset_all.filter(name__icontains=request.GET.get('value',''))[:8]), | 2229 | queryset_all.filter(name__icontains=request.GET.get('value',''))[:8]), |
@@ -2283,14 +2271,13 @@ if toastermain.settings.MANAGED: | |||
2283 | 2271 | ||
2284 | prj = Project.objects.get(pk = request.session['project_id']) | 2272 | prj = Project.objects.get(pk = request.session['project_id']) |
2285 | 2273 | ||
2286 | queryset_all = _compatible_layerversions_for_project(prj) | 2274 | queryset_all = prj.compatible_layerversions() |
2287 | 2275 | ||
2288 | queryset_all = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name') | 2276 | queryset_all = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name') |
2289 | 2277 | ||
2290 | objects_all= list(set([x.get_equivalents_wpriority(prj)[0] for x in queryset_all[:pagesize]])) | ||
2291 | 2278 | ||
2292 | # retrieve the objects that will be displayed in the table; layers a paginator and gets a page range to display | 2279 | # retrieve the objects that will be displayed in the table; layers a paginator and gets a page range to display |
2293 | layer_info = _build_page_range(Paginator(objects_all, request.GET.get('count', 10)),request.GET.get('page', 1)) | 2280 | layer_info = _build_page_range(Paginator(queryset_all, request.GET.get('count', 10)),request.GET.get('page', 1)) |
2294 | 2281 | ||
2295 | 2282 | ||
2296 | context = { | 2283 | context = { |