[bitbake-devel,3/9] toaster: insure _get_query returns distinct records

Submitted by Alexandru DAMIAN on March 27, 2014, 4:49 p.m.


Message ID 4791f2886eebd5d9b4776cb66a4179710fbe2c7f.1395938903.git.alexandru.damian@intel.com
State New
Headers show

Commit Message

Alexandru DAMIAN March 27, 2014, 4:49 p.m.
From: David Reyna <David.Reyna@windriver.com>

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]

Signed-off-by: David Reyna <David.Reyna@windriver.com>
 lib/toaster/toastergui/views.py | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

Patch hide | download patch | download mbox

diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 4f31ddb..8f6e201 100644
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -192,7 +192,8 @@  def _get_queryset(model, queryset, filter_string, search_term, ordering_string):
             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)