X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/fda5cf272018a0596c3ea97c9d4658cf0b5fa048..ff45f9122b3f1a441491d9bcb0d9681039baea38:/tasklib/task.py?ds=sidebyside diff --git a/tasklib/task.py b/tasklib/task.py index 081646d..d39c10c 100644 --- a/tasklib/task.py +++ b/tasklib/task.py @@ -54,7 +54,7 @@ class ReadOnlyDictView(object): class SerializingObject(object): """ - Common ancestor for TaskResource & TaskFilter, since they both + Common ancestor for TaskResource & TaskWarriorFilter, since they both need to serialize arguments. Serializing method should hold the following contract: @@ -549,33 +549,6 @@ class Task(TaskResource): return super(Task, self).serialize_depends(cur_dependencies) - def format_depends(self): - # We need to generate added and removed dependencies list, - # since Taskwarrior does not accept redefining dependencies. - - # This cannot be part of serialize_depends, since we need - # to keep a list of all depedencies in the _data dictionary, - # not just currently added/removed ones - - old_dependencies = self._original_data.get('depends', set()) - - added = self['depends'] - old_dependencies - removed = old_dependencies - self['depends'] - - # Removed dependencies need to be prefixed with '-' - return 'depends:' + ','.join( - [t['uuid'] for t in added] + - ['-' + t['uuid'] for t in removed] - ) - - 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 six.u("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") @@ -680,55 +653,6 @@ class Task(TaskResource): else: self._load_data(new_data) -class TaskFilter(SerializingObject): - """ - A set of parameters to filter the task list with. - """ - - def __init__(self, warrior, filter_params=None): - self.filter_params = filter_params or [] - super(TaskFilter, self).__init__(warrior) - - def add_filter(self, filter_str): - self.filter_params.append(filter_str) - - def add_filter_param(self, key, value): - key = key.replace('__', '.') - - # Replace the value with empty string, since that is the - # convention in TW for empty values - attribute_key = key.split('.')[0] - - # Since this is user input, we need to normalize before we serialize - value = self._normalize(attribute_key, value) - value = self._serialize(attribute_key, value) - - # If we are filtering by uuid:, do not use uuid keyword - # due to TW-1452 bug - if key == 'uuid': - self.filter_params.insert(0, value) - else: - # Surround value with aphostrophes unless it's a empty string - value = "'%s'" % value if value else '' - - # We enforce equality match by using 'is' (or 'none') modifier - # Without using this syntax, filter fails due to TW-1479 - # which is, however, fixed in 2.4.5 - if self.warrior.version < VERSION_2_4_5: - modifier = '.is' if value else '.none' - key = key + modifier if '.' not in key else key - - self.filter_params.append(six.u("{0}:{1}").format(key, value)) - - def get_filter_params(self): - return [f for f in self.filter_params if f] - - def clone(self): - c = self.__class__(self.warrior) - c.filter_params = list(self.filter_params) - return c - - class TaskQuerySet(object): """ Represents a lazy lookup for a task objects. @@ -737,7 +661,7 @@ class TaskQuerySet(object): def __init__(self, warrior=None, filter_obj=None): self.warrior = warrior self._result_cache = None - self.filter_obj = filter_obj or TaskFilter(warrior) + self.filter_obj = filter_obj or TaskWarriorFilter(warrior) def __deepcopy__(self, memo): """