From 5ca9944bd0c33603dfc37d2e5f044cf03f77a2ea Mon Sep 17 00:00:00 2001 From: Tomas Babej Date: Mon, 23 Mar 2015 06:57:29 +0100 Subject: [PATCH] Task: Add stop method --- tasklib/task.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tasklib/task.py b/tasklib/task.py index bb53517..b3f59f0 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -416,6 +416,12 @@ class Task(TaskResource): """ pass + class InactiveTask(Exception): + """ + Raised when the operation cannot be performed on an inactive task. + """ + pass + class NotSaved(Exception): """ Raised when the operation cannot be performed on the task, because @@ -594,6 +600,21 @@ class Task(TaskResource): # Refresh the status again, so that we have updated info stored self.refresh(only_fields=['status', 'start']) + def stop(self): + if not self.saved: + raise Task.NotSaved("Task needs to be saved before it can be stopped") + + # Refresh, and raise exception if task is already completed/deleted + self.refresh(only_fields=['status']) + + if not self.active: + raise Task.InactiveTask("Cannot stop an inactive task") + + self.warrior.execute_command([self['uuid'], 'stop']) + + # Refresh the status again, so that we have updated info stored + self.refresh(only_fields=['status', 'start']) + def done(self): if not self.saved: raise Task.NotSaved("Task needs to be saved before it can be completed") -- 2.39.5