diff --git a/beat/web/experiments/models/block.py b/beat/web/experiments/models/block.py index 38b48dbb4d66b89bd8e4cc074abffe1985ee8f13..9de128ce3ebba812bf230743efd0457e5585e2eb 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()