From a71e409753cb33d4f4c17e29dcf5fc14aee241da Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Mon, 25 Apr 2016 21:15:37 +0200
Subject: [PATCH] [backend] Fix to job updates with parent jobs

---
 beat/web/backend/models.py | 40 +++++++++++++++++++++-----------------
 1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py
index 89785db43..fa82ea352 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
-- 
GitLab