From ac559ecd0a7784a52c06247e339291fce6843239 Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Thu, 25 Oct 2018 11:42:06 +0200
Subject: [PATCH] [experiments][models][blocks] Add helper for canceling and
 failure

---
 beat/web/experiments/models/block.py | 33 ++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/beat/web/experiments/models/block.py b/beat/web/experiments/models/block.py
index 38b48dbb4..9de128ce3 100755
--- a/beat/web/experiments/models/block.py
+++ b/beat/web/experiments/models/block.py
@@ -248,3 +248,36 @@ class Block(models.Model):
     def is_runnable(self):
         '''Checks if a block is runnable presently'''
         return all([ k.status == Block.DONE for k in self.dependencies.all() ])
+
+
+    def set_canceled(self, end_date=None):
+        """Update the block state to canceled
+
+        Parameters:
+            end_date (datetime): If provided sets the end_date otherwise
+            datetime.now() will be used.
+        """
+
+        self.status = Block.CANCELLED
+
+        if end_date is None:
+            end_date = datetime.now()
+
+        self.end_date = end_date
+
+        if self.start_date is None:
+            self.start_date = self.end_date
+
+        self.save()
+
+
+    def set_failed(self, end_date):
+        """Update the block state to failed
+
+        Parameters:
+            end_date (datetime): end date on failure
+        """
+
+        self.status = Block.FAILED
+        self.end_date = end_date
+        self.save()
-- 
GitLab