X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/2699762f2a3d8a6d28fd7c59e3b05cef73442d40..72bbb2d0918a56833385938654cc575fbf5af735:/tasklib/task.py diff --git a/tasklib/task.py b/tasklib/task.py index d4fc9b2..7c6dff8 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -9,7 +9,7 @@ import six import sys import tzlocal -from backends import TaskWarrior +from backends import TaskWarrior, TaskWarriorException DATE_FORMAT = '%Y%m%dT%H%M%SZ' DATE_FORMAT_CALC = '%Y-%m-%dT%H:%M:%S' @@ -21,10 +21,6 @@ logger = logging.getLogger(__name__) local_zone = tzlocal.get_localzone() -class TaskWarriorException(Exception): - pass - - class ReadOnlyDictView(object): """ Provides simplified read-only view upon dict object. @@ -654,33 +650,8 @@ class Task(TaskResource): if self.saved and not self.modified: return - args = [self['uuid'], 'modify'] if self.saved else ['add'] - args.extend(self._get_modified_fields_as_args()) - output = self.warrior.execute_command(args) - - # Parse out the new ID, if the task is being added for the first time - if not self.saved: - id_lines = [l for l in output if l.startswith('Created task ')] - - # Complain loudly if it seems that more tasks were created - # Should not happen - if len(id_lines) != 1 or len(id_lines[0].split(' ')) != 3: - raise TaskWarriorException("Unexpected output when creating " - "task: %s" % '\n'.join(id_lines)) - - # Circumvent the ID storage, since ID is considered read-only - identifier = id_lines[0].split(' ')[2].rstrip('.') - - # Identifier can be either ID or UUID for completed tasks - try: - self._data['id'] = int(identifier) - except ValueError: - self._data['uuid'] = identifier - - # Refreshing is very important here, as not only modification time - # is updated, but arbitrary attribute may have changed due hooks - # altering the data before saving - self.refresh(after_save=True) + # All the actual work is done by the backend + self.backend.save_task(self) def add_annotation(self, annotation): if not self.saved: