mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
a7ab4d0314
commit
203ac2937c
@@ -203,7 +203,6 @@ def _get_search_results(search_term, queryset, model):
|
|||||||
|
|
||||||
search_objects.append(reduce(operator.or_, q_map))
|
search_objects.append(reduce(operator.or_, q_map))
|
||||||
search_object = reduce(operator.and_, search_objects)
|
search_object = reduce(operator.and_, search_objects)
|
||||||
print "search objects", search_object
|
|
||||||
queryset = queryset.filter(search_object)
|
queryset = queryset.filter(search_object)
|
||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
@@ -2788,18 +2787,25 @@ if toastermain.settings.MANAGED:
|
|||||||
(filter_string, search_term, ordering_string) = _search_tuple(request, Machine)
|
(filter_string, search_term, ordering_string) = _search_tuple(request, Machine)
|
||||||
|
|
||||||
queryset_all = Machine.objects.all()
|
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'])
|
prj = Project.objects.get(pk = request.session['project_id'])
|
||||||
compatible_layers = prj.compatible_layerversions()
|
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)
|
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)
|
project_layers = ProjectLayer.objects.filter(project_id=request.session['project_id']).values_list('layercommit',flat=True)
|
||||||
|
|
||||||
by_pass_filter_string = False
|
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
|
# by pass the usual filter applying method because we're filtering using
|
||||||
# a subquery done by project_layers
|
# a subquery done by project_layers
|
||||||
|
|
||||||
if "name:inprj" in filter_string:
|
if "name:inprj" in filter_string:
|
||||||
queryset_all = queryset_all.filter(layer_version__in=project_layers)
|
queryset_all = queryset_all.filter(layer_version__in=project_layers)
|
||||||
by_pass_filter_string = True
|
by_pass_filter_string = True
|
||||||
@@ -2808,20 +2814,25 @@ if toastermain.settings.MANAGED:
|
|||||||
queryset_all = queryset_all.exclude(layer_version__in=project_layers)
|
queryset_all = queryset_all.exclude(layer_version__in=project_layers)
|
||||||
by_pass_filter_string = True
|
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:
|
if by_pass_filter_string:
|
||||||
queryset = _get_queryset(Machine, queryset_all, None, search_term, ordering_string, '-name')
|
queryset = _get_queryset(Machine, queryset_all, None, search_term, ordering_string, '-name')
|
||||||
else:
|
else:
|
||||||
queryset = _get_queryset(Machine, queryset_all, filter_string, search_term, ordering_string, '-name')
|
queryset = _get_queryset(Machine, queryset_all, filter_string, search_term, ordering_string, '-name')
|
||||||
|
|
||||||
selected_filter_count = {
|
# Now we need to weed out the layers which will appear as duplicated
|
||||||
'inprj' : queryset.filter(layer_version__in=project_layers).count(),
|
# because they're from a layer source which doesn't need to be used
|
||||||
'notinprj' : queryset.exclude(layer_version__in=project_layers).count()
|
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))
|
machine_info = _build_page_range(Paginator(queryset, request.GET.get('count', 10)),request.GET.get('page', 1))
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
@@ -2854,7 +2865,7 @@ if toastermain.settings.MANAGED:
|
|||||||
'filter': {
|
'filter': {
|
||||||
'class': 'machine',
|
'class': 'machine',
|
||||||
'label': 'Show:',
|
'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',
|
{ 'name': 'Revision',
|
||||||
|
|||||||
Reference in New Issue
Block a user