X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/e111a723be6f1ba127e7840e6e5417e693167aba..a12e28c3cef94409801bea964ccc1e3db677a0cf:/tasklib/task.py 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")