summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2015-02-05 18:19:57 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-02-10 23:07:50 +0000
commit203ac2937c80b4e5960ea981971d9dbf4ddcd564 (patch)
treecac65aea48869ee85251dff597071afe1d9aabdf /bitbake
parenta7ab4d03148c4549a2c0c99a5424f04ccecdfcc6 (diff)
downloadast2050-yocto-poky-203ac2937c80b4e5960ea981971d9dbf4ddcd564.zip
ast2050-yocto-poky-203ac2937c80b4e5960ea981971d9dbf4ddcd564.tar.gz
bitbake: toaster: all Machines exclude de-prioritised layer source items
If a duplicate layer exists from another layer source and provides a machine we don't want to show it if that layer comes from a low priority layer source. (Bitbake rev: ae52f478bbf693b85da21f64835e70825968a305) Signed-off-by: Michael Wood <michael.g.wood@intel.com Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py33
1 files changed, 22 insertions, 11 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 7dc4bbd..88d59f4 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -203,7 +203,6 @@ def _get_search_results(search_term, queryset, model):
search_objects.append(reduce(operator.or_, q_map))
search_object = reduce(operator.and_, search_objects)
- print "search objects", search_object
queryset = queryset.filter(search_object)
return queryset
@@ -2788,18 +2787,25 @@ if toastermain.settings.MANAGED:
(filter_string, search_term, ordering_string) = _search_tuple(request, Machine)
queryset_all = Machine.objects.all()
+ queryset_all = queryset_all.prefetch_related('layer_version')
+ queryset_all = queryset_all.prefetch_related('layer_source')
prj = Project.objects.get(pk = request.session['project_id'])
compatible_layers = prj.compatible_layerversions()
- # Make sure we only show machines / layers which are compatible with the current project
+
+ # FILTERS SECTION
+
+ # Make sure we only show machines / layers which are compatible
+ # with the current project
queryset_all = queryset_all.filter(layer_version__in=compatible_layers)
project_layers = ProjectLayer.objects.filter(project_id=request.session['project_id']).values_list('layercommit',flat=True)
by_pass_filter_string = False
- # "special" filters identified by these valid filter strings we
+ # "special" filters identified by these valid filter strings we
# by pass the usual filter applying method because we're filtering using
# a subquery done by project_layers
+
if "name:inprj" in filter_string:
queryset_all = queryset_all.filter(layer_version__in=project_layers)
by_pass_filter_string = True
@@ -2808,20 +2814,25 @@ if toastermain.settings.MANAGED:
queryset_all = queryset_all.exclude(layer_version__in=project_layers)
by_pass_filter_string = True
- queryset_with_search = _get_queryset(Machine, queryset_all, None, search_term, ordering_string, '-name')
+ selected_filter_count = {
+ 'inprj' : queryset_all.filter(layer_version__in=project_layers).count(),
+ 'notinprj' : queryset_all.exclude(layer_version__in=project_layers).count()
+ }
+
+ # END FILTERS
if by_pass_filter_string:
queryset = _get_queryset(Machine, queryset_all, None, search_term, ordering_string, '-name')
else:
queryset = _get_queryset(Machine, queryset_all, filter_string, search_term, ordering_string, '-name')
- selected_filter_count = {
- 'inprj' : queryset.filter(layer_version__in=project_layers).count(),
- 'notinprj' : queryset.exclude(layer_version__in=project_layers).count()
- }
-
+ # Now we need to weed out the layers which will appear as duplicated
+ # because they're from a layer source which doesn't need to be used
+ for machine in queryset:
+ to_rm = machine.layer_version.get_equivalents_wpriority(prj)[1:]
+ if len(to_rm) > 0:
+ queryset = queryset.exclude(layer_version__in=to_rm)
- # retrieve the objects that will be displayed in the table; machines a paginator and gets a page range to display
machine_info = _build_page_range(Paginator(queryset, request.GET.get('count', 10)),request.GET.get('page', 1))
context = {
@@ -2854,7 +2865,7 @@ if toastermain.settings.MANAGED:
'filter': {
'class': 'machine',
'label': 'Show:',
- '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()),
+ 'options': map(lambda x: (x.name, 'layer_source__pk:' + str(x.id), queryset.filter(layer_source__pk = x.id).count() ), LayerSource.objects.all()),
}
},
{ 'name': 'Revision',
OpenPOWER on IntegriCloud