diff options
author | Elliot Smith <elliot.smith@intel.com> | 2016-01-15 13:00:49 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-01-15 16:29:59 +0000 |
commit | 294579b531d5a96a17aa863554e71f4680d35812 (patch) | |
tree | d42f10f98cb26d233860eec59cbdf0799d53ae28 /bitbake/lib/toaster/orm | |
parent | 6c12ca7f932d2fa06c2f2e2e6c98c76bb4d487d3 (diff) | |
download | poky-294579b531d5a96a17aa863554e71f4680d35812.tar.gz |
bitbake: toastergui: convert all builds page to ToasterTable
For better long-term maintainability, use ToasterTable instead
of Django template and view code to display the all builds page.
NB the builds.html template has been left in, as this will
otherwise cause conflicts when merging the new theme.
[YOCTO #8738]
(Bitbake rev: e0590fc8103afeb4c5e613a826057555c8193d59)
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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 | """ |