diff options
Diffstat (limited to 'bitbake/lib/toaster/orm')
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 32 |
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 | """ |