From: Tomas Babej Date: Mon, 23 Mar 2015 05:57:29 +0000 (+0100) Subject: Task: Add stop method X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/commitdiff_plain/5ca9944bd0c33603dfc37d2e5f044cf03f77a2ea?hp=--cc Task: Add stop method --- 5ca9944bd0c33603dfc37d2e5f044cf03f77a2ea 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")