diff options
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index caacc2a544..2df6d4910a 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py @@ -592,22 +592,42 @@ class Build(models.Model): return target_labels - def get_current_status(self): - """ - get the status string from the build request if the build - has one, or the text for the build outcome if it doesn't - """ + def get_buildrequest(self): + buildrequest = None + if hasattr(self, 'buildrequest'): + buildrequest = self.buildrequest + return buildrequest + def is_queued(self): from bldcontrol.models import BuildRequest + buildrequest = self.get_buildrequest() + if buildrequest: + return buildrequest.state == BuildRequest.REQ_QUEUED + else: + return False - build_request = None - if hasattr(self, 'buildrequest'): - build_request = self.buildrequest + def is_cancelling(self): + from bldcontrol.models import BuildRequest + buildrequest = self.get_buildrequest() + if buildrequest: + return self.outcome == Build.IN_PROGRESS and \ + buildrequest.state == BuildRequest.REQ_CANCELLING + else: + return False - if (build_request - and build_request.state != BuildRequest.REQ_INPROGRESS - and self.outcome == Build.IN_PROGRESS): - return self.buildrequest.get_state_display() + def get_state(self): + """ + Get the state of the build; one of 'Succeeded', 'Failed', 'In Progress', + 'Cancelled' (Build outcomes); or 'Queued', 'Cancelling' (states + dependent on the BuildRequest state). + + This works around the fact that we have BuildRequest states as well + as Build states, but really we just want to know the state of the build. + """ + if self.is_cancelling(): + return 'Cancelling'; + elif self.is_queued(): + return 'Queued' else: return self.get_outcome_text() |