diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py index 89785db43f2d45651dc932ba80d14e983c86c304..fa82ea352b830399d5c7722d9abe6fe095a74c2d 100644 --- a/beat/web/backend/models.py +++ b/beat/web/backend/models.py @@ -680,31 +680,35 @@ class Job(models.Model): if self.done(): return - split_statuses = self.splits.values_list('status', flat=True) + # If this process has a parent, then don't try to get split statuses + if not self.parent: - if self.start_date is None: - self.start_date = \ - self.splits.order_by('start_date').first().start_date + split_statuses = self.splits.values_list('status', flat=True) - # Process main status and status from job results - if Job.FAILED in split_statuses: - self.status = Job.FAILED + if self.start_date is None: + self.start_date = \ + self.splits.order_by('start_date').first().start_date - elif Job.CANCELLED in split_statuses: - self.status = Job.CANCELLED + # Process main status and status from job results + if Job.FAILED in split_statuses: + self.status = Job.FAILED - elif (Job.PROCESSING in split_statuses) or \ - (Job.QUEUED in split_statuses and Job.COMPLETED in split_statuses): - self.status = Job.PROCESSING + elif Job.CANCELLED in split_statuses: + self.status = Job.CANCELLED - elif all([s == Job.SKIPPED for s in split_statuses]): - self.status = Job.SKIPPED + elif (Job.PROCESSING in split_statuses) or \ + (Job.QUEUED in split_statuses and \ + Job.COMPLETED in split_statuses): + self.status = Job.PROCESSING - elif Job.QUEUED not in split_statuses: - self.status = Job.COMPLETED + elif all([s == Job.SKIPPED for s in split_statuses]): + self.status = Job.SKIPPED - else: - self.status = Job.QUEUED + elif Job.QUEUED not in split_statuses: + self.status = Job.COMPLETED + + else: + self.status = Job.QUEUED # if required, erase dangling files, update own results timings = None