From: Tomas Babej Date: Fri, 2 Jan 2015 07:59:52 +0000 (+0100) Subject: Task: Provide a generic framework for format_* methods X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/commitdiff_plain/8ab10fb242dc70b4e5e94f0f1b1e29f4e9d1a9a3?ds=inline;hp=-c Task: Provide a generic framework for format_* methods --- 8ab10fb242dc70b4e5e94f0f1b1e29f4e9d1a9a3 diff --git a/tasklib/task.py b/tasklib/task.py index 1bd3ce7..b884462 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -227,7 +227,7 @@ class Task(TaskResource): removed = old_dependencies - self['depends'] # Removed dependencies need to be prefixed with '-' - return ','.join( + return 'depends:' + ','.join( [t['uuid'] for t in added] + ['-' + t['uuid'] for t in removed] ) @@ -243,6 +243,14 @@ class Task(TaskResource): def serialize_tags(self, tags): return ','.join(tags) if tags else '' + def format_description(self): + # Task version older than 2.4.0 ignores first word of the + # task description if description: prefix is used + if self.warrior.version < VERSION_2_4_0: + return self._data['description'] + else: + return "description:{0}".format(self._data['description'] or '') + def delete(self): if not self.saved: raise Task.NotSaved("Task needs to be saved before it can be deleted") @@ -320,15 +328,12 @@ class Task(TaskResource): args = [] def add_field(field): - # Task version older than 2.4.0 ignores first word of the - # task description if description: prefix is used - if self.warrior.version < VERSION_2_4_0 and field == 'description': - args.append(self._data[field]) - elif field == 'depends': - args.append('{0}:{1}'.format(field, self.format_depends())) - else: - # Use empty string to substitute for None value - args.append('{0}:{1}'.format(field, self._data[field] or '')) + # Add the output of format_field method to args list (defaults to + # field:value) + format_default = lambda k: '{0}:{1}'.format(k, self._data[k] or '') + format_func = getattr(self, 'format_{0}'.format(field), + lambda: format_default(field)) + args.append(format_func()) # If we're modifying saved task, simply pass on all modified fields if self.saved: