From 67f34f27589a579cc6aff041c4118ed9df42c5b0 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Mon, 25 Apr 2016 21:15:05 +0200
Subject: [PATCH] [experiments] Re-use is_done() method from experiments

---
 beat/web/experiments/models.py | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/beat/web/experiments/models.py b/beat/web/experiments/models.py
index fe0f82252..dc02acc84 100644
--- a/beat/web/experiments/models.py
+++ b/beat/web/experiments/models.py
@@ -674,7 +674,7 @@ class Experiment(Shareable):
     def reset(self):
         """Resets an experiment so it can be run again"""
 
-        if not self.done(): return #can only reset experiments which are done
+        if not self.is_done(): return #can only reset experiments which are done
 
         self.blocks.update(
             status=Block.NOT_CACHED,
@@ -732,16 +732,10 @@ class Experiment(Shareable):
         return storage.get_file_content(self, 'declaration_file')
 
 
-    def done(self):
-        '''Says whether the experiment has finished or not'''
-
-        return self.status in (Experiment.DONE, Experiment.FAILED)
-
-
     def update_state(self):
         '''Update self state based on associated block states'''
 
-        if self.done(): return
+        if self.is_done(): return
 
         block_statuses = self.blocks.values_list('status', flat=True)
 
@@ -811,6 +805,17 @@ class Experiment(Shareable):
         for b in self.blocks.all(): b._cancel()
 
 
+    def fork(self, username=None, name=None):
+        '''Forks this experiment under a new username or name'''
+
+        author = username or self.author
+        name = name or self.name
+        xp, _, __ = Experiment.objects.create_experiment(author,
+            self.toolchain, name, self.get_declaration(),
+            self.short_description, self.description)
+        return xp
+
+
 #----------------------------------------------------------
 
 
-- 
GitLab