diff options
author | Michael Wood <michael.g.wood@intel.com> | 2015-02-05 18:19:57 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-02-10 23:07:50 +0000 |
commit | 203ac2937c80b4e5960ea981971d9dbf4ddcd564 (patch) | |
tree | cac65aea48869ee85251dff597071afe1d9aabdf /bitbake/lib | |
parent | a7ab4d03148c4549a2c0c99a5424f04ccecdfcc6 (diff) | |
download | ast2050-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/lib')
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 33 |
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', |