summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r--bitbake/lib/toaster/orm/models.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index b7975ef865..3dc4d6d891 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -447,6 +447,12 @@ class Build(models.Model):
447 return Build.BUILD_OUTCOME[int(self.outcome)][1] 447 return Build.BUILD_OUTCOME[int(self.outcome)][1]
448 448
449 @property 449 @property
450 def failed_tasks(self):
451 """ Get failed tasks for the build """
452 tasks = self.task_build.all()
453 return tasks.filter(order__gt=0, outcome=Task.OUTCOME_FAILED)
454
455 @property
450 def errors(self): 456 def errors(self):
451 return (self.logmessage_set.filter(level=LogMessage.ERROR) | 457 return (self.logmessage_set.filter(level=LogMessage.ERROR) |
452 self.logmessage_set.filter(level=LogMessage.EXCEPTION) | 458 self.logmessage_set.filter(level=LogMessage.EXCEPTION) |
@@ -457,8 +463,32 @@ class Build(models.Model):
457 return self.logmessage_set.filter(level=LogMessage.WARNING) 463 return self.logmessage_set.filter(level=LogMessage.WARNING)
458 464
459 @property 465 @property
466 def timespent(self):
467 return self.completed_on - self.started_on
468
469 @property
460 def timespent_seconds(self): 470 def timespent_seconds(self):
461 return (self.completed_on - self.started_on).total_seconds() 471 return self.timespent.total_seconds()
472
473 @property
474 def target_labels(self):
475 """
476 Sorted (a-z) "target1:task, target2, target3" etc. string for all
477 targets in this build
478 """
479 targets = self.target_set.all()
480 target_labels = []
481 target_label = None
482
483 for target in targets:
484 target_label = target.target
485 if target.task:
486 target_label = target_label + ':' + target.task
487 target_labels.append(target_label)
488
489 target_labels.sort()
490
491 return target_labels
462 492
463 def get_current_status(self): 493 def get_current_status(self):
464 """ 494 """