bitbake: toaster: insure _get_query returns distinct records

The '_get_query' can return duplicate records if a search term appears
multiple times in the same row, so the queryset must be made
distinct before returning.
This commit also removes the initial special case for configvars in
favor of this general solution.

[YOCTO #6012]

(Bitbake rev: d21b64bad8a6a5e23eab552868d555f6e004f4c7)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
David Reyna
2014-03-24 21:32:08 -07:00
committed by Richard Purdie
parent 056fbc47c7
commit 7643ba3ea1

View File

@@ -192,7 +192,8 @@ def _get_queryset(model, queryset, filter_string, search_term, ordering_string):
else:
queryset = queryset.order_by(column)
return queryset
# insure only distinct records (e.g. from multiple search hits) are returned
return queryset.distinct()
# shows the "all builds" page
def builds(request):
@@ -1060,10 +1061,8 @@ def configvars(request, build_id):
return _redirect_parameters( 'configvars', request.GET, mandatory_parameters, build_id = build_id)
queryset = Variable.objects.filter(build=build_id).exclude(variable_name__istartswith='B_').exclude(variable_name__istartswith='do_')
queryset_with_search = _get_queryset(Variable, queryset, None, search_term, ordering_string).distinct().exclude(variable_value='',vhistory__file_name__isnull=True)
queryset_with_search = _get_queryset(Variable, queryset, None, search_term, ordering_string).exclude(variable_value='',vhistory__file_name__isnull=True)
queryset = _get_queryset(Variable, queryset, filter_string, search_term, ordering_string)
# remove duplicate records from multiple search hits in the VariableHistory table
queryset = queryset.distinct()
# remove records where the value is empty AND there are no history files
queryset = queryset.exclude(variable_value='',vhistory__file_name__isnull=True)