bitbake: toaster: sort outcome and sstate columns by string value
authorDavid Reyna <David.Reyna@windriver.com>
Fri, 11 Apr 2014 04:43:11 +0000 (21:43 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 8 May 2014 15:18:12 +0000 (16:18 +0100)
Sort the 'outcome' and 'sstate_result' columns by their
description string values and not their numerical values.

[YOCTO #5921]

(Bitbake rev: eee0abe70e4d85a0753f0b122518d7a9f06181bc)

Signed-off-by: David Reyna <David.Reyna@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/toaster/orm/models.py
bitbake/lib/toaster/toastergui/views.py

index c344c66..22c66a9 100644 (file)
@@ -166,9 +166,18 @@ class Task(models.Model):
     def get_related_setscene(self):
         return Task.objects.related_setscene(self)
 
+    def get_outcome_text(self):
+        return Task.TASK_OUTCOME[self.outcome + 1][1]
+
     def get_outcome_help(self):
         return Task.TASK_OUTCOME_HELP[self.outcome][1]
 
+    def get_sstate_text(self):
+        if self.sstate_result==Task.SSTATE_NA:
+            return ''
+        else:
+            return Task.SSTATE_RESULT[self.sstate_result][1]
+
     def get_executed_display(self):
         if self.task_executed:
             return "Executed"
@@ -200,6 +209,9 @@ class Task(models.Model):
     message = models.CharField(max_length=240)
     logfile = models.FilePathField(max_length=255, blank=True)
 
+    outcome_text = property(get_outcome_text)
+    sstate_text  = property(get_sstate_text)
+
     class Meta:
         ordering = ('order', 'recipe' ,)
         unique_together = ('build', 'recipe', 'task_name', )
index 53be967..3d2ed4c 100644 (file)
@@ -853,7 +853,14 @@ def tasks_common(request, build_id, variant, task_anchor):
     (filter_string, search_term, ordering_string) = _search_tuple(request, Task)
     queryset_all = Task.objects.filter(build=build_id).exclude(order__isnull=True).exclude(outcome=Task.OUTCOME_NA)
     queryset_with_search = _get_queryset(Task, queryset_all, None , search_term, ordering_string, 'order')
-    queryset = _get_queryset(Task, queryset_all, filter_string, search_term, ordering_string, 'order')
+    if ordering_string.startswith('outcome'):
+        queryset = _get_queryset(Task, queryset_all, filter_string, search_term, 'order:+', 'order')
+        queryset = sorted(queryset, key=lambda ur: (ur.outcome_text), reverse=ordering_string.endswith('-'))
+    elif ordering_string.startswith('sstate_result'):
+        queryset = _get_queryset(Task, queryset_all, filter_string, search_term, 'order:+', 'order')
+        queryset = sorted(queryset, key=lambda ur: (ur.sstate_text), reverse=ordering_string.endswith('-'))
+    else:
+        queryset = _get_queryset(Task, queryset_all, filter_string, search_term, ordering_string, 'order')
 
        # compute the anchor's page
     if anchor: